OSDN Git Service

Initial commit
[hdboo/hdboo.git] / test / tc_html.rb
1 #!/usr/bin/ruby -Ku
2 # -*- encoding: UTF-8 -*-
3
4 require 'test/unit'
5 require 'hdboo/html'
6
7 class TestToHTML < Test::Unit::TestCase
8   
9   def test_String_to_html
10     assert 'hoge'.respond_to?(:to_html)
11     assert_equal 'hoge', 'hoge'.to_html
12     assert_equal "hoge\nfuga", "hoge\nfuga".to_html
13   end
14   
15   def test_String_to_html_with_indentation
16     assert_equal '  hoge', 'hoge'.to_html(nil, 1)
17     assert_equal "  hoge\n  fuga", "hoge\nfuga".to_html(nil, 1)
18   end
19   
20   def test_Nil_to_html
21     assert nil.respond_to?(:to_html)
22     assert_equal '', nil.to_html
23   end
24   
25   def test_Hash_to_html
26     hash = {:hoge => 'hoge_value', :fuga => 'fuga_value'}
27     assert hash.respond_to?(:to_html)
28     
29     html = hash.to_html
30     assert_match /^<dl>/, html
31     assert(html.include?([
32       '  <dt>',
33       '    hoge',
34       '  </dt>',
35       '  <dd>',
36       '    hoge_value',
37       '  </dd>',
38     ].join("\n")))
39     assert(html.include?([
40       '  <dt>',
41       '    fuga',
42       '  </dt>',
43       '  <dd>',
44       '    fuga_value',
45       '  </dd>'
46     ].join("\n")))
47     assert_match /<\/dl>$/, html
48   end
49   
50   def test_Array_to_html
51     array = ['hoge', 'fuga', 'piyo']
52     assert array.respond_to?(:to_html)
53     assert_equal([
54       '<ol>',
55       '  <li>',
56       '    hoge',
57       '  </li>',
58       '  <li>',
59       '    fuga',
60       '  </li>',
61       '  <li>',
62       '    piyo',
63       '  </li>',
64       '</ol>'
65     ].join("\n"), array.to_html)
66   end
67   
68   class TestClass
69     attr_reader :fuga, :piyo
70     def initialize(fuga, piyo)
71       @fuga = fuga
72       @piyo = piyo
73     end
74   end
75   
76   def test_Object_to_html
77     obj = TestClass.new('fuga_value', 'piyo_value')
78     assert obj.respond_to?(:to_html)
79     assert_equal obj.to_html, obj.to_s
80     
81     def obj.to_hash
82       {:fuga => @fuga, :piyo => @piyo}
83     end
84     html = obj.to_html
85     assert_match /^<dl>/, html
86     assert(html.include?([
87     '  <dt>',
88     '    piyo',
89     '  </dt>',
90     '  <dd>',
91     '    piyo_value',
92     '  </dd>',
93     ].join("\n")))
94     assert(html.include?([
95     '  <dt>',
96     '    fuga',
97     '  </dt>',
98     '  <dd>',
99     '    fuga_value',
100     '  </dd>',
101     ].join("\n")))
102     assert_match /<\/dl>/, html
103   end
104   
105   def test_compound_object_to_html
106     hash = {
107       :str => 'str_value',
108       :nested_hash => {:hoge => 'hoge_value', :fuga => 'fuga_value'},
109       :nested_array => ['item1', 'item2']
110     }
111     html = hash.to_html
112     assert_match /^<dl>/, html
113     assert(html.include?([
114     '  <dt>',
115     '    nested_array',
116     '  </dt>',
117     '  <dd>',
118     '    <ol>',
119     '      <li>',
120     '        item1',
121     '      </li>',
122     '      <li>',
123     '        item2',
124     '      </li>',
125     '    </ol>',
126     '  </dd>',
127     ].join("\n")))
128     assert(html.include?([
129     '  <dt>',
130     '    str',
131     '  </dt>',
132     '  <dd>',
133     '    str_value',
134     '  </dd>',
135     ].join("\n")))
136     assert(html.include?([
137     '  <dt>',
138     '    nested_hash',
139     '  </dt>',
140     '  <dd>',
141     '    <dl>',
142     ].join("\n")))
143     assert(html.include?([
144     '      <dt>',
145     '        hoge',
146     '      </dt>',
147     '      <dd>',
148     '        hoge_value',
149     '      </dd>',
150     ].join("\n")))
151     assert(html.include?([
152     '      <dt>',
153     '        fuga',
154     '      </dt>',
155     '      <dd>',
156     '        fuga_value',
157     '      </dd>',
158     ].join("\n")))
159     assert(html.include?([
160     '    </dl>',
161     '  </dd>',
162     ].join("\n")))
163     assert_match /<\/dl>/, html
164   end
165 end