148 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Scheme
		
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Scheme
		
	
	
	
(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 }}|"
 | 
						|
                   "|=|"))
 | 
						|
 |