dub 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. data/.gitignore +8 -0
  2. data/History.txt +5 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +53 -0
  5. data/Rakefile +58 -0
  6. data/dub.gemspec +194 -0
  7. data/lib/dub/argument.rb +261 -0
  8. data/lib/dub/entities_unescape.rb +16 -0
  9. data/lib/dub/function.rb +111 -0
  10. data/lib/dub/function_group.rb +74 -0
  11. data/lib/dub/generator.rb +15 -0
  12. data/lib/dub/group.rb +10 -0
  13. data/lib/dub/klass.rb +231 -0
  14. data/lib/dub/lua/class.cpp.erb +75 -0
  15. data/lib/dub/lua/class_gen.rb +78 -0
  16. data/lib/dub/lua/function.cpp.erb +4 -0
  17. data/lib/dub/lua/function_gen.rb +223 -0
  18. data/lib/dub/lua/group.cpp.erb +10 -0
  19. data/lib/dub/lua/lua_cpp_helper.h +141 -0
  20. data/lib/dub/lua/namespace.cpp.erb +35 -0
  21. data/lib/dub/lua/namespace_gen.rb +86 -0
  22. data/lib/dub/lua.rb +24 -0
  23. data/lib/dub/member_extraction.rb +88 -0
  24. data/lib/dub/namespace.rb +276 -0
  25. data/lib/dub/parser.rb +46 -0
  26. data/lib/dub/templates/lua_template.erb +21 -0
  27. data/lib/dub/version.rb +3 -0
  28. data/lib/dub.rb +26 -0
  29. data/test/argument_test.rb +423 -0
  30. data/test/fixtures/app/CMakeLists.txt +54 -0
  31. data/test/fixtures/app/Doxyfile +1600 -0
  32. data/test/fixtures/app/bindings/all_lua.cpp +299 -0
  33. data/test/fixtures/app/include/matrix.h +123 -0
  34. data/test/fixtures/app/make_lua_bindings.rb +13 -0
  35. data/test/fixtures/app/vendor/lua/CMakeLists.txt +25 -0
  36. data/test/fixtures/app/vendor/lua/COPYRIGHT +34 -0
  37. data/test/fixtures/app/vendor/lua/HISTORY +183 -0
  38. data/test/fixtures/app/vendor/lua/INSTALL +99 -0
  39. data/test/fixtures/app/vendor/lua/Makefile +183 -0
  40. data/test/fixtures/app/vendor/lua/README +37 -0
  41. data/test/fixtures/app/vendor/lua/lapi.c +1080 -0
  42. data/test/fixtures/app/vendor/lua/lapi.h +16 -0
  43. data/test/fixtures/app/vendor/lua/lauxlib.c +653 -0
  44. data/test/fixtures/app/vendor/lua/lauxlib.h +174 -0
  45. data/test/fixtures/app/vendor/lua/lbaselib.c +643 -0
  46. data/test/fixtures/app/vendor/lua/lcode.c +839 -0
  47. data/test/fixtures/app/vendor/lua/lcode.h +76 -0
  48. data/test/fixtures/app/vendor/lua/ldblib.c +397 -0
  49. data/test/fixtures/app/vendor/lua/ldebug.c +622 -0
  50. data/test/fixtures/app/vendor/lua/ldebug.h +33 -0
  51. data/test/fixtures/app/vendor/lua/ldo.c +516 -0
  52. data/test/fixtures/app/vendor/lua/ldo.h +57 -0
  53. data/test/fixtures/app/vendor/lua/ldump.c +164 -0
  54. data/test/fixtures/app/vendor/lua/lfunc.c +174 -0
  55. data/test/fixtures/app/vendor/lua/lfunc.h +34 -0
  56. data/test/fixtures/app/vendor/lua/lgc.c +711 -0
  57. data/test/fixtures/app/vendor/lua/lgc.h +110 -0
  58. data/test/fixtures/app/vendor/lua/liblua.a +0 -0
  59. data/test/fixtures/app/vendor/lua/linit.c +38 -0
  60. data/test/fixtures/app/vendor/lua/liolib.c +532 -0
  61. data/test/fixtures/app/vendor/lua/llex.c +461 -0
  62. data/test/fixtures/app/vendor/lua/llex.h +81 -0
  63. data/test/fixtures/app/vendor/lua/llimits.h +128 -0
  64. data/test/fixtures/app/vendor/lua/lmathlib.c +263 -0
  65. data/test/fixtures/app/vendor/lua/lmem.c +86 -0
  66. data/test/fixtures/app/vendor/lua/lmem.h +49 -0
  67. data/test/fixtures/app/vendor/lua/loadlib.c +664 -0
  68. data/test/fixtures/app/vendor/lua/lobject.c +214 -0
  69. data/test/fixtures/app/vendor/lua/lobject.h +381 -0
  70. data/test/fixtures/app/vendor/lua/lopcodes.c +102 -0
  71. data/test/fixtures/app/vendor/lua/lopcodes.h +268 -0
  72. data/test/fixtures/app/vendor/lua/loslib.c +244 -0
  73. data/test/fixtures/app/vendor/lua/lparser.c +1337 -0
  74. data/test/fixtures/app/vendor/lua/lparser.h +82 -0
  75. data/test/fixtures/app/vendor/lua/lstate.c +214 -0
  76. data/test/fixtures/app/vendor/lua/lstate.h +168 -0
  77. data/test/fixtures/app/vendor/lua/lstring.c +111 -0
  78. data/test/fixtures/app/vendor/lua/lstring.h +31 -0
  79. data/test/fixtures/app/vendor/lua/lstrlib.c +868 -0
  80. data/test/fixtures/app/vendor/lua/ltable.c +588 -0
  81. data/test/fixtures/app/vendor/lua/ltable.h +40 -0
  82. data/test/fixtures/app/vendor/lua/ltablib.c +278 -0
  83. data/test/fixtures/app/vendor/lua/ltm.c +75 -0
  84. data/test/fixtures/app/vendor/lua/ltm.h +54 -0
  85. data/test/fixtures/app/vendor/lua/lua.c +695 -0
  86. data/test/fixtures/app/vendor/lua/lua.h +385 -0
  87. data/test/fixtures/app/vendor/lua/lua_dub_helper.h +77 -0
  88. data/test/fixtures/app/vendor/lua/luac +0 -0
  89. data/test/fixtures/app/vendor/lua/luac.c +200 -0
  90. data/test/fixtures/app/vendor/lua/luaconf.h +762 -0
  91. data/test/fixtures/app/vendor/lua/lualib.h +53 -0
  92. data/test/fixtures/app/vendor/lua/lundump.c +223 -0
  93. data/test/fixtures/app/vendor/lua/lundump.h +36 -0
  94. data/test/fixtures/app/vendor/lua/lvm.c +765 -0
  95. data/test/fixtures/app/vendor/lua/lvm.h +36 -0
  96. data/test/fixtures/app/vendor/lua/lzio.c +82 -0
  97. data/test/fixtures/app/vendor/lua/lzio.h +67 -0
  98. data/test/fixtures/app/vendor/lua/matrix.h +102 -0
  99. data/test/fixtures/app/vendor/lua/print.c +227 -0
  100. data/test/fixtures/app/vendor/lua/test/README +26 -0
  101. data/test/fixtures/app/vendor/lua/test/bisect.lua +27 -0
  102. data/test/fixtures/app/vendor/lua/test/cf.lua +16 -0
  103. data/test/fixtures/app/vendor/lua/test/echo.lua +5 -0
  104. data/test/fixtures/app/vendor/lua/test/env.lua +7 -0
  105. data/test/fixtures/app/vendor/lua/test/factorial.lua +32 -0
  106. data/test/fixtures/app/vendor/lua/test/fib.lua +40 -0
  107. data/test/fixtures/app/vendor/lua/test/fibfor.lua +13 -0
  108. data/test/fixtures/app/vendor/lua/test/globals.lua +13 -0
  109. data/test/fixtures/app/vendor/lua/test/hello.lua +3 -0
  110. data/test/fixtures/app/vendor/lua/test/life.lua +111 -0
  111. data/test/fixtures/app/vendor/lua/test/luac.lua +7 -0
  112. data/test/fixtures/app/vendor/lua/test/printf.lua +7 -0
  113. data/test/fixtures/app/vendor/lua/test/readonly.lua +12 -0
  114. data/test/fixtures/app/vendor/lua/test/sieve.lua +29 -0
  115. data/test/fixtures/app/vendor/lua/test/sort.lua +66 -0
  116. data/test/fixtures/app/vendor/lua/test/table.lua +12 -0
  117. data/test/fixtures/app/vendor/lua/test/trace-calls.lua +32 -0
  118. data/test/fixtures/app/vendor/lua/test/trace-globals.lua +38 -0
  119. data/test/fixtures/app/vendor/lua/test/xd.lua +14 -0
  120. data/test/fixtures/app/xml/classdub_1_1_matrix.xml +239 -0
  121. data/test/fixtures/app/xml/classdub_1_1_t_mat.xml +233 -0
  122. data/test/fixtures/app/xml/combine.xslt +15 -0
  123. data/test/fixtures/app/xml/compound.xsd +814 -0
  124. data/test/fixtures/app/xml/dir_53661a2bdeb1d55e60581a7e15deb763.xml +12 -0
  125. data/test/fixtures/app/xml/index.xml +42 -0
  126. data/test/fixtures/app/xml/index.xsd +66 -0
  127. data/test/fixtures/app/xml/matrix_8h.xml +149 -0
  128. data/test/fixtures/app/xml/namespacedub.xml +41 -0
  129. data/test/fixtures/classcv_1_1_mat.xml +1996 -0
  130. data/test/fixtures/classcv_1_1_point__.xml +341 -0
  131. data/test/fixtures/classcv_1_1_size__.xml +270 -0
  132. data/test/fixtures/group___magic_type.xml +406 -0
  133. data/test/fixtures/namespacecv.xml +12659 -0
  134. data/test/function_group_test.rb +15 -0
  135. data/test/function_test.rb +252 -0
  136. data/test/group_test.rb +155 -0
  137. data/test/helper.rb +34 -0
  138. data/test/klass_test.rb +297 -0
  139. data/test/lua_function_gen_test.rb +179 -0
  140. data/test/namespace_test.rb +220 -0
  141. data/test/parser_test.rb +36 -0
  142. metadata +216 -0
@@ -0,0 +1,15 @@
1
+ require 'helper'
2
+
3
+ class FunctionGroupTest < Test::Unit::TestCase
4
+
5
+ context 'A FunctionGroup' do
6
+ setup do
7
+ # namespacecv_xml = Dub.parse(fixture('namespacecv.xml'))
8
+ @group = namespacecv_xml[:cv][:divide]
9
+ end
10
+
11
+ should 'keep its members sorted by overloaded_index' do
12
+ assert_equal [1, 2, 3, 4], @group.map {|f| f.overloaded_index}
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,252 @@
1
+ require 'helper'
2
+ require 'dub/lua'
3
+
4
+ class FunctionTest < Test::Unit::TestCase
5
+
6
+ context 'A Function' do
7
+ setup do
8
+ # namespacecv_xml = Dub.parse(fixture('namespacecv.xml'))
9
+ @function = namespacecv_xml[:cv][:resize]
10
+ end
11
+
12
+ should 'return a list of Arguments with arguments' do
13
+ assert_kind_of Array, @function.arguments
14
+ assert_kind_of Dub::Argument, @function.arguments.first
15
+ end
16
+
17
+ should 'return name with name' do
18
+ assert_equal 'resize', @function.name
19
+ end
20
+
21
+ should 'have namespace prefix' do
22
+ assert_equal 'cv', @function.prefix
23
+ end
24
+
25
+ should 'display original_signature' do
26
+ assert_equal 'CV_EXPORTS void cv::resize(const Mat &src, Mat &dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR)', @function.original_signature
27
+ end
28
+
29
+ should 'return file and line on source' do
30
+ assert_equal 'include/opencv/cv.hpp:343', @function.source
31
+ end
32
+
33
+ should 'know if it has default arguments' do
34
+ assert @function.has_default_arguments?
35
+ end
36
+
37
+ context 'without default arguments' do
38
+ setup do
39
+ @function = namespacecv_xml[:cv][:getRotationMatrix2D]
40
+ end
41
+
42
+ should 'know if it has default arguments' do
43
+ assert !@function.has_default_arguments?
44
+ end
45
+ end
46
+
47
+ context 'without a return value' do
48
+ should 'know the type of a returned value' do
49
+ assert_equal nil, @function.return_value
50
+ end
51
+ end
52
+
53
+ context 'with a return value' do
54
+ setup do
55
+ @function = namespacecv_xml[:cv][:getRotationMatrix2D]
56
+ end
57
+
58
+ should 'return an Argument on return_value' do
59
+ assert_kind_of Dub::Argument, @function.return_value
60
+ end
61
+
62
+ should 'know the type of a returned value' do
63
+ assert_equal 'Mat', @function.return_value.type
64
+ end
65
+
66
+ should 'not use a pointer for create_type' do
67
+ assert_equal 'Mat ', @function.return_value.create_type
68
+ end
69
+ end
70
+
71
+ context 'with a pointer to native type return value' do
72
+ setup do
73
+ @function = namespacecv_xml[:cv][:Mat][:ptr].first
74
+ end
75
+
76
+ should 'know the type of the returned value' do
77
+ assert_equal 'uchar *', @function.return_value.create_type
78
+ end
79
+
80
+ should 'know that the type is a native pointer' do
81
+ assert @function.return_value.is_pointer?
82
+ end
83
+ end
84
+
85
+ context 'with a reference return value' do
86
+ setup do
87
+ @function = namespacecv_xml[:cv][:Mat][:adjustROI]
88
+ end
89
+
90
+ should 'strip ref in the create type' do
91
+ assert_equal 'Mat ', @function.return_value.create_type
92
+ end
93
+
94
+ should 'know that the type is a not native pointer' do
95
+ assert !@function.return_value.is_pointer?
96
+ end
97
+ end
98
+
99
+ context 'with a void pointer return value' do
100
+ setup do
101
+ @function = namespacecv_xml[:cv][:fastMalloc]
102
+ #Dub::Lua.bind(@function)
103
+ end
104
+
105
+ should 'strip ref in the create type' do
106
+ assert_equal 'void *', @function.return_value.create_type
107
+ end
108
+
109
+ should 'be ignored by generator' do
110
+ assert Dub::Lua.namespace_generator.ignore_member?(@function)
111
+ end
112
+ end
113
+
114
+ context 'with a class return value' do
115
+ setup do
116
+ @function = namespacecv_xml[:cv][:Mat][:row]
117
+ end
118
+
119
+ should 'return new objects in constructors' do
120
+ Dub::Lua.bind(@function)
121
+ assert_match %r{lua_pushclass<Mat>.*"cv.Mat"}, @function.to_s
122
+ end
123
+ end
124
+ end
125
+
126
+ context 'A vararg method' do
127
+ setup do
128
+ @function = namespacecv_xml[:cv][:format]
129
+ end
130
+
131
+ should 'know it is a vararg' do
132
+ assert @function.vararg?
133
+ end
134
+
135
+ should 'be ignored by generator' do
136
+ assert Dub::Lua.namespace_generator.ignore_member?(@function)
137
+ end
138
+ end
139
+
140
+ context 'A constructor with void pointer argument' do
141
+ setup do
142
+ @function = namespacecv_xml[:cv][:Mat].constructor[6]
143
+ end
144
+
145
+ should 'be ignored by generator' do
146
+ assert Dub::Lua.class_generator.ignore_member?(@function)
147
+ end
148
+
149
+ should 'not have array arguments' do
150
+ assert !namespacecv_xml[:cv][:Mat].constructor[2].has_array_arguments?
151
+ end
152
+
153
+ should 'not be listed in group members if bound' do
154
+ klass = namespacecv_xml[:cv][:Mat]
155
+ Dub::Lua.bind(klass)
156
+ assert !klass.constructor.members.include?(@function)
157
+ end
158
+
159
+ should 'be removed from group list on to_s' do
160
+ klass = namespacecv_xml[:cv][:Mat]
161
+ Dub::Lua.bind(klass)
162
+ assert_no_match %r{void\s*\*_data,\s*size_t}, klass.constructor.to_s
163
+ end
164
+ end
165
+
166
+ context 'A function with void pointer argument' do
167
+ setup do
168
+ @function = namespacecv_xml[:cv][:fastFree]
169
+ end
170
+
171
+ should 'be ignored by generator' do
172
+ assert Dub::Lua.namespace_generator.ignore_member?(@function)
173
+ end
174
+
175
+ should 'be removed from members list' do
176
+ Dub::Lua.bind(namespacecv_xml[:cv])
177
+ assert !namespacecv_xml[:cv].members.include?(@function)
178
+ end
179
+ end
180
+
181
+ context 'A method without arguments' do
182
+ setup do
183
+ @function = namespacecv_xml[:cv][:getCPUTickCount]
184
+ end
185
+
186
+ should 'parse return value' do
187
+ assert_equal 'int64', @function.return_value.type
188
+ end
189
+
190
+ should 'produce a one liner to call function' do
191
+ Dub::Lua.bind(@function)
192
+ assert_match %r{int64\s*retval__\s*=\s*getCPUTickCount\(\);}, @function.to_s
193
+ end
194
+ end
195
+
196
+ context 'A method' do
197
+ setup do
198
+ # namespacecv_xml = Dub.parse(fixture('app/xml/namespacedub.xml'))
199
+ @method = namespacedub_xml[:dub][:Matrix][:size]
200
+ end
201
+
202
+ should 'know that it belongs to a class' do
203
+ assert @method.member_method?
204
+ end
205
+
206
+ should 'know if it is a constructor' do
207
+ assert !@method.constructor?
208
+ end
209
+
210
+ should 'return klass on klass' do
211
+ assert_kind_of Dub::Klass, @method.klass
212
+ end
213
+ end
214
+
215
+ context 'A constructor' do
216
+ setup do
217
+ # namespacecv_xml = Dub.parse(fixture('app/xml/namespacedub.xml'))
218
+ @method = namespacedub_xml[:dub][:Matrix][:Matrix].first
219
+ end
220
+
221
+ should 'know that it belongs to a class' do
222
+ assert @method.member_method?
223
+ end
224
+
225
+ should 'know if it is a constructor' do
226
+ assert @method.constructor?
227
+ end
228
+
229
+ should 'return class name on return_value create_type' do
230
+ assert_equal 'Matrix', @method.return_value.type
231
+ end
232
+
233
+ should 'return class name pointer on return_value create_type' do
234
+ assert_equal 'Matrix *', @method.return_value.create_type
235
+ end
236
+
237
+ context 'from a typedef bound to a generator' do
238
+ setup do
239
+ @method = namespacecv_xml[:cv][:Size].constructor.first
240
+ Dub::Lua.bind(@method)
241
+ end
242
+
243
+ should 'know that it is a constructor' do
244
+ assert @method.constructor?
245
+ end
246
+
247
+ should 'push new userdata on new' do
248
+ assert_match %r{lua_pushclass<Size>.*"cv.Size".*return 1}m, @method.generator.return_value(@method)
249
+ end
250
+ end
251
+ end
252
+ end
@@ -0,0 +1,155 @@
1
+ require 'helper'
2
+ require 'dub/lua'
3
+
4
+ class GroupTest < Test::Unit::TestCase
5
+ context 'A Namespace' do
6
+ setup do
7
+ # namespacecv_xml = Dub.parse(fixture('namespacecv.xml'))
8
+ @namespace = namespacecv_xml[:cv]
9
+ end
10
+
11
+ should 'find a function with functions method' do
12
+ assert_kind_of Dub::Function, @namespace.function(:resize)
13
+ end
14
+
15
+ should 'find a function with array index' do
16
+ assert_kind_of Dub::Function, @namespace[:resize]
17
+ end
18
+
19
+ should 'respond to name' do
20
+ assert_equal 'cv', @namespace.name
21
+ end
22
+
23
+ should 'respond to lib_name' do
24
+ # nested namespace could be cv_more
25
+ assert_equal 'cv', @namespace.lib_name
26
+ end
27
+
28
+ should 'respond to id_name' do
29
+ # nested namespace could be cv.more
30
+ assert_equal 'cv', @namespace.id_name
31
+ end
32
+
33
+ should 'return header name on header' do
34
+ assert_equal 'cv.hpp', @namespace.header
35
+ end
36
+
37
+ should 'return defined header if changed' do
38
+ namespace = Dub.parse(fixture('namespacecv.xml'))[:cv]
39
+ namespace.header = 'opencv/cv.h'
40
+ assert_equal 'opencv/cv.h', namespace.header
41
+ end
42
+
43
+ context 'when bound' do
44
+ setup do
45
+ @generator = Dub::Lua.namespace_generator
46
+ end
47
+
48
+ should 'contain generator' do
49
+ res = Dub::Lua.bind(@namespace)
50
+ assert_equal res, @namespace
51
+ assert_equal @generator, @namespace.gen
52
+ end
53
+
54
+ end
55
+
56
+ context 'with overloaded functions' do
57
+ setup do
58
+ @function = namespacecv_xml[:cv][:divide]
59
+ end
60
+
61
+ should 'find a Dub::FunctionGroup' do
62
+ assert_kind_of Dub::FunctionGroup, @function
63
+ end
64
+
65
+ should 'find a group of functions' do
66
+ assert_kind_of Dub::Function, @function[0]
67
+ assert_kind_of Dub::Function, @function[1]
68
+ end
69
+
70
+ should 'group functions by name' do
71
+ assert_equal 'divide', @function[0].name
72
+ assert_equal 'divide', @function[1].name
73
+ end
74
+
75
+ should 'assign an overloaded_index to grouped functions' do
76
+ assert_equal 1, @function[0].overloaded_index
77
+ assert_equal 2, @function[1].overloaded_index
78
+ end
79
+ end
80
+ end
81
+
82
+ context 'A namespace with class definitions' do
83
+ setup do
84
+ @namespace = namespacedub_xml[:dub]
85
+ end
86
+
87
+ should 'find classes by array index' do
88
+ assert_kind_of Dub::Klass, @namespace[:Matrix]
89
+ end
90
+
91
+ should 'find classes with klass' do
92
+ assert_kind_of Dub::Klass, @namespace.klass('Matrix')
93
+ end
94
+
95
+ should 'return a list of classes with classes' do
96
+ assert_kind_of Array, @namespace.classes
97
+ assert_kind_of Dub::Klass, @namespace.classes.first
98
+ end
99
+ end
100
+
101
+ context 'A namespace with template class definitions' do
102
+ setup do
103
+ @namespace = namespacedub_xml[:dub]
104
+ end
105
+
106
+ should 'ignore template classes in class list' do
107
+ assert !@namespace.classes.map{|m| m.name}.include?("TMat")
108
+ end
109
+
110
+ should 'return template class with template_class' do
111
+ assert_kind_of Dub::Klass, @namespace.template_class('TMat')
112
+ end
113
+
114
+ should 'build a full classes for template typedefs' do
115
+ assert_kind_of Dub::Klass, @namespace.klass(:FloatMat)
116
+ end
117
+
118
+ context 'bound to a generator' do
119
+ setup do
120
+ Dub::Lua.bind(@namespace)
121
+ end
122
+
123
+ should 'generate a valid class' do
124
+ # TODO: rerun all tests for lua class generation
125
+ assert_match %r{luaL_register\(L,\s*"dub".*FMatrix}, @namespace[:FloatMat].to_s
126
+ end
127
+ end
128
+ end
129
+
130
+ context 'A namespace with enums' do
131
+ setup do
132
+ @namespace = namespacecv_xml[:cv]
133
+ end
134
+
135
+ should 'respond true to has_enums' do
136
+ assert @namespace.has_constants?
137
+ end
138
+
139
+ should 'produce namespaced declarations' do
140
+ assert_match %r{\{"INTER_LINEAR"\s*,\s*cv::INTER_LINEAR\}}, Dub::Lua.namespace_generator.constants_registration(@namespace)
141
+ end
142
+
143
+ context 'bound to a generator' do
144
+ setup do
145
+ Dub::Lua.bind(@namespace)
146
+ end
147
+
148
+ should 'produce enums registration' do
149
+ result = @namespace.to_s
150
+ assert_match %r{\{"INTER_LINEAR"\s*,\s*cv::INTER_LINEAR\}}, result
151
+ assert_match %r{register_constants\(L,\s*"cv",\s*cv_namespace_constants\)}, result
152
+ end
153
+ end
154
+ end
155
+ end
data/test/helper.rb ADDED
@@ -0,0 +1,34 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'shoulda'
4
+
5
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
7
+ require 'dub'
8
+
9
+ class Test::Unit::TestCase
10
+
11
+ def self.fixture(path)
12
+ File.join(File.dirname(__FILE__), 'fixtures', path)
13
+ end
14
+
15
+ @@namespacecv_xml = nil
16
+
17
+ Dub.logger.level = Logger::FATAL
18
+
19
+ def fixture(path)
20
+ self.class.fixture(path)
21
+ end
22
+
23
+ def namespacecv_xml
24
+ @@namespacecv_xml ||= Dub.parse(fixture('namespacecv.xml'))
25
+ end
26
+
27
+ def namespacedub_xml
28
+ @@namespacedub_xml ||= Dub.parse(fixture('app/xml/namespacedub.xml'))
29
+ end
30
+
31
+ def groupmagic_xml
32
+ @@groupmagic_xml ||= Dub.parse(fixture('group___magic_type.xml'))
33
+ end
34
+ end