htmlgrid 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. data/History.txt +6 -0
  2. data/LICENCE.txt +515 -0
  3. data/Manifest.txt +82 -0
  4. data/README.txt +30 -0
  5. data/Rakefile +28 -0
  6. data/ext/htmlgrid/MANIFEST +3 -0
  7. data/ext/htmlgrid/Makefile +150 -0
  8. data/ext/htmlgrid/extconf.rb +33 -0
  9. data/ext/htmlgrid/grid.c +881 -0
  10. data/ext/htmlgrid/grid.o +0 -0
  11. data/ext/htmlgrid/htmlgrid.c +30 -0
  12. data/ext/htmlgrid/htmlgrid.o +0 -0
  13. data/ext/htmlgrid/htmlgrid.so +0 -0
  14. data/ext/htmlgrid/include/grid.h +79 -0
  15. data/ext/htmlgrid/include/htmlgrid.h +33 -0
  16. data/install.rb +1098 -0
  17. data/lib/htmlgrid/booleanvalue.rb +41 -0
  18. data/lib/htmlgrid/button.rb +36 -0
  19. data/lib/htmlgrid/centeredcomposite.rb +47 -0
  20. data/lib/htmlgrid/component.rb +232 -0
  21. data/lib/htmlgrid/composite.rb +350 -0
  22. data/lib/htmlgrid/datevalue.rb +39 -0
  23. data/lib/htmlgrid/div.rb +37 -0
  24. data/lib/htmlgrid/divcomposite.rb +52 -0
  25. data/lib/htmlgrid/divform.rb +35 -0
  26. data/lib/htmlgrid/divlist.rb +26 -0
  27. data/lib/htmlgrid/divtemplate.rb +12 -0
  28. data/lib/htmlgrid/dojotoolkit.rb +173 -0
  29. data/lib/htmlgrid/errormessage.rb +70 -0
  30. data/lib/htmlgrid/form.rb +93 -0
  31. data/lib/htmlgrid/formlist.rb +42 -0
  32. data/lib/htmlgrid/grid.rb +286 -0
  33. data/lib/htmlgrid/image.rb +43 -0
  34. data/lib/htmlgrid/infomessage.rb +41 -0
  35. data/lib/htmlgrid/input.rb +59 -0
  36. data/lib/htmlgrid/inputcheckbox.rb +41 -0
  37. data/lib/htmlgrid/inputcurrency.rb +36 -0
  38. data/lib/htmlgrid/inputdate.rb +38 -0
  39. data/lib/htmlgrid/inputfile.rb +40 -0
  40. data/lib/htmlgrid/inputradio.rb +37 -0
  41. data/lib/htmlgrid/inputtext.rb +37 -0
  42. data/lib/htmlgrid/javascript.rb +22 -0
  43. data/lib/htmlgrid/label.rb +90 -0
  44. data/lib/htmlgrid/labeltext.rb +35 -0
  45. data/lib/htmlgrid/link.rb +54 -0
  46. data/lib/htmlgrid/list.rb +170 -0
  47. data/lib/htmlgrid/namedcomponent.rb +52 -0
  48. data/lib/htmlgrid/pass.rb +38 -0
  49. data/lib/htmlgrid/passthru.rb +44 -0
  50. data/lib/htmlgrid/popuplink.rb +66 -0
  51. data/lib/htmlgrid/reset.rb +36 -0
  52. data/lib/htmlgrid/richtext.rb +26 -0
  53. data/lib/htmlgrid/select.rb +53 -0
  54. data/lib/htmlgrid/span.rb +37 -0
  55. data/lib/htmlgrid/spancomposite.rb +45 -0
  56. data/lib/htmlgrid/spanlist.rb +15 -0
  57. data/lib/htmlgrid/staticinput.rb +40 -0
  58. data/lib/htmlgrid/submit.rb +36 -0
  59. data/lib/htmlgrid/template.rb +130 -0
  60. data/lib/htmlgrid/text.rb +36 -0
  61. data/lib/htmlgrid/textarea.rb +49 -0
  62. data/lib/htmlgrid/ulcomposite.rb +49 -0
  63. data/lib/htmlgrid/ullist.rb +15 -0
  64. data/lib/htmlgrid/urllink.rb +65 -0
  65. data/lib/htmlgrid/value.rb +36 -0
  66. data/test/rebuild.rb +39 -0
  67. data/test/stub/cgi.rb +44 -0
  68. data/test/suite.rb +32 -0
  69. data/test/test_component.rb +138 -0
  70. data/test/test_composite.rb +201 -0
  71. data/test/test_datevalue.rb +60 -0
  72. data/test/test_form.rb +123 -0
  73. data/test/test_formlist.rb +111 -0
  74. data/test/test_grid.rb +395 -0
  75. data/test/test_input.rb +70 -0
  76. data/test/test_label.rb +116 -0
  77. data/test/test_list.rb +146 -0
  78. data/test/test_select.rb +78 -0
  79. data/test/test_template.rb +97 -0
  80. data/test/test_text.rb +63 -0
  81. data/usage-en.txt +112 -0
  82. data/widget/Tooltip.js +85 -0
  83. metadata +180 -0
data/test/test_grid.rb ADDED
@@ -0,0 +1,395 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # HtmlGrid -- HyperTextMarkupLanguage Framework
4
+ # Copyright (C) 2003 ywesee - intellectual capital connected
5
+ # Andreas Schrafl, Benjamin Fay, Hannes Wyss, Markus Huggler
6
+ #
7
+ # This library is free software; you can redistribute it and/or
8
+ # modify it under the terms of the GNU Lesser General Public
9
+ # License as published by the Free Software Foundation; either
10
+ # version 2.1 of the License, or (at your option) any later version.
11
+ #
12
+ # This library is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
+ # Lesser General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Lesser General Public
18
+ # License along with this library; if not, write to the Free Software
19
+ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
+ #
21
+ # ywesee - intellectual capital connected, Winterthurerstrasse 52, CH-8006 Zuerich, Switzerland
22
+ # htmlgrid@ywesee.com, www.ywesee.com/htmlgrid
23
+ #
24
+ # TestGrid -- htmlgrid -- hwyss@ywesee.com
25
+
26
+ $: << File.expand_path("../lib", File.dirname(__FILE__))
27
+ $: << File.expand_path("../ext", File.dirname(__FILE__))
28
+ $: << File.dirname(__FILE__)
29
+
30
+ require 'test/unit'
31
+ require 'rebuild'
32
+ require 'stub/cgi'
33
+ require 'htmlgrid/label'
34
+ require 'htmlgrid/grid'
35
+
36
+ module HtmlGrid
37
+ class Grid
38
+ class Row
39
+ class Field
40
+ attr_reader :attributes
41
+ end
42
+ end
43
+ end
44
+ end
45
+
46
+ class TestGrid < Test::Unit::TestCase
47
+ class StubLabel
48
+ include Enumerable
49
+ def each
50
+ yield "foo"
51
+ yield "bar"
52
+ end
53
+ def to_html(cgi)
54
+ "foo"
55
+ end
56
+ end
57
+ class StubGridComponent
58
+ attr_reader :attributes
59
+ def initialize
60
+ @attributes = {"class" => "foo"}
61
+ end
62
+ def to_html(context)
63
+ "bar"
64
+ end
65
+ def set_attribute(key, value)
66
+ @attributes.store(key, value)
67
+ end
68
+ end
69
+ class StubNilComponent
70
+ attr_reader :attributes
71
+ def initialize
72
+ @attributes = {}
73
+ end
74
+ def to_html(context)
75
+ nil
76
+ end
77
+ end
78
+ def setup
79
+ @grid = HtmlGrid::Grid.new
80
+ end
81
+ def test_initialize
82
+ assert_equal(1, @grid.width)
83
+ assert_equal(1, @grid.height)
84
+ expected = '<TABLE cellspacing="0"><TR><TD>&nbsp;</TD></TR></TABLE>'
85
+ assert_equal(expected, @grid.to_html(CGI.new))
86
+ end
87
+ def test_add
88
+ @grid.add("test", 0, 0)
89
+ assert_equal(1, @grid.width)
90
+ assert_equal(1, @grid.height)
91
+ expected = '<TABLE cellspacing="0"><TR><TD>test</TD></TR></TABLE>'
92
+ assert_equal(expected, @grid.to_html(CGI.new))
93
+ end
94
+ def test_add2
95
+ @grid.add(nil, 0, 0)
96
+ @grid.add(nil, 0, 0)
97
+ assert_equal(1, @grid.width)
98
+ assert_equal(1, @grid.height)
99
+ expected = '<TABLE cellspacing="0"><TR><TD>&nbsp;</TD></TR></TABLE>'
100
+ assert_equal(expected, @grid.to_html(CGI.new))
101
+ end
102
+ def test_add3
103
+ @grid.add(2, 0, 0)
104
+ assert_equal(1, @grid.width)
105
+ assert_equal(1, @grid.height)
106
+ expected = '<TABLE cellspacing="0"><TR><TD>2</TD></TR></TABLE>'
107
+ assert_equal(expected, @grid.to_html(CGI.new))
108
+ end
109
+ def test_add_field
110
+ @grid.add_field("test", 0, 0)
111
+ assert_equal(1, @grid.width)
112
+ assert_equal(1, @grid.height)
113
+ expected = '<TABLE cellspacing="0"><TR><TD>test</TD></TR></TABLE>'
114
+ assert_equal(expected, @grid.to_html(CGI.new))
115
+ end
116
+ def test_add_multiple
117
+ @grid.add("test", 0, 0)
118
+ assert_equal(1, @grid.width)
119
+ assert_equal(1, @grid.height)
120
+ @grid.add("foo", 0, 0)
121
+ assert_equal(1, @grid.width)
122
+ assert_equal(1, @grid.height)
123
+ expected = '<TABLE cellspacing="0"><TR><TD>testfoo</TD></TR></TABLE>'
124
+ assert_equal(expected, @grid.to_html(CGI.new))
125
+ end
126
+ def test_add_multiple__2
127
+ @grid.add(["test", "foo"], 0, 0)
128
+ assert_equal(1, @grid.width)
129
+ assert_equal(1, @grid.height)
130
+ expected = '<TABLE cellspacing="0"><TR><TD>testfoo</TD></TR></TABLE>'
131
+ assert_equal(expected, @grid.to_html(CGI.new))
132
+ end
133
+ def test_add_multiple__3
134
+ @grid.add(["test", nil, "foo"], 0, 0)
135
+ assert_equal(2, @grid.width)
136
+ assert_equal(1, @grid.height)
137
+ expected = '<TABLE cellspacing="0"><TR><TD>test</TD><TD>foo</TD></TR></TABLE>'
138
+ assert_equal(expected, @grid.to_html(CGI.new))
139
+ end
140
+ def test_add_fieldx
141
+ @grid.add("test", 1, 0)
142
+ assert_equal(2, @grid.width)
143
+ assert_equal(1, @grid.height)
144
+ expected = '<TABLE cellspacing="0"><TR><TD>&nbsp;</TD><TD>test</TD></TR></TABLE>'
145
+ assert_equal(expected, @grid.to_html(CGI.new))
146
+ end
147
+ def test_add_fieldy
148
+ @grid.add("test", 0, 1)
149
+ assert_equal(1, @grid.width)
150
+ assert_equal(2, @grid.height)
151
+ expected = '<TABLE cellspacing="0"><TR><TD>&nbsp;</TD></TR><TR><TD>test</TD></TR></TABLE>'
152
+ assert_equal(expected, @grid.to_html(CGI.new))
153
+ end
154
+ def test_add_fieldxy
155
+ @grid.add("test", 1, 1)
156
+ assert_equal(2, @grid.width)
157
+ assert_equal(2, @grid.height)
158
+ expected = '<TABLE cellspacing="0"><TR><TD>&nbsp;</TD><TD>&nbsp;</TD></TR><TR><TD>&nbsp;</TD><TD>test</TD></TR></TABLE>'
159
+ assert_equal(expected, @grid.to_html(CGI.new))
160
+ end
161
+ def test_add_fieldyx
162
+ @grid.add("test", 0, 1)
163
+ @grid.add("test", 1, 0)
164
+ assert_equal(2, @grid.width)
165
+ assert_equal(2, @grid.height)
166
+ expected = '<TABLE cellspacing="0"><TR><TD>&nbsp;</TD><TD>test</TD></TR><TR><TD>test</TD><TD>&nbsp;</TD></TR></TABLE>'
167
+ assert_equal(expected, @grid.to_html(CGI.new))
168
+
169
+ end
170
+ def test_add_row1
171
+ @grid.add_row(["test1", "test2"], 0,0)
172
+ assert_equal(2, @grid.width)
173
+ assert_equal(1, @grid.height)
174
+ expected = '<TABLE cellspacing="0"><TR><TD>test1</TD><TD>test2</TD></TR></TABLE>'
175
+ assert_equal(expected, @grid.to_html(CGI.new))
176
+ end
177
+ def test_add_row2
178
+ @grid.add_row(["test1", "test2"], 0,1)
179
+ assert_equal(2, @grid.width)
180
+ assert_equal(2, @grid.height)
181
+ expected = '<TABLE cellspacing="0"><TR><TD>&nbsp;</TD><TD>&nbsp;</TD></TR><TR><TD>test1</TD><TD>test2</TD></TR></TABLE>'
182
+ assert_equal(expected, @grid.to_html(CGI.new))
183
+ end
184
+ def test_add_row3
185
+ @grid.add_row(["test1", "test2"], 1,0)
186
+ assert_equal(3, @grid.width)
187
+ assert_equal(1, @grid.height)
188
+ expected = '<TABLE cellspacing="0"><TR><TD>&nbsp;</TD><TD>test1</TD><TD>test2</TD></TR></TABLE>'
189
+ assert_equal(expected, @grid.to_html(CGI.new))
190
+ end
191
+ def test_add_column1
192
+ @grid.add_column(["test1", "test2"], 0,0)
193
+ assert_equal(1, @grid.width)
194
+ assert_equal(2, @grid.height)
195
+ expected = '<TABLE cellspacing="0"><TR><TD>test1</TD></TR><TR><TD>test2</TD></TR></TABLE>'
196
+ assert_equal(expected, @grid.to_html(CGI.new))
197
+ end
198
+ def test_add_column2
199
+ @grid.add_column(["test1", "test2"], 0,1)
200
+ assert_equal(1, @grid.width)
201
+ assert_equal(3, @grid.height)
202
+ expected = '<TABLE cellspacing="0"><TR><TD>&nbsp;</TD></TR><TR><TD>test1</TD></TR><TR><TD>test2</TD></TR></TABLE>'
203
+ assert_equal(expected, @grid.to_html(CGI.new))
204
+ end
205
+ def test_add_column3
206
+ @grid.add_column(["test1", "test2"], 1,0)
207
+ assert_equal(2, @grid.width)
208
+ assert_equal(2, @grid.height)
209
+ expected = '<TABLE cellspacing="0"><TR><TD>&nbsp;</TD><TD>test1</TD></TR><TR><TD>&nbsp;</TD><TD>test2</TD></TR></TABLE>'
210
+ assert_equal(expected, @grid.to_html(CGI.new))
211
+ end
212
+ def test_add_tag1
213
+ @grid.add_tag('TH', 0, 0)
214
+ expected = '<TABLE cellspacing="0"><TR><TH>&nbsp;</TH></TR></TABLE>'
215
+ assert_equal(expected, @grid.to_html(CGI.new))
216
+ end
217
+ def test_add_tag2
218
+ @grid.add_tag('TH', 0, 0, 2)
219
+ expected = '<TABLE cellspacing="0"><TR><TH>&nbsp;</TH><TH>&nbsp;</TH></TR></TABLE>'
220
+ assert_equal(expected, @grid.to_html(CGI.new))
221
+ end
222
+ def test_add_tag3
223
+ @grid.add_tag('TH', 0, 0, 1, 2)
224
+ expected = '<TABLE cellspacing="0"><TR><TH>&nbsp;</TH></TR><TR><TH>&nbsp;</TH></TR></TABLE>'
225
+ assert_equal(expected, @grid.to_html(CGI.new))
226
+ end
227
+ def test_add_component_style
228
+ thing = StubGridComponent.new
229
+ @grid.add(thing, 1,1)
230
+ @grid.add_component_style('foobar', 0,0,2,2)
231
+ assert_equal('foobar', thing.attributes['class'])
232
+ end
233
+ def test_add_style
234
+ @grid.add_style('foo', 0,0)
235
+ expected = '<TABLE cellspacing="0"><TR><TD class="foo">&nbsp;</TD></TR></TABLE>'
236
+ assert_equal(expected, @grid.to_html(CGI.new))
237
+ @grid.add(nil, 1,1)
238
+ @grid.add_style('bar', 0, 1, 2)
239
+ expected = '<TABLE cellspacing="0"><TR><TD class="foo">&nbsp;</TD>'
240
+ expected << '<TD>&nbsp;</TD></TR><TR><TD class="bar">&nbsp;</TD>'
241
+ expected << '<TD class="bar">&nbsp;</TD></TR></TABLE>'
242
+ assert_equal(expected, @grid.to_html(CGI.new))
243
+ @grid.add_style('foobar', 0,0,2,2)
244
+ expected = '<TABLE cellspacing="0"><TR><TD class="foobar">&nbsp;</TD>'
245
+ expected << '<TD class="foobar">&nbsp;</TD></TR>'
246
+ expected << '<TR><TD class="foobar">&nbsp;</TD>'
247
+ expected << '<TD class="foobar">&nbsp;</TD></TR></TABLE>'
248
+ assert_equal(expected, @grid.to_html(CGI.new))
249
+ end
250
+ def test_add_attribute
251
+ @grid.add_attribute('foo', 'bar', 0, 0)
252
+ expected = '<TABLE cellspacing="0"><TR><TD foo="bar">&nbsp;</TD></TR></TABLE>'
253
+ assert_equal(expected, @grid.to_html(CGI.new))
254
+ end
255
+ def test_set_colspan1
256
+ assert_nothing_raised { @grid.set_colspan(1,1,2) }
257
+ expected = '<TABLE cellspacing="0"><TR><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR><TR><TD>&nbsp;</TD><TD colspan="2">&nbsp;</TD></TR></TABLE>'
258
+ assert_equal(expected, @grid.to_html(CGI.new))
259
+ end
260
+ def test_set_colspan2
261
+ @grid.add("test", 2, 2)
262
+ assert_nothing_raised { @grid.set_colspan(0,0) }
263
+ expected = '<TABLE cellspacing="0"><TR><TD colspan="3">&nbsp;</TD></TR><TR><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD></TR><TR><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>test</TD></TR></TABLE>'
264
+ assert_equal(expected, @grid.to_html(CGI.new))
265
+ assert_nothing_raised { @grid.set_colspan(1,1) }
266
+ expected = '<TABLE cellspacing="0"><TR><TD colspan="3">&nbsp;</TD></TR><TR><TD>&nbsp;</TD><TD colspan="2">&nbsp;</TD></TR><TR><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>test</TD></TR></TABLE>'
267
+ assert_equal(expected, @grid.to_html(CGI.new))
268
+ end
269
+ def test_push
270
+ @grid.add("bar",4,0)
271
+ @grid.push("foo")
272
+ expected = '<TABLE cellspacing="0"><TR><TD>&nbsp;</TD><TD>&nbsp;</TD>'
273
+ expected << '<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>bar</TD></TR>'
274
+ expected << '<TR><TD colspan="5">foo</TD></TR></TABLE>'
275
+ assert_equal(expected, @grid.to_html(CGI.new))
276
+ end
277
+ def test_matrix
278
+ matrix = [1,1]
279
+ assert_nothing_raised {
280
+ @grid.add("test", *matrix)
281
+ }
282
+ expected = '<TABLE cellspacing="0"><TR><TD>&nbsp;</TD><TD>&nbsp;</TD></TR><TR><TD>&nbsp;</TD><TD>test</TD></TR></TABLE>'
283
+ assert_equal(expected, @grid.to_html(CGI.new))
284
+ end
285
+ def test_attributes
286
+ ### this test has changed behavior: its not desirable to have magically
287
+ ### transferred css information from a component to its container
288
+ @grid.add(StubGridComponent.new, 0,0)
289
+ expected = '<TABLE cellspacing="0"><TR><TD>bar</TD></TR></TABLE>'
290
+ assert_equal(expected, @grid.to_html(CGI.new))
291
+ end
292
+ def test_set_attribute1
293
+ @grid.set_attribute("foo", "bar")
294
+ expected = '<TABLE cellspacing="0" foo="bar"><TR><TD>&nbsp;</TD></TR></TABLE>'
295
+ assert_equal(expected, @grid.to_html(CGI.new))
296
+ end
297
+ def test_set_attribute2
298
+ @grid.set_attribute("foo", nil)
299
+ expected = '<TABLE cellspacing="0"><TR><TD>&nbsp;</TD></TR></TABLE>'
300
+ assert_equal(expected, @grid.to_html(CGI.new))
301
+ end
302
+ def test_set_attributes
303
+ hash = {"foo"=>"bar", "baz"=>"bash"}
304
+ @grid.set_attributes(hash)
305
+ expected = [
306
+ '<TABLE cellspacing="0" foo="bar" baz="bash"><TR><TD>&nbsp;</TD></TR></TABLE>',
307
+ '<TABLE cellspacing="0" baz="bash" foo="bar"><TR><TD>&nbsp;</TD></TR></TABLE>',
308
+ ]
309
+ result = @grid.to_html(CGI.new)
310
+ assert_equal(true, expected.include?(result), result)
311
+ end
312
+ def test_set_row_attributes1
313
+ @grid.set_row_attributes({'foo' => 'bar'}, 0)
314
+ expected = '<TABLE cellspacing="0"><TR foo="bar"><TD>&nbsp;</TD></TR></TABLE>'
315
+ assert_equal(expected, @grid.to_html(CGI.new))
316
+ end
317
+ def test_set_row_attributes2
318
+ @grid.set_row_attributes({'foo' => 'bar'}, 1)
319
+ expected = '<TABLE cellspacing="0"><TR><TD>&nbsp;</TD></TR><TR foo="bar"><TD>&nbsp;</TD></TR></TABLE>'
320
+ assert_equal(expected, @grid.to_html(CGI.new))
321
+ end
322
+ def test_set_row_attributes3
323
+ @grid.set_row_attributes({'foo' => 'bar'}, 1, 2)
324
+ expected = '<TABLE cellspacing="0"><TR><TD>&nbsp;</TD></TR><TR foo="bar"><TD>&nbsp;</TD></TR><TR foo="bar"><TD>&nbsp;</TD></TR></TABLE>'
325
+ assert_equal(expected, @grid.to_html(CGI.new))
326
+ end
327
+ def test_insert_row
328
+ assert_equal(1, @grid.height)
329
+ @grid.add("testfeld", 0, 1)
330
+ assert_equal(2, @grid.height)
331
+ expected = '<TABLE cellspacing="0"><TR><TD>&nbsp;</TD></TR><TR><TD>testfeld</TD></TR></TABLE>'
332
+ assert_equal(expected, @grid.to_html(CGI.new))
333
+ @grid.insert_row(0, "testreihe")
334
+ assert_equal(3, @grid.height)
335
+ expected = '<TABLE cellspacing="0"><TR><TD>testreihe</TD></TR><TR><TD>&nbsp;</TD></TR><TR><TD>testfeld</TD></TR></TABLE>'
336
+ assert_equal(expected, @grid.to_html(CGI.new))
337
+ end
338
+ def test_gc
339
+ 100.times { |y|
340
+ 200.times { |x|
341
+ str = "[#{x}, #{y}]: test"
342
+ @grid.add(str, x, y)
343
+ @grid.add(str, x, y)
344
+ @grid.add(str, x, y)
345
+ @grid.add(str, x, y)
346
+ }
347
+ }
348
+ assert_equal(100, @grid.height)
349
+ assert_equal(200, @grid.width)
350
+ result = @grid.to_html(CGI.new)
351
+ end
352
+ def test_label
353
+ label = StubLabel.new
354
+ @grid.add(label, 0,0)
355
+ result = @grid.to_html(CGI.new)
356
+ assert_equal('<TABLE cellspacing="0"><TR><TD>foo</TD><TD>bar</TD></TR></TABLE>', result)
357
+ end
358
+ def test_field_attribute
359
+ @grid.add_attribute('foo', 'bar', 0, 0)
360
+ assert_equal('bar', @grid.field_attribute('foo', 0, 0))
361
+ end
362
+ def test_nil_attribute1
363
+ @grid.add_attribute('foo', nil, 0, 0)
364
+ assert_nothing_raised {
365
+ @grid.to_html(CGI.new)
366
+ }
367
+ end
368
+ def test_nil_attribute2
369
+ thing = StubGridComponent.new
370
+ thing.set_attribute("class", nil)
371
+ @grid.add(thing, 0,0)
372
+ assert_nothing_raised {
373
+ @grid.to_html(CGI.new)
374
+ }
375
+ end
376
+ def test_nil_component
377
+ thing = StubNilComponent.new
378
+ @grid.add(thing, 0,0)
379
+ assert_nothing_raised {
380
+ @grid.to_html(CGI.new)
381
+ }
382
+ end
383
+ def test_add_negative
384
+ assert_raises(ArgumentError) { @grid.add('foo', -1, 0) }
385
+ assert_raises(ArgumentError) { @grid.add('foo', 0, -1) }
386
+ assert_raises(ArgumentError) { @grid.add(['foo', 'bar'], -1, 0) }
387
+ assert_raises(ArgumentError) { @grid.add(['foo', 'bar'], 0, -1) }
388
+ end
389
+ def test_add_style_negative
390
+ assert_raises(ArgumentError) { @grid.add_style('bar', -1, 1) }
391
+ assert_raises(ArgumentError) { @grid.add_style('bar', 1, -1) }
392
+ assert_raises(ArgumentError) { @grid.add_style('bar', 1, 1, -1) }
393
+ assert_raises(ArgumentError) { @grid.add_style('bar', 1, 1, 1,-1) }
394
+ end
395
+ end
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # HtmlGrid -- HyperTextMarkupLanguage Framework
4
+ # Copyright (C) 2003 ywesee - intellectual capital connected
5
+ # Andreas Schrafl, Benjamin Fay, Hannes Wyss, Markus Huggler
6
+ #
7
+ # This library is free software; you can redistribute it and/or
8
+ # modify it under the terms of the GNU Lesser General Public
9
+ # License as published by the Free Software Foundation; either
10
+ # version 2.1 of the License, or (at your option) any later version.
11
+ #
12
+ # This library is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
+ # Lesser General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Lesser General Public
18
+ # License along with this library; if not, write to the Free Software
19
+ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
+ #
21
+ # ywesee - intellectual capital connected, Winterthurerstrasse 52, CH-8006 Zuerich, Switzerland
22
+ # htmlgrid@ywesee.com, www.ywesee.com/htmlgrid
23
+ #
24
+ # TestInput -- htmlgrid -- 18.11.2002 -- hwyss@ywesee.com
25
+
26
+ $: << File.expand_path("../lib", File.dirname(__FILE__))
27
+
28
+ require 'test/unit'
29
+ require 'stub/cgi'
30
+ require 'htmlgrid/button'
31
+ require 'htmlgrid/inputcurrency'
32
+
33
+ class StubInputLookandfeel
34
+ def attributes(key)
35
+ {
36
+ "bar" => "roz",
37
+ }
38
+ end
39
+ def lookup(key)
40
+ 'Foo'
41
+ end
42
+ def lookandfeel
43
+ self
44
+ end
45
+ def format_price(price)
46
+ sprintf('%.2f', price.to_f/100.0) if price.to_i > 0
47
+ end
48
+ end
49
+ class StubInputModel
50
+ def foo
51
+ 1234
52
+ end
53
+ end
54
+
55
+ class TestInput < Test::Unit::TestCase
56
+ def test_input
57
+ input = HtmlGrid::Input.new(:foo, nil, StubInputLookandfeel.new)
58
+ assert_equal('<INPUT name="foo" value="" bar="roz">', input.to_html(CGI.new))
59
+ end
60
+ def test_button
61
+ input = HtmlGrid::Button.new(:foo, nil, StubInputLookandfeel.new)
62
+ assert_equal('<INPUT name="foo" type="button" value="Foo" bar="roz">', input.to_html(CGI.new))
63
+ end
64
+ end
65
+ class TestInputCurrency < Test::Unit::TestCase
66
+ def test_to_html
67
+ input = HtmlGrid::InputCurrency.new(:foo, StubInputModel.new, StubInputLookandfeel.new)
68
+ assert_equal('<INPUT name="foo" type="text" value="12.34" bar="roz">', input.to_html(CGI.new))
69
+ end
70
+ end
@@ -0,0 +1,116 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # HtmlGrid -- HyperTextMarkupLanguage Framework
4
+ # Copyright (C) 2003 ywesee - intellectual capital connected
5
+ # Andreas Schrafl, Benjamin Fay, Hannes Wyss, Markus Huggler
6
+ #
7
+ # This library is free software; you can redistribute it and/or
8
+ # modify it under the terms of the GNU Lesser General Public
9
+ # License as published by the Free Software Foundation; either
10
+ # version 2.1 of the License, or (at your option) any later version.
11
+ #
12
+ # This library is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
+ # Lesser General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU Lesser General Public
18
+ # License along with this library; if not, write to the Free Software
19
+ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
+ #
21
+ # ywesee - intellectual capital connected, Winterthurerstrasse 52, CH-8006 Zuerich, Switzerland
22
+ # htmlgrid@ywesee.com, www.ywesee.com/htmlgrid
23
+ #
24
+ # TestLabel -- htmlgrid -- 26.11.2002 -- hwyss@ywesee.com
25
+
26
+ $: << File.dirname(__FILE__)
27
+ $: << File.expand_path("../lib", File.dirname(__FILE__))
28
+
29
+ require 'test/unit'
30
+ require 'stub/cgi'
31
+ require 'htmlgrid/label'
32
+ require 'htmlgrid/composite'
33
+
34
+ class TestLabel < Test::Unit::TestCase
35
+ class StubLabelState
36
+ attr_reader :errors
37
+ def initialize(errors={})
38
+ @errors = errors
39
+ end
40
+ end
41
+ class StubLabelModel
42
+ end
43
+ class StubLabelSession
44
+ attr_writer :state
45
+ def state
46
+ @state ||= StubLabelState.new
47
+ end
48
+ def lookup(key)
49
+ case key
50
+ when :componentname
51
+ 'Label'
52
+ when :named_component
53
+ 'Named Label'
54
+ end
55
+ end
56
+ def lookandfeel
57
+ self
58
+ end
59
+ def error(key)
60
+ state.errors[key]
61
+ end
62
+ end
63
+ class StubLabelComponent < HtmlGrid::Component
64
+ attr_accessor :mey
65
+ def to_html(context)
66
+ 'component'
67
+ end
68
+ def label?
69
+ true
70
+ end
71
+ def name
72
+ :componentname
73
+ end
74
+ def css_class
75
+ @mey
76
+ end
77
+ end
78
+ class StubLabelComposite < HtmlGrid::Composite
79
+ COMPONENTS = {
80
+ [0,0] => StubLabelComponent,
81
+ [0,1] => :named_component,
82
+ }
83
+ LABELS = true
84
+ def named_component(model, session)
85
+ @named_component ||= StubLabelComponent.new(model, session, self)
86
+ end
87
+ end
88
+ def setup
89
+ @session = StubLabelSession.new
90
+ #@label = HtmlGrid::Label.new(component)
91
+ end
92
+ def test_to_html1
93
+ composite = StubLabelComposite.new(StubLabelModel.new, @session)
94
+ expected = '<TABLE cellspacing="0"><TR>'
95
+ expected << '<TD><LABEL for="componentname">Label</LABEL></TD>'
96
+ expected << '<TD>component</TD></TR>'
97
+ expected << '<TR><TD><LABEL for="componentname">Named Label</LABEL></TD>'
98
+ expected << '<TD>component</TD></TR></TABLE>'
99
+ assert_equal(expected, composite.to_html(CGI.new))
100
+ end
101
+ def test_to_html2
102
+ @session.state = StubLabelState.new({:named_component => 'ein Error'})
103
+ composite = StubLabelComposite.new(StubLabelModel.new, @session)
104
+ expected = '<TABLE cellspacing="0"><TR><TD><LABEL for="componentname">Label</LABEL></TD><TD>component</TD></TR><TR><TD><LABEL class="error" for="componentname">Named Label</LABEL></TD><TD>component</TD></TR></TABLE>'
105
+ assert_equal(expected, composite.to_html(CGI.new))
106
+ end
107
+ =begin
108
+ def test_to_html3
109
+ composite = StubLabelComposite.new(StubLabelModel.new, @session)
110
+ composite.named_component(nil, nil).mey = 'mey'
111
+ @session.state = StubLabelState.new({:named_component => 'ein Error'})
112
+ expected = '<TABLE cellspacing="0"><TR><TD><LABEL for="componentname">Label</LABEL></TD><TD>component</TD></TR><TR><TD><LABEL class="e-mey" for="componentname">Named Label</LABEL></TD><TD>component</TD></TR></TABLE>'
113
+ assert_equal(expected, composite.to_html(CGI.new))
114
+ end
115
+ =end
116
+ end