Checked in the sources for this because it is tracked upstream in CVS and I can't be bothered to deal with that right now.
		
			
				
	
	
		
			86 lines
		
	
	
		
			No EOL
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Common Lisp
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			No EOL
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Common Lisp
		
	
	
	
	
	
;;;; -*- mode: lisp -*-
 | 
						|
;;;;
 | 
						|
;;;; $Id: test-xml.lisp,v 1.3 2005/11/06 12:44:48 scaekenberghe Exp $
 | 
						|
;;;;
 | 
						|
;;;; Unit and functional tests for xml.lisp
 | 
						|
;;;;
 | 
						|
;;;; Copyright (C) 2002, 2004 Sven Van Caekenberghe, Beta Nine BVBA.
 | 
						|
;;;;
 | 
						|
;;;; You are granted the rights to distribute and use this software
 | 
						|
;;;; as governed by the terms of the Lisp Lesser General Public License
 | 
						|
;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 | 
						|
 | 
						|
(in-package :s-xml)
 | 
						|
 | 
						|
(assert
 | 
						|
 (whitespace-char-p (character " ")))
 | 
						|
 | 
						|
(assert
 | 
						|
 (whitespace-char-p (character "	")))
 | 
						|
 | 
						|
(assert
 | 
						|
 (whitespace-char-p (code-char 10)))
 | 
						|
 | 
						|
(assert
 | 
						|
 (whitespace-char-p (code-char 13)))
 | 
						|
 | 
						|
(assert
 | 
						|
 (not (whitespace-char-p #\A)))
 | 
						|
 | 
						|
(assert
 | 
						|
 (char= (with-input-from-string (stream "  ABC")
 | 
						|
	  (skip-whitespace stream))
 | 
						|
	#\A))
 | 
						|
 | 
						|
(assert
 | 
						|
 (char= (with-input-from-string (stream "ABC")
 | 
						|
	  (skip-whitespace stream))
 | 
						|
	#\A))
 | 
						|
 | 
						|
(assert
 | 
						|
 (string-equal (with-output-to-string (stream) (print-string-xml "<foo>" stream))
 | 
						|
	       "<foo>"))
 | 
						|
 | 
						|
(assert
 | 
						|
 (string-equal (with-output-to-string (stream) (print-string-xml "' '" stream))
 | 
						|
               "' '"))
 | 
						|
 | 
						|
(assert
 | 
						|
 (let ((string (map 'string #'identity '(#\return #\tab #\newline))))
 | 
						|
   (string-equal (with-output-to-string (stream) (print-string-xml string stream))
 | 
						|
                 string)))
 | 
						|
 | 
						|
(defun simple-echo-xml (in out)
 | 
						|
  (start-parse-xml
 | 
						|
   in
 | 
						|
   (make-instance 'xml-parser-state
 | 
						|
		  :new-element-hook #'(lambda (name attributes seed)
 | 
						|
					(declare (ignore seed))
 | 
						|
					(format out "<~a~:{ ~a='~a'~}>"
 | 
						|
						name
 | 
						|
						(mapcar #'(lambda (p) (list (car p) (cdr p)))
 | 
						|
							(reverse attributes))))
 | 
						|
		  :finish-element-hook #'(lambda (name attributes parent-seed seed)
 | 
						|
					   (declare (ignore attributes parent-seed seed))
 | 
						|
					   (format out "</~a>" name))
 | 
						|
		  :text-hook #'(lambda (string seed)
 | 
						|
				 (declare (ignore seed))
 | 
						|
				 (princ string out)))))
 | 
						|
 | 
						|
(defun simple-echo-xml-string (string)
 | 
						|
  (with-input-from-string (in string)
 | 
						|
      (with-output-to-string (out)
 | 
						|
	(simple-echo-xml in out))))
 | 
						|
 | 
						|
(dolist (*ignore-namespaces* '(nil t)) 
 | 
						|
  (assert
 | 
						|
 (let ((xml "<FOO ATT1='1' ATT2='2'><B>Text</B><EMPTY></EMPTY>More text!<SUB><SUB></SUB></SUB></FOO>"))
 | 
						|
   (equal (simple-echo-xml-string xml)
 | 
						|
            xml))))
 | 
						|
 | 
						|
(assert 
 | 
						|
  (let ((xml "<p> </p>"))
 | 
						|
    (equal (simple-echo-xml-string xml)
 | 
						|
           xml)))
 | 
						|
 | 
						|
;;;; eof |