r7rs-tests/snow/arvyy/mustache-test/inverted.scm

148 lines
4.6 KiB
Scheme
Raw Normal View History

2024-10-05 04:55:06 -04:00
(define (run-tests/inverted)
(test-mustache "Falsey"
'((boolean . #f))
"\"{{^boolean}}This should be rendered.{{/boolean}}\""
"\"This should be rendered.\"")
(test-mustache "Truthy"
'((boolean . #t))
"\"{{^boolean}}This should not be rendered.{{/boolean}}\""
"\"\"")
;; "Null is falsey" test is skipped; no meaningful value for null
(test-mustache "Context"
'((context . ((name . "Joe"))))
"\"{{^context}}Hi {{name}}.{{/context}}\""
"\"\"")
(test-mustache "List"
'(list . #(((n . 1))
((n . 2))
((n . 3))))
"\"{{^list}}{{n}}{{/list}}\""
"\"\"")
(test-mustache "Empty List"
'(list . #())
"\"{{^list}}Yay lists!{{/list}}\""
"\"Yay lists!\"")
(test-mustache "Doubled"
'((bool . #f) (two . "second"))
"
{{^bool}}
* first
{{/bool}}
* {{two}}
{{^bool}}
* third
{{/bool}}
"
"
* first
* second
* third
")
(test-mustache "Nested (Falsey)"
'((bool . #f))
"| A {{^bool}}B {{^bool}}C{{/bool}} D{{/bool}} E |"
"| A B C D E |")
(test-mustache "Nested (Truthy)"
'((bool . #t))
"| A {{^bool}}B {{^bool}}C{{/bool}} D{{/bool}} E |"
"| A E |")
(test-mustache "Context Misses"
'(())
"[{{^missing}}Cannot find key 'missing'!{{/missing}}]"
"[Cannot find key 'missing'!]")
(test-mustache "Dotted Names - Truthy"
'((a . ((b . ((c . #t))))))
"\"{{^a.b.c}}Not Here{{/a.b.c}}\" == \"\""
"\"\" == \"\"")
(test-mustache "Dotted Names - Falsey"
'((a . ((b . ((c . #f))))))
"\"{{^a.b.c}}Not Here{{/a.b.c}}\" == \"Not Here\""
"\"Not Here\" == \"Not Here\"")
(test-mustache "Dotted Names - Broken Chains"
'((a . ()))
"\"{{^a.b.c}}Not Here{{/a.b.c}}\" == \"Not Here\""
"\"Not Here\" == \"Not Here\"")
(test-mustache "Surrounding Whitespace"
'((boolean . #f))
" | {{^boolean}}\t|\t{{/boolean}} | \n"
" | \t|\t | \n")
(test-mustache "Internal Whitespace"
'((boolean . #f))
" | {{^boolean}} {{! Important Whitespace }}\n {{/boolean}} | \n"
" | \n | \n")
(test-mustache "Indented Inline Sections"
'((boolean . #f))
" {{^boolean}}NO{{/boolean}}\n {{^boolean}}WAY{{/boolean}}\n"
" NO\n WAY\n")
(test-mustache "Standalone Lines"
'((boolean . #f))
"
|
| This Is
{{^boolean}}
|
{{/boolean}}
| A Line
"
"
|
| This Is
|
| A Line
")
(test-mustache "Standalone Indented Lines"
'((boolean . #f))
"
|
| This Is
{{^boolean}}
|
{{/boolean}}
| A Line
"
"
|
| This Is
|
| A Line
")
(test-mustache "Standalone Line Endings"
'((boolean . #f))
"|\r\n{{^boolean}}\r\n{{/boolean}}\r\n|"
"|\r\n|")
(test-mustache "Standalone Without Previous Line"
'((boolean . #f))
" {{^boolean}}\n^{{/boolean}}\n/"
"^\n/")
(test-mustache "Standalone Without Newline"
'((boolean . #f))
"^{{^boolean}}\n/\n {{/boolean}}"
"^\n/\n")
(test-mustache "Padding"
'((boolean . #f))
"|{{^ boolean }}={{/ boolean }}|"
"|=|"))