(import (chibi) (chibi test) (chibi parse) (cook debug) (cook parse-internals)) (test-group "Amount" (test "with unit" (list 'amount 10 "l") (cook->list (parse amount "10%l"))) (test "without unit" (list 'amount 10 #f) (cook->list (parse amount "10")))) (test-group "Quantity" (test "integer" 10 (parse quantity "10")) (test "float" 10.1 (parse quantity "10.1")) (test "fraction" 1/10 (parse quantity "1/10"))) ;(define (test x y) ; (display "Testing: ") ; (display x) ; (display " == ") ; (display (cook->list y)) ; (newline)) ;(test 'NEWLINE (parse nl "\n\r\r\n")) ;(test 'WHITESPACE (parse whitespace " \t aaaa aaa ")) ;(test 'COMMENT (parse comment "-- aasf ljalsfkjalsfdjalsfd\n")) ; ;(test 'BLOCK-COMMENT ;; TODO: Check greediness ; (parse comment "[- aasfjal sfkjalsfdjalsfd\nashfajsdf\nsdfasf-]")) ; ;(test 'WORD (parse word "hola. adios")) ;(test 'UNIT (parse unit "l")) ;(test 'WORD-COMPONENT (parse-fully component "word{}")) ;(test 'WORD-COMPONENT (parse-fully component "word{9%head}")) ;(test 'WORD-COMPONENT (parse-fully component "word")) ;(test 'MULTI-WORD-COMPONENT (parse-fully component "un multi word{}")) ;(test 'MULTI-WORD-COMPONENT (parse-fully component "un multi word{10}")) ;(test 'MULTI-WORD-COMPONENT (parse-fully component "un multi word{10%l}")) ;(test 'MULTI-WORD-COMPONENT (parse-fully component "un multi word{80%mm}")) ;(test 'NO-NAME-TIMER (parse-fully timer "~{}")) ;(test 'MULTI-WORD-TIMER (parse-fully timer "~un multi word{10}")) ;(test 'MULTI-WORD-TIMER (parse-fully timer "~un multi word{10%l}")) ;(test 'MULTI-WORD-TIMER (parse-fully timer "~un multi word{80%mm}")) ;(test 'NO-NAME-TIMER (parse-fully timer "~{12%min}")) ;(test 'INGREDIENT (parse-fully ingredient "@potato{12%kg}")) ;(test 'STEP (parse-fully step "un poco de texto seguido de ~un multi word{10}")) ;(test 'RECIPE (parse recipe "this is a recipe with @coconut{1}\nAnd takes ~{2%min}\n")) ;(test 'RECIPE (parse recipe ">> some: metadata\nthis is a recipe with @coconut{1}\nAnd takes ~{2%min}\n"))