]> gitweb.factorcode.org Git - factor.git/blob - basis/html/templates/chloe/chloe-tests.factor
Merge branch 'master' of git://factorcode.org/git/factor
[factor.git] / basis / html / templates / chloe / chloe-tests.factor
1 USING: html.templates html.templates.chloe
2 tools.test io.streams.string kernel sequences ascii boxes
3 namespaces xml html.components html.forms
4 splitting unicode.categories furnace accessors ;
5 IN: html.templates.chloe.tests
6
7 : run-template
8     with-string-writer [ "\r\n\t" member? not ] filter
9     "?>" split1 nip ; inline
10
11 : test-template ( name -- template )
12     "resource:basis/html/templates/chloe/test/"
13     prepend <chloe> ;
14
15 [ "Hello world" ] [
16     [
17         "test1" test-template call-template
18     ] run-template
19 ] unit-test
20
21 [ "Blah blah" "Hello world" ] [
22     [
23         <box> title set
24         [
25             "test2" test-template call-template
26         ] run-template
27         title get box>
28     ] with-scope
29 ] unit-test
30
31 [ "<html><head><title>Hello world</title></head><body>Blah blah</body></html>" ] [
32     [
33         [
34             "test2" test-template call-template
35         ] "test3" test-template with-boilerplate
36     ] run-template
37 ] unit-test
38
39 : test4-aux? t ;
40
41 [ "True" ] [
42     [
43         "test4" test-template call-template
44     ] run-template
45 ] unit-test
46
47 : test5-aux? f ;
48
49 [ "" ] [
50     [
51         "test5" test-template call-template
52     ] run-template
53 ] unit-test
54
55 [ ] [ begin-form ] unit-test
56
57 [ ] [ "A label" "label" set-value ] unit-test
58
59 SINGLETON: link-test
60
61 M: link-test link-title drop "<Link Title>" ;
62
63 M: link-test link-href drop "http://www.apple.com/foo&bar" ;
64
65 [ ] [ link-test "link" set-value ] unit-test
66
67 [ ] [ "int x = 5;" "code" set-value ] unit-test
68
69 [ ] [ "c" "mode" set-value ] unit-test
70
71 [ ] [ { 1 2 3 } "inspector" set-value ] unit-test
72
73 [ ] [ "<p>a paragraph</p>" "html" set-value ] unit-test
74
75 [ ] [ "sheeple" "field" set-value ] unit-test
76
77 [ ] [ "a password" "password" set-value ] unit-test
78
79 [ ] [ "a\nb\nc" "textarea" set-value ] unit-test
80
81 [ ] [ "new york" "choice" set-value ] unit-test
82
83 [ ] [ { "new york" "detroit" "minneapolis" } "choices" set-value ] unit-test
84
85 [ ] [
86     [
87         "test8" test-template call-template
88     ] run-template drop
89 ] unit-test
90
91 [ ] [ { 1 2 3 } "numbers" set-value ] unit-test
92
93 [ "<ul><li>1</li><li>2</li><li>3</li></ul>" ] [
94     [
95         "test7" test-template call-template
96     ] run-template [ blank? not ] filter
97 ] unit-test
98
99 TUPLE: person first-name last-name ;
100
101 [ ] [
102     {
103         T{ person f "RBaxter" "Unknown" }
104         T{ person f "Doug" "Coleman" }
105     } "people" set-value
106 ] unit-test
107
108 [ "<table><tr><td>RBaxter</td><td>Unknown</td></tr><tr><td>Doug</td><td>Coleman</td></tr></table>" ] [
109     [
110         "test8" test-template call-template
111     ] run-template [ blank? not ] filter
112 ] unit-test
113
114 [ ] [
115     {
116         H{ { "first-name" "RBaxter" } { "last-name" "Unknown" } }
117         H{ { "first-name" "Doug"    } { "last-name" "Coleman" } }
118     } "people" set-value
119 ] unit-test
120
121 [ "<table><tr><td>RBaxter</td><td>Unknown</td></tr><tr><td>Doug</td><td>Coleman</td></tr></table>" ] [
122     [
123         "test8" test-template call-template
124     ] run-template [ blank? not ] filter
125 ] unit-test
126
127 [ ] [ 1 "id" set-value ] unit-test
128
129 [ "<a name=\"1\">Hello</a>" ] [
130     [
131         "test9" test-template call-template
132     ] run-template
133 ] unit-test
134
135 [ ] [ H{ { "a" H{ { "b" "c" } } } } values set ] unit-test
136
137 [ "<form method='post' action='foo'><input type='hidden' name='__n' value='a'/></form>" ] [
138     [
139         "test10" test-template call-template
140     ] run-template
141 ] unit-test
142
143 [ ] [ begin-form ] unit-test
144
145 [ ] [
146     <form> H{ { "first-name" "RBaxter" } { "last-name" "Unknown" } } >>values "person" set-value
147 ] unit-test
148
149 [ "<table><tr><td>RBaxter</td><td>Unknown</td></tr></table>" ] [
150     [
151         "test11" test-template call-template
152     ] run-template [ blank? not ] filter
153 ] unit-test
154
155 [ ] [
156     begin-form
157     { "a" "b" } "choices" set-value
158     "true" "b" set-value
159 ] unit-test
160
161 [ "<input type='checkbox' name='a'>a</input><input type='checkbox' name='b' checked='true'>b</input>" ] [
162     [
163         "test12" test-template call-template
164     ] run-template
165 ] unit-test