200 lines
7.3 KiB
Scheme
200 lines
7.3 KiB
Scheme
|
(define (run-tests/interpolation)
|
||
|
|
||
|
(test-mustache "No Interpolation"
|
||
|
'()
|
||
|
"Hello from {Mustache}!"
|
||
|
"Hello from {Mustache}!")
|
||
|
|
||
|
(test-mustache "Basic Interpolation"
|
||
|
'((subject . "world"))
|
||
|
"Hello, {{subject}}!"
|
||
|
"Hello, world!")
|
||
|
|
||
|
(test-mustache "HTML Escaping"
|
||
|
'((forbidden . "& \" < >"))
|
||
|
"These characters should be HTML escaped: {{forbidden}}"
|
||
|
"These characters should be HTML escaped: & " < >")
|
||
|
|
||
|
(test-mustache "Triple Mustache"
|
||
|
'((forbidden . "& \" < >"))
|
||
|
"These characters should not be HTML escaped: {{{forbidden}}}"
|
||
|
"These characters should not be HTML escaped: & \" < >")
|
||
|
|
||
|
(test-mustache "Ampersand"
|
||
|
'((forbidden . "& \" < >"))
|
||
|
"These characters should not be HTML escaped: {{&forbidden}}"
|
||
|
"These characters should not be HTML escaped: & \" < >")
|
||
|
|
||
|
(test-mustache "Basic Integer Interpolation"
|
||
|
'((mph . 85))
|
||
|
"\"{{mph}} miles an hour!\""
|
||
|
"\"85 miles an hour!\"")
|
||
|
|
||
|
(test-mustache "Triple Mustache Integer Interpolation"
|
||
|
'((mph . 85))
|
||
|
"\"{{{mph}}} miles an hour!\""
|
||
|
"\"85 miles an hour!\"")
|
||
|
|
||
|
(test-mustache "Ampersand Mustache Integer Interpolation"
|
||
|
'((mph . 85))
|
||
|
"\"{{&mph}} miles an hour!\""
|
||
|
"\"85 miles an hour!\"")
|
||
|
|
||
|
(test-mustache "Basic Decimal Interpolation"
|
||
|
'((power . 1.210))
|
||
|
"\"{{power}} jiggawatts!\""
|
||
|
"\"1.21 jiggawatts!\"")
|
||
|
|
||
|
(test-mustache "Triple Mustache Decimal Interpolation"
|
||
|
'((power . 1.210))
|
||
|
"\"{{{power}}} jiggawatts!\""
|
||
|
"\"1.21 jiggawatts!\"")
|
||
|
|
||
|
(test-mustache "Ampersand Mustache Decimal Interpolation"
|
||
|
'((power . 1.210))
|
||
|
"\"{{&power}} jiggawatts!\""
|
||
|
"\"1.21 jiggawatts!\"")
|
||
|
|
||
|
(test-mustache "Basic Null Interpolation"
|
||
|
'((cannot . #f))
|
||
|
"I ({{cannot}}) be seen!"
|
||
|
"I () be seen!")
|
||
|
|
||
|
(test-mustache "Triple Mustache Null Interpolation"
|
||
|
'((cannot . #f))
|
||
|
"I ({{{cannot}}}) be seen!"
|
||
|
"I () be seen!")
|
||
|
|
||
|
(test-mustache "Ampersand Null Interpolation"
|
||
|
'((cannot . #f))
|
||
|
"I ({{&cannot}}) be seen!"
|
||
|
"I () be seen!")
|
||
|
|
||
|
(test-mustache "Basic Context Miss Interpolation"
|
||
|
'()
|
||
|
"I ({{cannot}}) be seen!"
|
||
|
"I () be seen!")
|
||
|
|
||
|
(test-mustache "Triple Mustache Context Miss Interpolation"
|
||
|
'()
|
||
|
"I ({{{cannot}}}) be seen!"
|
||
|
"I () be seen!")
|
||
|
|
||
|
(test-mustache "Ampersand Context Miss Interpolation"
|
||
|
'()
|
||
|
"I ({{&cannot}}) be seen!"
|
||
|
"I () be seen!")
|
||
|
|
||
|
(test-mustache "Dotted Names - Basic Interpolation"
|
||
|
'((person . ((name . "Joe"))))
|
||
|
"\"{{person.name}}\" == \"{{#person}}{{name}}{{/person}}\""
|
||
|
"\"Joe\" == \"Joe\"")
|
||
|
|
||
|
(test-mustache "Dotted Names - Triple Mustache Interpolation"
|
||
|
'((person . ((name . "Joe"))))
|
||
|
"\"{{{person.name}}}\" == \"{{#person}}{{{name}}}{{/person}}\""
|
||
|
"\"Joe\" == \"Joe\"")
|
||
|
|
||
|
(test-mustache "Dotted Names - Ampersand Interpolation"
|
||
|
'((person . ((name . "Joe"))))
|
||
|
"\"{{&person.name}}\" == \"{{#person}}{{&name}}{{/person}}\""
|
||
|
"\"Joe\" == \"Joe\"")
|
||
|
|
||
|
(test-mustache "Dotted Names - Arbitrary Depth"
|
||
|
'((a . ((b . ((c . ((d . ((e . ((name . "Phil"))))))))))))
|
||
|
"\"{{a.b.c.d.e.name}}\" == \"Phil\""
|
||
|
"\"Phil\" == \"Phil\"")
|
||
|
|
||
|
(test-mustache "Dotted Names - Broken Chains"
|
||
|
'((a . ()))
|
||
|
"\"{{a.b.c}}\" == \"\""
|
||
|
"\"\" == \"\"")
|
||
|
|
||
|
(test-mustache "Dotted Names - Broken Chain Resolution"
|
||
|
'((a . ((b . ())))
|
||
|
(c . ((name . "Jim"))))
|
||
|
"\"{{a.b.c.name}}\" == \"\""
|
||
|
"\"\" == \"\"")
|
||
|
|
||
|
(test-mustache "Dotted Names - Initial Resolution"
|
||
|
'((a . ((b . ((c . ((d . ((e . ((name . "Phil")))))))))))
|
||
|
(b . ((c . ((d . ((e . ((name . "Wrong"))))))))))
|
||
|
"\"{{#a}}{{b.c.d.e.name}}{{/a}}\" == \"Phil\""
|
||
|
"\"Phil\" == \"Phil\"")
|
||
|
|
||
|
(test-mustache "Dotted Names - Context Precedence"
|
||
|
'((a . ((b . ())))
|
||
|
(b . ((c . "ERROR"))))
|
||
|
"{{#a}}{{b.c}}{{/a}}"
|
||
|
"")
|
||
|
|
||
|
(test-mustache "Implicit Iterators - Basic Interpolation"
|
||
|
"world"
|
||
|
"Hello, {{.}}!"
|
||
|
"Hello, world!")
|
||
|
|
||
|
(test-mustache "Implicit Iterators - HTML Escaping"
|
||
|
"& \" < >"
|
||
|
"These characters should be HTML escaped: {{.}}"
|
||
|
"These characters should be HTML escaped: & " < >")
|
||
|
|
||
|
(test-mustache "Implicit Iterators - Triple Mustache"
|
||
|
"& \" < >"
|
||
|
"These characters should not be HTML escaped: {{{.}}}"
|
||
|
"These characters should not be HTML escaped: & \" < >")
|
||
|
|
||
|
(test-mustache "Implicit Iterators - Ampersand"
|
||
|
"& \" < >"
|
||
|
"These characters should not be HTML escaped: {{&.}}"
|
||
|
"These characters should not be HTML escaped: & \" < >")
|
||
|
|
||
|
(test-mustache "Implicit Iterators - Basic Integer Interpolation"
|
||
|
85
|
||
|
"\"{{.}} miles an hour!\""
|
||
|
"\"85 miles an hour!\"")
|
||
|
|
||
|
(test-mustache "Interpolation - Surrounding Whitespace"
|
||
|
'((string . "---"))
|
||
|
"| {{string}} |"
|
||
|
"| --- |")
|
||
|
|
||
|
(test-mustache "Triple Mustache - Surrounding Whitespace"
|
||
|
'((string . "---"))
|
||
|
"| {{{string}}} |"
|
||
|
"| --- |")
|
||
|
|
||
|
(test-mustache "Ampersand - Surrounding Whitespace"
|
||
|
'((string . "---"))
|
||
|
"| {{&string}} |"
|
||
|
"| --- |")
|
||
|
|
||
|
(test-mustache "Interpolation - Standalone"
|
||
|
'((string . "---"))
|
||
|
" {{string}}\n"
|
||
|
" ---\n")
|
||
|
|
||
|
(test-mustache "Triple Mustache - Standalone"
|
||
|
'((string . "---"))
|
||
|
" {{{string}}}\n"
|
||
|
" ---\n")
|
||
|
|
||
|
(test-mustache "Ampersand - Standalone"
|
||
|
'((string . "---"))
|
||
|
" {{&string}}\n"
|
||
|
" ---\n")
|
||
|
|
||
|
(test-mustache "Interpolation With Padding"
|
||
|
'((string . "---"))
|
||
|
"|{{ string }}|"
|
||
|
"|---|")
|
||
|
|
||
|
(test-mustache "Triple Mustache With Padding"
|
||
|
'((string . "---"))
|
||
|
"|{{{ string }}}|"
|
||
|
"|---|")
|
||
|
|
||
|
(test-mustache "Ampersand With Padding"
|
||
|
'((string . "---"))
|
||
|
"|{{& string }}|"
|
||
|
"|---|"))
|