mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-24 12:20:20 +02:00
add test suites
This commit is contained in:
parent
c55cb58ac1
commit
500f6a47e2
10 changed files with 2024 additions and 0 deletions
101
test-suite/tests/sxml.transform.test
Normal file
101
test-suite/tests/sxml.transform.test
Normal file
|
@ -0,0 +1,101 @@
|
|||
;; -*- scheme -*-
|
||||
;; guile-lib
|
||||
;; Copyright (C) 2004, 2009 Andy Wingo <wingo at pobox dot com>
|
||||
|
||||
;; This program is free software; you can redistribute it and/or
|
||||
;; modify it under the terms of the GNU General Public License as
|
||||
;; published by the Free Software Foundation; either version 2 of
|
||||
;; the License, or (at your option) any later version.
|
||||
;;
|
||||
;; This program is distributed in the hope that it will be useful,
|
||||
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;; GNU General Public License for more details.
|
||||
;;
|
||||
;; You should have received a copy of the GNU General Public License
|
||||
;; along with this program; if not, contact:
|
||||
;;
|
||||
;; Free Software Foundation Voice: +1-617-542-5942
|
||||
;; 59 Temple Place - Suite 330 Fax: +1-617-542-2652
|
||||
;; Boston, MA 02111-1307, USA gnu@gnu.org
|
||||
|
||||
;;; Commentary:
|
||||
;;
|
||||
;; Unit tests for (sxml transform).
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
(define-module (test-suite sxml-transform)
|
||||
#:use-module (test-suite lib)
|
||||
#:use-module (sxml transform))
|
||||
|
||||
(let* ((tree '(root (n1 (n11) "s12" (n13))
|
||||
"s2"
|
||||
(n2 (n21) "s22")
|
||||
(n3 (n31 (n311))
|
||||
"s32"
|
||||
(n33 (n331) "s332" (n333))
|
||||
"s34"))))
|
||||
(define (test pred-begin pred-end expected)
|
||||
(pass-if expected
|
||||
(equal? expected (car (replace-range pred-begin pred-end (list tree))))))
|
||||
|
||||
;; Remove one node, "s2"
|
||||
(test
|
||||
(lambda (node)
|
||||
(and (equal? node "s2") '()))
|
||||
(lambda (node) (list node))
|
||||
'(root (n1 (n11) "s12" (n13))
|
||||
(n2 (n21) "s22")
|
||||
(n3 (n31 (n311)) "s32" (n33 (n331) "s332" (n333)) "s34")))
|
||||
|
||||
;; Replace one node, "s2" with "s2-new"
|
||||
(test
|
||||
(lambda (node)
|
||||
(and (equal? node "s2") '("s2-new")))
|
||||
(lambda (node) (list node))
|
||||
'(root (n1 (n11) "s12" (n13))
|
||||
"s2-new"
|
||||
(n2 (n21) "s22")
|
||||
(n3 (n31 (n311)) "s32" (n33 (n331) "s332" (n333)) "s34")))
|
||||
|
||||
;; Replace one node, "s2" with "s2-new" and its brother (n-new "s")
|
||||
(test
|
||||
(lambda (node)
|
||||
(and (equal? node "s2") '("s2-new" (n-new "s"))))
|
||||
(lambda (node) (list node))
|
||||
'(root (n1 (n11) "s12" (n13))
|
||||
"s2-new" (n-new "s")
|
||||
(n2 (n21) "s22")
|
||||
(n3 (n31 (n311)) "s32" (n33 (n331) "s332" (n333)) "s34")))
|
||||
|
||||
;; Remove everything from "s2" onward
|
||||
(test
|
||||
(lambda (node)
|
||||
(and (equal? node "s2") '()))
|
||||
(lambda (node) #f)
|
||||
'(root (n1 (n11) "s12" (n13))))
|
||||
|
||||
;; Remove everything from "n1" onward
|
||||
(test
|
||||
(lambda (node)
|
||||
(and (pair? node) (eq? 'n1 (car node)) '()))
|
||||
(lambda (node) #f)
|
||||
'(root))
|
||||
|
||||
;; Replace from n1 through n33
|
||||
(test
|
||||
(lambda (node)
|
||||
(and (pair? node)
|
||||
(eq? 'n1 (car node))
|
||||
(list node '(n1* "s12*"))))
|
||||
(lambda (node)
|
||||
(and (pair? node)
|
||||
(eq? 'n33 (car node))
|
||||
(list node)))
|
||||
'(root
|
||||
(n1 (n11) "s12" (n13))
|
||||
(n1* "s12*")
|
||||
(n3
|
||||
(n33 (n331) "s332" (n333))
|
||||
"s34"))))
|
Loading…
Add table
Add a link
Reference in a new issue