USING: html.templates html.templates.chloe tools.test io.streams.string kernel sequences ascii boxes namespaces xml html.components html.forms splitting furnace accessors html.templates.chloe.compiler ; IN: html.templates.chloe.tests ! So that changes to code are reflected { } [ reset-cache ] unit-test : run-template ( quot -- string ) with-string-writer [ "\r\n\t" member? ] reject [ CHAR: \s = ] trim ; inline : test-template ( name -- template ) "vocab:html/templates/chloe/test/" prepend ; { "Hello world" } [ [ "test1" test-template call-template ] run-template ] unit-test { "Blah blah" "Hello world" } [ [ title set [ "test2" test-template call-template ] run-template title get box> ] with-scope ] unit-test { "Hello worldBlah blah" } [ [ [ "test2" test-template call-template ] "test3" test-template with-boilerplate ] run-template ] unit-test : test4-aux? ( -- ? ) t ; { "True" } [ [ "test4" test-template call-template ] run-template ] unit-test : test5-aux? ( -- ? ) f ; { "" } [ [ "test5" test-template call-template ] run-template ] unit-test { } [ begin-form ] unit-test { } [ "A label" "label" set-value ] unit-test SINGLETON: link-test M: link-test link-title drop "" ; M: link-test link-href drop "http://www.apple.com/foo&bar" ; { } [ link-test "link" set-value ] unit-test { } [ "int x = 5;" "code" set-value ] unit-test { } [ "c" "mode" set-value ] unit-test { } [ { 1 2 3 } "inspector" set-value ] unit-test { } [ "

a paragraph

" "html" set-value ] unit-test { } [ "sheeple" "field" set-value ] unit-test { } [ "a password" "password" set-value ] unit-test { } [ "a\nb\nc" "textarea" set-value ] unit-test { } [ "new york" "choice" set-value ] unit-test { } [ { "new york" "detroit" "minneapolis" } "choices" set-value ] unit-test { } [ [ "test8" test-template call-template ] run-template drop ] unit-test { } [ { 1 2 3 } "numbers" set-value ] unit-test { "" } [ [ "test7" test-template call-template ] run-template [ blank? ] reject ] unit-test TUPLE: person first-name last-name ; { } [ { T{ person f "RBaxter" "Unknown" } T{ person f "Doug" "Coleman" } } "people" set-value ] unit-test { "
RBaxterUnknown
DougColeman
" } [ [ "test8" test-template call-template ] run-template [ blank? ] reject ] unit-test { } [ { H{ { "first-name" "RBaxter" } { "last-name" "Unknown" } } H{ { "first-name" "Doug" } { "last-name" "Coleman" } } } "people" set-value ] unit-test { "
RBaxterUnknown
DougColeman
" } [ [ "test8" test-template call-template ] run-template [ blank? ] reject ] unit-test { } [ 1 "id" set-value ] unit-test { "Hello" } [ [ "test9" test-template call-template ] run-template ] unit-test { } [ H{ { "a" H{ { "b" "c" } } } } values set ] unit-test { "
" } [ [ "test10" test-template call-template ] run-template ] unit-test { } [ begin-form ] unit-test { } [
H{ { "first-name" "RBaxter" } { "last-name" "Unknown" } } >>values "person" set-value ] unit-test { "
RBaxterUnknown
" } [ [ "test11" test-template call-template ] run-template [ blank? ] reject ] unit-test { } [ begin-form { "a" "b" } "choices" set-value "true" "b" set-value ] unit-test { "ab" } [ [ "test12" test-template call-template ] run-template ] unit-test [ [ "test13" test-template call-template ] run-template ] [ error>> T{ unknown-chloe-tag f "this-tag-does-not-exist" } = ] must-fail-with { "Hello <world> &escaping test;" "Hello &escaping test;" } [ [ title set [ begin-form "&escaping test;" "a-value" set-value "test14" test-template call-template ] run-template title get box> ] with-scope ] unit-test [ [ title set [ "test15" test-template call-template ] run-template ] with-scope ] [ error>> tag-not-allowed-here? ] must-fail-with