USING: html.templates html.templates.chloe tools.test io.streams.string kernel sequences ascii boxes namespaces xml html.components html.forms splitting unicode.categories furnace accessors html.templates.chloe.compiler ; IN: html.templates.chloe.tests : run-template 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