babashka/test-resources/lib_tests/clojure/data/json_test_suite_test.clj
2021-07-10 17:16:14 +02:00

393 lines
12 KiB
Clojure
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(ns clojure.data.json-test-suite-test
(:require [clojure.data.json :as json]
[clojure.test :refer :all]
[clojure.string :as str]))
(deftest i-number-double-huge-neg-exp-test
(is (= [0.0] (json/read-str "[123.456e-789]"))))
(deftest i-number-huge-exp-test
(is (= [##Inf]
(json/read-str "[0.4e00669999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999969999999006]"))))
(deftest i-number-neg-int-huge-exp-test
(is (= [##-Inf] (json/read-str "[-1e+9999]"))))
(deftest i-number-pos-double-huge-exp-test
(is (= [##Inf] (json/read-str "[1.5e+9999]"))))
(deftest i-number-real-neg-overflow-test
(is (= [##-Inf] (json/read-str "[-123123e100000]"))))
(deftest i-number-real-pos-overflow-test
(is (= [##Inf] (json/read-str "[123123e100000]"))))
(deftest i-number-real-underflow-test
(is (= [0.0] (json/read-str "[123e-10000000]"))))
(deftest i-number-too-big-neg-int-test
(is (= [-123123123123123123123123123123N]
(json/read-str "[-123123123123123123123123123123]"))))
(deftest i-number-too-big-pos-int-test
(is (= [100000000000000000000N] (json/read-str "[100000000000000000000]"))))
(deftest i-number-very-big-negative-int-test
(is (= [-237462374673276894279832749832423479823246327846N]
(json/read-str "[-237462374673276894279832749832423479823246327846]"))))
(deftest n-array-1-true-without-comma-test
(is (thrown? Exception (json/read-str "[1 true]"))))
(deftest n-array-colon-instead-of-comma-test
(is (thrown? Exception (json/read-str "[\"\": 1]"))))
(deftest n-array-comma-and-number-test
(is (thrown? Exception (json/read-str "[,1]"))))
(deftest n-array-double-comma-test
(is (thrown? Exception (json/read-str "[1,,2]"))))
(deftest n-array-double-extra-comma-test
(is (thrown? Exception (json/read-str "[\"x\",,]"))))
(deftest n-array-extra-comma-test
(is (thrown? Exception (json/read-str "[\"\",]"))))
(deftest n-array-incomplete-invalid-value-test
(is (thrown? Exception (json/read-str "[x"))))
(deftest n-array-incomplete-test
(is (thrown? Exception (json/read-str "[\"x\""))))
(deftest n-array-inner-array-no-comma-test
(is (thrown? Exception (json/read-str "[3[4]]"))))
(deftest n-array-items-separated-by-semicolon-test
(is (thrown? Exception (json/read-str "[1:2]"))))
(deftest n-array-just-comma-test
(is (thrown? Exception (json/read-str "[,]"))))
(deftest n-array-just-minus-test
(is (thrown? Exception (json/read-str "[-]"))))
(deftest n-array-missing-value-test
(is (thrown? Exception (json/read-str "[ , \"\"]"))))
(deftest n-array-newlines-unclosed-test
(is (thrown? Exception (json/read-str "[\"a\",\n4\n,1,"))))
(deftest n-array-number-and-comma-test
(is (thrown? Exception (json/read-str "[1,]"))))
(deftest n-array-number-and-several-commas-test
(is (thrown? Exception (json/read-str "[1,,]"))))
(deftest n-array-spaces-vertical-tab-formfeed-test
(is (thrown? Exception (json/read-str "[\" a\"\\f]"))))
(deftest n-array-star-inside-test
(is (thrown? Exception (json/read-str "[*]"))))
(deftest n-array-unclosed-test
(is (thrown? Exception (json/read-str "[\"\""))))
(deftest n-array-unclosed-trailing-comma-test
(is (thrown? Exception (json/read-str "[1,"))))
(deftest n-array-unclosed-with-new-lines-test
(is (thrown? Exception (json/read-str "[1,\n1\n,1"))))
(deftest n-array-unclosed-with-object-inside-test
(is (thrown? Exception (json/read-str "[{}"))))
(deftest n-number-++-test
(is (thrown? Exception (json/read-str "[++1234]"))))
(deftest n-number-+1-test
(is (thrown? Exception (json/read-str "[+1]"))))
(deftest n-number-+Inf-test
(is (thrown? Exception (json/read-str "[+Inf]"))))
(deftest n-number--01-test
(is (thrown? Exception (json/read-str "[-01]"))))
(deftest n-number--1.0.-test
(is (thrown? Exception (json/read-str "[-1.0.]"))))
(deftest n-number--2.-test
(is (thrown? Exception (json/read-str "[-2.]"))))
(deftest n-number--NaN-test
(is (thrown? Exception (json/read-str "[-NaN]"))))
(deftest n-number-.-1-test
(is (thrown? Exception (json/read-str "[.-1]"))))
(deftest n-number-.2e-3-test
(is (thrown? Exception (json/read-str "[.2e-3]"))))
(deftest n-number-0-capital-E+-test
(is (thrown? Exception (json/read-str "[0E+]"))))
(deftest n-number-0-capital-E-test
(is (thrown? Exception (json/read-str "[0E]"))))
(deftest n-number-0.1.2-test
(is (thrown? Exception (json/read-str "[0.1.2]"))))
(deftest n-number-0.3e+-test
(is (thrown? Exception (json/read-str "[0.3e+]"))))
(deftest n-number-0.3e-test
(is (thrown? Exception (json/read-str "[0.3e]"))))
(deftest n-number-0.e1-test
(is (thrown? Exception (json/read-str "[0.e1]"))))
(deftest n-number-0e+-test
(is (thrown? Exception (json/read-str "[0e+]"))))
(deftest n-number-0e-test
(is (thrown? Exception (json/read-str "[0e]"))))
(deftest n-number-1-000-test
(is (thrown? Exception (json/read-str "[1 000.0]"))))
(deftest n-number-1.0e+-test
(is (thrown? Exception (json/read-str "[1.0e+]"))))
(deftest n-number-1.0e--test
(is (thrown? Exception (json/read-str "[1.0e-]"))))
(deftest n-number-1.0e-test
(is (thrown? Exception (json/read-str "[1.0e]"))))
(deftest n-number-1eE2-test
(is (thrown? Exception (json/read-str "[1eE2]"))))
(deftest n-number-2.e+3-test
(is (thrown? Exception (json/read-str "[2.e+3]"))))
(deftest n-number-2.e-3-test
(is (thrown? Exception (json/read-str "[2.e-3]"))))
(deftest n-number-2.e3-test
(is (thrown? Exception (json/read-str "[2.e3]"))))
(deftest n-number-9.e+-test
(is (thrown? Exception (json/read-str "[9.e+]"))))
(deftest n-number-Inf-test
(is (thrown? Exception (json/read-str "[Inf]"))))
(deftest n-number-NaN-test
(is (thrown? Exception (json/read-str "[NaN]"))))
(deftest n-number-expression-test
(is (thrown? Exception (json/read-str "[1+2]"))))
(deftest n-number-hex-1-digit-test
(is (thrown? Exception (json/read-str "[0x1]"))))
(deftest n-number-hex-2-digits-test
(is (thrown? Exception (json/read-str "[0x42]"))))
(deftest n-number-infinity-test
(is (thrown? Exception (json/read-str "[Infinity]"))))
(deftest n-number-invalid+--test
(is (thrown? Exception (json/read-str "[0e+-1]"))))
(deftest n-number-invalid-negative-real-test
(is (thrown? Exception (json/read-str "[-123.123foo]"))))
(deftest n-number-minus-infinity-test
(is (thrown? Exception (json/read-str "[-Infinity]"))))
(deftest n-number-minus-sign-with-trailing-garbage-test
(is (thrown? Exception (json/read-str "[-foo]"))))
(deftest n-number-minus-space-1-test
(is (thrown? Exception (json/read-str "[- 1]"))))
(deftest n-number-neg-int-starting-with-zero-test
(is (thrown? Exception (json/read-str "[-012]"))))
(deftest n-number-neg-real-without-int-part-test
(is (thrown? Exception (json/read-str "[-.123]"))))
(deftest n-number-neg-with-garbage-at-end-test
(is (thrown? Exception (json/read-str "[-1x]"))))
(deftest n-number-real-garbage-after-e-test
(is (thrown? Exception (json/read-str "[1ea]"))))
(deftest n-number-real-without-fractional-part-test
(is (thrown? Exception (json/read-str "[1.]"))))
(deftest n-number-starting-with-dot-test
(is (thrown? Exception (json/read-str "[.123]"))))
(deftest n-number-with-alpha-char-test
(is (thrown? Exception (json/read-str "[1.8011670033376514H-308]"))))
(deftest n-number-with-alpha-test
(is (thrown? Exception (json/read-str "[1.2a-3]"))))
(deftest n-number-with-leading-zero-test
(is (thrown? Exception (json/read-str "[012]"))))
(deftest n-object-non-string-key-but-huge-number-instead-test
(is (thrown? Exception (json/read-str "{9999E9999:1}"))))
(deftest n-structure-array-with-unclosed-string-test
(is (thrown? Exception (json/read-str "[\"asd]"))))
(deftest n-structure-end-array-test
(is (thrown? Exception (json/read-str "]"))))
(deftest n-structure-number-with-trailing-garbage-test
(is (thrown? Exception (json/read-str "2@"))))
(deftest n-structure-open-array-apostrophe-test
(is (thrown? Exception (json/read-str "['"))))
(deftest n-structure-open-array-comma-test
(is (thrown? Exception (json/read-str "[,"))))
(deftest n-structure-open-array-open-object-test
(is (thrown? Exception (json/read-str "[{"))))
(deftest n-structure-open-array-open-string-test
(is (thrown? Exception (json/read-str "[\"a"))))
(deftest n-structure-open-array-string-test
(is (thrown? Exception (json/read-str "[\"a\""))))
(deftest n-structure-open-object-close-array-test
(is (thrown? Exception (json/read-str "{]"))))
(deftest n-structure-open-object-open-array-test
(is (thrown? Exception (json/read-str "{["))))
(deftest n-structure-unclosed-array-partial-null-test
(is (thrown? Exception (json/read-str "[ false, nul"))))
(deftest n-structure-unclosed-array-test
(is (thrown? Exception (json/read-str "[1"))))
(deftest n-structure-unclosed-array-unfinished-false-test
(is (thrown? Exception (json/read-str "[ true, fals"))))
(deftest n-structure-unclosed-array-unfinished-true-test
(is (thrown? Exception (json/read-str "[ false, tru"))))
(deftest y-array-arraysWithSpaces-test
(is (= [[]] (json/read-str "[[] ]"))))
(deftest y-array-empty-string-test
(is (= [""] (json/read-str "[\"\"]"))))
(deftest y-array-empty-test
(is (= [] (json/read-str "[]"))))
(deftest y-array-ending-with-newline-test
(is (= ["a"] (json/read-str "[\"a\"]"))))
(deftest y-array-false-test
(is (= [false] (json/read-str "[false]"))))
(deftest y-array-heterogeneous-test
(is (= [nil 1 "1" {}] (json/read-str "[null, 1, \"1\", {}]"))))
(deftest y-array-null-test
(is (= [nil] (json/read-str "[null]"))))
(deftest y-array-with-1-and-newline-test
(is (= [1] (json/read-str "[1\n]"))))
(deftest y-array-with-leading-space-test
(is (= [1] (json/read-str " [1]"))))
(deftest y-array-with-several-null-test
(is (= [1 nil nil nil 2] (json/read-str "[1,null,null,null,2]"))))
(deftest y-array-with-trailing-space-test
(is (= [2] (json/read-str "[2] "))))
(deftest y-number-0e+1-test
(is (= [0.0] (json/read-str "[0e+1]"))))
(deftest y-number-0e1-test
(is (= [0.0] (json/read-str "[0e1]"))))
(deftest y-number-after-space-test
(is (= [4] (json/read-str "[ 4]"))))
(deftest y-number-double-close-to-zero-test
(is (= [-1.0E-78]
(json/read-str "[-0.000000000000000000000000000000000000000000000000000000000000000000000000000001]"))))
(deftest y-number-int-with-exp-test
(is (= [200.0] (json/read-str "[20e1]"))))
(deftest y-number-minus-zero-test
(is (= [0] (json/read-str "[-0]"))))
(deftest y-number-negative-int-test
(is (= [-123] (json/read-str "[-123]"))))
(deftest y-number-negative-one-test
(is (= [-1] (json/read-str "[-1]"))))
(deftest y-number-negative-zero-test
(is (= [0] (json/read-str "[-0]"))))
(deftest y-number-real-capital-e-neg-exp-test
(is (= [0.01] (json/read-str "[1E-2]"))))
(deftest y-number-real-capital-e-pos-exp-test
(is (= [100.0] (json/read-str "[1E+2]"))))
(deftest y-number-real-capital-e-test
(is (= [1.0E22] (json/read-str "[1E22]"))))
(deftest y-number-real-exponent-test
(is (= [1.23E47] (json/read-str "[123e45]"))))
(deftest y-number-real-fraction-exponent-test
(is (= [1.23456E80] (json/read-str "[123.456e78]"))))
(deftest y-number-real-neg-exp-test
(is (= [0.01] (json/read-str "[1e-2]"))))
(deftest y-number-real-pos-exponent-test
(is (= [100.0] (json/read-str "[1e+2]"))))
(deftest y-number-simple-int-test
(is (= [123] (json/read-str "[123]"))))
(deftest y-number-simple-real-test
(is (= [123.456789] (json/read-str "[123.456789]"))))
(deftest y-number-test
(is (= [1.23E67] (json/read-str "[123e65]"))))
(deftest y-object-extreme-numbers-test
(is (= {"min" -1.0E28, "max" 1.0E28}
(json/read-str "{\"min\": -1.0e+28, \"max\": 1.0e+28}"))))
(deftest y-string-in-array-test
(is (= ["asd"] (json/read-str "[\"asd\"]"))))
(deftest y-string-in-array-with-leading-space-test
(is (= ["asd"] (json/read-str "[ \"asd\"]"))))
(deftest y-structure-true-in-array-test
(is (= [true] (json/read-str "[true]"))))
(deftest y-structure-whitespace-array-test
(is (= [] (json/read-str " [] "))))