Add json parser

This commit is contained in:
2025-01-29 11:37:18 -06:00
parent 1e3191340c
commit ec07a4e2ea
2 changed files with 104 additions and 0 deletions

View File

@@ -1,5 +1,6 @@
(use-modules (d-)
(d- test)
(d- json)
(srfi srfi-1))
(define-test-suite "~>"
@@ -100,3 +101,28 @@
(amb-require (or (= mary 4) (= betty 1)))
(list betty ethel joan kitty mary)))
(assert-equal '(3 5 2 1 4) (liars))))
(define-test-suite "json"
(define-test "boolean"
(assert-equal #t (json "true"))
(assert-equal #f (json "false")))
(define-test "number"
(assert-equal 1.1 (json "1.1"))
(assert-equal 0.1 (json ".1"))
(assert-equal 1.0 (json "1.")))
(define-test "string"
(assert-equal "hello" (json "\"hello\""))
(assert-equal "\\\"hello\\\"" (json "\"\\\"hello\\\"\"")))
(define-test "array"
(assert-equal '() (json "[]"))
(assert-equal '(1 "two" #f) (json "[1, \"two\", false]"))
(assert-equal '(() (())) (json "[[], [[]]]")))
(define-test "object"
(assert-equal '() (json "{}"))
(assert-equal '((cat . 1)
(bat . #t)
(rat . "yessir"))
(json "{\"cat\": 1, \"bat\": true, \"rat\": \"yessir\"}"))
(assert-equal '((butter . 1)
(brownie))
(json "{\"butter\": 1, \"brownie\": {}}"))))