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? not ] filter "?>" split1 nip ; 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? not ] filter ] 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? not ] filter ] 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? not ] filter ] 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? not ] filter ] 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