1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00

Add tests to verify that 'read' sets source properties when appropriate

* test-suite/tests/srcprop.test (source properties): Add tests.
This commit is contained in:
Mark H Weaver 2012-02-15 12:23:12 -05:00
parent 38f190749d
commit cac24946da

View file

@ -25,15 +25,51 @@
;;; ;;;
(with-test-prefix "source-properties" (with-test-prefix "source-properties"
(pass-if "no props" (pass-if "no props"
(null? (source-properties (list 1 2 3)))) (null? (source-properties (list 1 2 3))))
(read-enable 'positions) (read-enable 'positions)
(let ((s (read (open-input-string "(1 . 2)")))) (with-test-prefix "read properties"
(define (reads-with-srcprops? str)
(pass-if "read properties" (let ((x (read (open-input-string str))))
(not (null? (source-properties s)))))) (not (null? (source-properties x)))))
(pass-if "pairs" (reads-with-srcprops? "(1 . 2)"))
(pass-if "vectors" (reads-with-srcprops? "#(1 2 3)"))
(pass-if "bytevectors" (reads-with-srcprops? "#vu8(1 2 3)"))
(pass-if "bitvectors" (reads-with-srcprops? "#*101011"))
(pass-if "srfi4 vectors" (reads-with-srcprops? "#f64(3.1415 2.71)"))
(pass-if "arrays" (reads-with-srcprops? "#2u32@2@3((1 2) (2 3))"))
(pass-if "strings" (reads-with-srcprops? "\"hello\""))
(pass-if "null string" (reads-with-srcprops? "\"\""))
(pass-if "floats" (reads-with-srcprops? "3.1415"))
(pass-if "fractions" (reads-with-srcprops? "1/2"))
(pass-if "complex numbers" (reads-with-srcprops? "1+1i"))
(pass-if "bignums"
(and (reads-with-srcprops? (number->string (1+ most-positive-fixnum)))
(reads-with-srcprops? (number->string (1- most-negative-fixnum)))))
(pass-if "fixnums (should have none)"
(not (or (reads-with-srcprops? "0")
(reads-with-srcprops? "1")
(reads-with-srcprops? "-1")
(reads-with-srcprops? (number->string most-positive-fixnum))
(reads-with-srcprops? (number->string most-negative-fixnum)))))
(pass-if "symbols (should have none)"
(not (reads-with-srcprops? "foo")))
(pass-if "keywords (should have none)"
(not (reads-with-srcprops? "#:foo")))
(pass-if "characters (should have none)"
(not (reads-with-srcprops? "#\\c")))
(pass-if "booleans (should have none)"
(not (or (reads-with-srcprops? "#t")
(reads-with-srcprops? "#f"))))))
;;; ;;;
;;; set-source-property! ;;; set-source-property!