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