(import (chibi) (chibi test) (chibi parse) (cook debug) (cook parse-internals)) (test "Amount with unit" (list 'amount "10" "l") (cook->list (parse amount "10%l"))) (test "Amount without unit" (list 'amount "10" #f) (cook->list (parse amount "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 'QUANTITY (parse quantity "10")) ;(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"))