2a63b94b |
(defpackage :edn-test
(:use :cl :st)
(:export ))
(in-package :edn-test)
|
ee000f9c |
(defun float-equal (a b)
|
66132900 |
(and (typep a (type-of b))
(typep b (type-of a))
(> 0.00001
(abs (- a b)))))
|
ee000f9c |
(deftest floating ()
(should be float-equal
|
66132900 |
0.1d0
(edn:read-edn "0.1")
)
|
ee000f9c |
(should be float-equal
|
66132900 |
0.1d0
|
ee000f9c |
(edn:read-edn "+0.1"))
(should be float-equal
|
66132900 |
-0.1d0
|
ee000f9c |
(edn:read-edn "-0.1"))
(should be float-equal
|
66132900 |
1d0
|
ee000f9c |
(edn:read-edn "0.1e1"))
(should be float-equal
|
66132900 |
1d0
|
ee000f9c |
(edn:read-edn "0.1e+1"))
(should be float-equal
|
66132900 |
0.01d0
|
ee000f9c |
(edn:read-edn "0.1e-1"))
(should be float-equal
|
66132900 |
-0.01d0
|
ee000f9c |
(edn:read-edn "-0.1e-1"))
|
74868e98 |
(should be float-equal
0d0
(edn:read-edn "0M"))
|
ee000f9c |
(should be float-equal
|
66132900 |
-0.01d0
|
ee000f9c |
(edn:read-edn "-0.1e-1M"))
(should be float-equal
|
66132900 |
-0.0d0
|
ee000f9c |
(edn:read-edn "-0.e-1M")))
|
2a63b94b |
(deftest edn-parser ()
(should be equal
|
ee000f9c |
'(:list)
(edn:read-edn (format nil "()~%")))
(should be equal
'(:map (:pair 1 1))
(edn:read-edn "{ 1 1 }"))
|
2a63b94b |
(should be equal
|
ee000f9c |
'(:vector 1 1)
(edn:read-edn "[ 1 1 ]"))
|
2a63b94b |
(should be equal
|
ee000f9c |
'(:set 1 1)
(edn:read-edn "#{ 1 1 }"))
|
2a63b94b |
(should be equal
|
ee000f9c |
'(:tagged (:symbol nil "foobar") (:vector 1 1))
(edn:read-edn "#foobar [ 1 1 ]"))
|
2a63b94b |
(should be equal
'(:list
(:set
(:vector
(:map (:pair edn-primitives:nil edn-primitives:true)
(:pair edn-primitives:false edn-primitives:nil)))))
|
ee000f9c |
(edn:read-edn "(#{[{nil true,false nil}]})")))
|
74868e98 |
(deftest maps ()
(should be equal
'(:map (:pair 1 2))
(edn:read-edn "{1 2 }"))
(should be equal
'(:map (:pair 1 2))
(edn:read-edn "{ 1 2}"))
(should be equal
'(:map (:pair 1 2))
(edn:read-edn "{1 2}"))
(should be equal
'(:map (:pair 1 2))
(edn:read-edn "{ 1 2 }"))
(should be equal
'(:map (:pair 1 2))
(edn:read-edn "{ 1 2 }")))
(deftest translate-escape ()
(flet ((translates-to (in out)
(should be eql
out
(edn::translate-escape in))))
(translates-to #\" #\")
(translates-to #\\ #\\)
(translates-to #\b (code-char 8))
(translates-to #\f (code-char 12))
(translates-to #\n (code-char 10))
(translates-to #\r (code-char 13))
(translates-to #\t (code-char 9))))
(deftest .string-ending ()
(should be equal
"foobar"
""
(smug:parse (edn::.string-ending) "foobar\""))
(should be equal
"foobar"
"asdf"
(smug:parse (edn::.string-ending) "foobar\"asdf"))
(should be equal
"foobar\"qwer"
"asdf"
(smug:parse (edn::.string-ending) "foobar\\\"qwer\"asdf"))
(should be equal
(format nil "foobar~%qwer")
"asdf"
(smug:parse (edn::.string-ending) "foobar\\nqwer\"asdf")))
|
942890c4 |
(deftest smoke ()
(should be =
0
(loop repeat 0
for res = (edn:read-edn (edn.generate:generate-edn))
unless res sum 1)))
|