Welcome to the "trac"-ing site of soap4r!
[soap4r] [httpclient] [openpgp4u] [pkcs1] [logger] [csv] [vtr]

root/branches/1_5/test/xsd/codegen/test_classdef.rb

Revision 1915, 3.8 kB (checked in by nahi, 1 year ago)
  • added support for anonymous type. anonymous type is mapped to inner class. closes #355.
Line 
1 require 'test/unit'
2 require 'xsd/codegen/classdef'
3
4
5 module XSD; module CodeGen
6
7
8 class TestClassDefCreator < Test::Unit::TestCase
9   include XSD::CodeGen
10   include GenSupport
11
12   def test_classdef_simple
13     c = ClassDef.new("Foo")
14     assert_equal(format(<<-EOD), c.dump)
15       class Foo
16       end
17     EOD
18   end
19
20   def test_classdef_complex
21     c = ClassDef.new("Foo::Bar::Baz", String)
22     assert_equal(format(<<-EOD), c.dump)
23       module Foo; module Bar
24
25       class Baz < String
26       end
27
28       end; end
29     EOD
30   end
31
32   def test_require
33     c = ClassDef.new("Foo")
34     c.def_require("foo/bar")
35     assert_equal(format(<<-EOD), c.dump)
36       require 'foo/bar'
37
38       class Foo
39       end
40     EOD
41   end
42
43   def test_comment
44     c = ClassDef.new("Foo")
45     c.def_require("foo/bar")
46     c.comment = <<-EOD
47       foo
48     EOD
49     assert_equal(format(<<-EOD), c.dump)
50       require 'foo/bar'
51
52       # foo
53       class Foo
54       end
55     EOD
56     c.comment = <<-EOD
57             foo
58
59               bar
60              baz
61
62     EOD
63     assert_equal(format(<<-EOD), c.dump)
64       require 'foo/bar'
65
66       # foo
67       #
68       #   bar
69       #  baz
70       #
71       class Foo
72       end
73     EOD
74   end
75
76   def test_emptymethod
77     c = ClassDef.new("Foo")
78     c.def_method('foo') do
79     end
80     c.def_method('bar') do
81       ''
82     end
83     assert_equal(format(<<-EOD), c.dump)
84       class Foo
85         def foo
86         end
87
88         def bar
89         end
90       end
91     EOD
92   end
93
94   def test_innermodule
95     c = ClassDef.new("Foo")
96     c.def_const("BAR", 1)
97     c.def_method('baz') { "Qux.new.quxx" }
98     c2 = ClassDef.new("Qux")
99     c2.def_method('quxx') { "Quxx::QUXXX" }
100     m3 = ModuleDef.new("Quxx")
101     m3.def_const("QUXXX", 2)
102     c.innermodule << c2 << m3
103     assert_equal(format(<<-EOD), c.dump)
104       class Foo
105         BAR = 1
106
107         class Qux
108           def quxx
109             Quxx::QUXXX
110           end
111         end
112
113         module Quxx
114           QUXXX = 2
115         end
116
117         def baz
118           Qux.new.quxx
119         end
120       end
121     EOD
122   end
123
124   def test_full
125     c = ClassDef.new("Foo::Bar::HobbitName", String)
126     c.def_require("foo/bar")
127     c.comment = <<-EOD
128         foo
129       bar
130         baz
131     EOD
132     c.def_const("FOO", 1)
133     c.def_classvar("@@foo", "var".dump)
134     c.def_classvar("baz", "1".dump)
135     c.def_attr("Foo", true, "foo")
136     c.def_attr("bar")
137     c.def_attr("baz", true)
138     c.def_attr("Foo2", true, "foo2")
139     c.def_attr("foo3", false, "foo3")
140     c.def_method("foo") do
141       <<-EOD
142         foo.bar = 1
143 \tbaz.each do |ele|
144 \t  ele
145         end
146       EOD
147     end
148     c.def_method("baz", "qux") do
149       <<-EOD
150         [1, 2, 3].each do |i|
151           p i
152         end
153       EOD
154     end
155
156     m = MethodDef.new("qux", "quxx", "quxxx") do
157       <<-EOD
158       p quxx + quxxx
159       EOD
160     end
161     m.comment = "hello world\n123"
162     c.add_method(m)
163     c.def_code <<-EOD
164       Foo.new
165       Bar.z
166     EOD
167     c.def_code <<-EOD
168       Foo.new
169       Bar.z
170     EOD
171     c.def_privatemethod("foo", "baz", "*arg", "&block")
172
173     assert_equal(format(<<-EOD), c.dump)
174     require 'foo/bar'
175
176     module Foo; module Bar
177
178     #   foo
179     # bar
180     #   baz
181     class HobbitName < String
182       @@foo = "var"
183       @@baz = "1"
184
185       FOO = 1
186
187       Foo.new
188       Bar.z
189
190       Foo.new
191       Bar.z
192
193       attr_accessor :bar
194       attr_accessor :baz
195       attr_reader :foo3
196
197       def Foo
198         @foo
199       end
200
201       def Foo=(value)
202         @foo = value
203       end
204
205       def Foo2
206         @foo2
207       end
208
209       def Foo2=(value)
210         @foo2 = value
211       end
212
213       def foo
214         foo.bar = 1
215         baz.each do |ele|
216           ele
217         end
218       end
219
220       def baz(qux)
221         [1, 2, 3].each do |i|
222           p i
223         end
224       end
225
226       # hello world
227       # 123
228       def qux(quxx, quxxx)
229         p quxx + quxxx
230       end
231
232     private
233
234       def foo(baz, *arg, &block)
235       end
236     end
237
238     end; end
239     EOD
240   end
241 end
242
243
244 end; end
Note: See TracBrowser for help on using the browser.