dub 0.5.1 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,269 @@
1
+ <?xml version='1.0' encoding='UTF-8' standalone='no'?>
2
+ <doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.6.3">
3
+ <compounddef id="classcv_1_1_scalar__" kind="class" prot="public">
4
+ <compoundname>cv::Scalar_</compoundname>
5
+ <basecompoundref refid="classcv_1_1_vec" prot="public" virt="non-virtual">cv::Vec&lt; _Tp, 4 &gt;</basecompoundref>
6
+ <includes refid="cxcore_8hpp" local="no">cxcore.hpp</includes>
7
+ <templateparamlist>
8
+ <param>
9
+ <type>typename</type>
10
+ <declname>_Tp</declname>
11
+ <defname>_Tp</defname>
12
+ </param>
13
+ </templateparamlist>
14
+ <sectiondef kind="public-func">
15
+ <memberdef kind="function" id="classcv_1_1_scalar___1ae1f585cbf709bbce60762f802c571211" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
16
+ <type></type>
17
+ <definition>cv::Scalar_&lt; _Tp &gt;::Scalar_</definition>
18
+ <argsstring>()</argsstring>
19
+ <name>Scalar_</name>
20
+ <briefdescription>
21
+ </briefdescription>
22
+ <detaileddescription>
23
+ </detaileddescription>
24
+ <inbodydescription>
25
+ </inbodydescription>
26
+ <location file="/Users/gaspard/git/opencv/opencv/include/opencv/cxcore.hpp" line="427"/>
27
+ </memberdef>
28
+ <memberdef kind="function" id="classcv_1_1_scalar___1ae64e021266b9f7661f66a3c77d175c1f" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
29
+ <type></type>
30
+ <definition>cv::Scalar_&lt; _Tp &gt;::Scalar_</definition>
31
+ <argsstring>(_Tp v0, _Tp v1, _Tp v2=0, _Tp v3=0)</argsstring>
32
+ <name>Scalar_</name>
33
+ <param>
34
+ <type>_Tp</type>
35
+ <declname>v0</declname>
36
+ </param>
37
+ <param>
38
+ <type>_Tp</type>
39
+ <declname>v1</declname>
40
+ </param>
41
+ <param>
42
+ <type>_Tp</type>
43
+ <declname>v2</declname>
44
+ <defval>0</defval>
45
+ </param>
46
+ <param>
47
+ <type>_Tp</type>
48
+ <declname>v3</declname>
49
+ <defval>0</defval>
50
+ </param>
51
+ <briefdescription>
52
+ </briefdescription>
53
+ <detaileddescription>
54
+ </detaileddescription>
55
+ <inbodydescription>
56
+ </inbodydescription>
57
+ <location file="/Users/gaspard/git/opencv/opencv/include/opencv/cxcore.hpp" line="428"/>
58
+ </memberdef>
59
+ <memberdef kind="function" id="classcv_1_1_scalar___1ad882af49ebbea352268959dbcb4b2a0c" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
60
+ <type></type>
61
+ <definition>cv::Scalar_&lt; _Tp &gt;::Scalar_</definition>
62
+ <argsstring>(const CvScalar &amp;s)</argsstring>
63
+ <name>Scalar_</name>
64
+ <param>
65
+ <type>const <ref refid="struct_cv_scalar" kindref="compound">CvScalar</ref> &amp;</type>
66
+ <declname>s</declname>
67
+ </param>
68
+ <briefdescription>
69
+ </briefdescription>
70
+ <detaileddescription>
71
+ </detaileddescription>
72
+ <inbodydescription>
73
+ </inbodydescription>
74
+ <location file="/Users/gaspard/git/opencv/opencv/include/opencv/cxcore.hpp" line="429"/>
75
+ </memberdef>
76
+ <memberdef kind="function" id="classcv_1_1_scalar___1a3929afa654b588e2d9b2dde86060e689" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
77
+ <type></type>
78
+ <definition>cv::Scalar_&lt; _Tp &gt;::Scalar_</definition>
79
+ <argsstring>(_Tp v0)</argsstring>
80
+ <name>Scalar_</name>
81
+ <param>
82
+ <type>_Tp</type>
83
+ <declname>v0</declname>
84
+ </param>
85
+ <briefdescription>
86
+ </briefdescription>
87
+ <detaileddescription>
88
+ </detaileddescription>
89
+ <inbodydescription>
90
+ </inbodydescription>
91
+ <location file="/Users/gaspard/git/opencv/opencv/include/opencv/cxcore.hpp" line="430"/>
92
+ </memberdef>
93
+ <memberdef kind="function" id="classcv_1_1_scalar___1a7e82b74016e7134955bd5e4f3ea43eaf" prot="public" static="no" const="yes" explicit="no" inline="no" virt="non-virtual">
94
+ <type></type>
95
+ <definition>cv::Scalar_&lt; _Tp &gt;::operator CvScalar</definition>
96
+ <argsstring>() const </argsstring>
97
+ <name>operator CvScalar</name>
98
+ <reimplements refid="classcv_1_1_vec_1a6bba31a2f784e19509f23161d1ae2490">operator CvScalar</reimplements>
99
+ <briefdescription>
100
+ </briefdescription>
101
+ <detaileddescription>
102
+ </detaileddescription>
103
+ <inbodydescription>
104
+ </inbodydescription>
105
+ <location file="/Users/gaspard/git/opencv/opencv/include/opencv/cxcore.hpp" line="432"/>
106
+ </memberdef>
107
+ <memberdef kind="function" id="classcv_1_1_scalar___1a5cdacdd7b9b4d6f3aebbf7c9c830cdde" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
108
+ <templateparamlist>
109
+ <param>
110
+ <type>typename T2</type>
111
+ </param>
112
+ </templateparamlist>
113
+ <type></type>
114
+ <definition>cv::Scalar_&lt; _Tp &gt;::operator Scalar_&lt; T2 &gt;</definition>
115
+ <argsstring>() const </argsstring>
116
+ <name>operator Scalar_&lt; T2 &gt;</name>
117
+ <briefdescription>
118
+ </briefdescription>
119
+ <detaileddescription>
120
+ </detaileddescription>
121
+ <inbodydescription>
122
+ </inbodydescription>
123
+ <location file="/Users/gaspard/git/opencv/opencv/include/opencv/cxcore.hpp" line="434"/>
124
+ </memberdef>
125
+ <memberdef kind="function" id="classcv_1_1_scalar___1a9220cda4988b7af1fd62d72419baaa54" prot="public" static="no" const="yes" explicit="no" inline="no" virt="non-virtual">
126
+ <type><ref refid="classcv_1_1_scalar__" kindref="compound">Scalar_</ref>&lt; _Tp &gt;</type>
127
+ <definition>Scalar_&lt;_Tp&gt; cv::Scalar_&lt; _Tp &gt;::mul</definition>
128
+ <argsstring>(const Scalar_&lt; _Tp &gt; &amp;t, double scale=1) const </argsstring>
129
+ <name>mul</name>
130
+ <param>
131
+ <type>const <ref refid="classcv_1_1_scalar__" kindref="compound">Scalar_</ref>&lt; _Tp &gt; &amp;</type>
132
+ <declname>t</declname>
133
+ </param>
134
+ <param>
135
+ <type>double</type>
136
+ <declname>scale</declname>
137
+ <defval>1</defval>
138
+ </param>
139
+ <briefdescription>
140
+ </briefdescription>
141
+ <detaileddescription>
142
+ </detaileddescription>
143
+ <inbodydescription>
144
+ </inbodydescription>
145
+ <location file="/Users/gaspard/git/opencv/opencv/include/opencv/cxcore.hpp" line="436"/>
146
+ </memberdef>
147
+ <memberdef kind="function" id="classcv_1_1_scalar___1a95f3a5ffa3f17e545c84c731acba4082" prot="public" static="no" const="yes" explicit="no" inline="yes" virt="non-virtual">
148
+ <templateparamlist>
149
+ <param>
150
+ <type>typename T2</type>
151
+ </param>
152
+ </templateparamlist>
153
+ <type>void</type>
154
+ <definition>void cv::Scalar_&lt; _Tp &gt;::convertTo</definition>
155
+ <argsstring>(T2 *buf, int channels, int unroll_to=0) const </argsstring>
156
+ <name>convertTo</name>
157
+ <param>
158
+ <type>T2 *</type>
159
+ <declname>buf</declname>
160
+ </param>
161
+ <param>
162
+ <type>int</type>
163
+ <declname>channels</declname>
164
+ </param>
165
+ <param>
166
+ <type>int</type>
167
+ <declname>unroll_to</declname>
168
+ <defval>0</defval>
169
+ </param>
170
+ <briefdescription>
171
+ </briefdescription>
172
+ <detaileddescription>
173
+ </detaileddescription>
174
+ <inbodydescription>
175
+ </inbodydescription>
176
+ <location file="/Users/gaspard/git/opencv/opencv/include/opencv/cxcore.hpp" line="437"/>
177
+ </memberdef>
178
+ </sectiondef>
179
+ <sectiondef kind="public-static-func">
180
+ <memberdef kind="function" id="classcv_1_1_scalar___1ac1509a4b8454fe7fe29db069e13a2e6f" prot="public" static="yes" const="no" explicit="no" inline="no" virt="non-virtual">
181
+ <type><ref refid="classcv_1_1_scalar__" kindref="compound">Scalar_</ref>&lt; _Tp &gt;</type>
182
+ <definition>static Scalar_&lt;_Tp&gt; cv::Scalar_&lt; _Tp &gt;::all</definition>
183
+ <argsstring>(_Tp v0)</argsstring>
184
+ <name>all</name>
185
+ <reimplements refid="classcv_1_1_vec_1a86371c4948f9dbb4496cfd7a559c51b4">all</reimplements>
186
+ <param>
187
+ <type>_Tp</type>
188
+ <declname>v0</declname>
189
+ </param>
190
+ <briefdescription>
191
+ </briefdescription>
192
+ <detaileddescription>
193
+ </detaileddescription>
194
+ <inbodydescription>
195
+ </inbodydescription>
196
+ <location file="/Users/gaspard/git/opencv/opencv/include/opencv/cxcore.hpp" line="431"/>
197
+ </memberdef>
198
+ </sectiondef>
199
+ <briefdescription>
200
+ </briefdescription>
201
+ <detaileddescription>
202
+ </detaileddescription>
203
+ <inheritancegraph>
204
+ <node id="347">
205
+ <label>cv::Scalar_&lt; _Tp &gt;</label>
206
+ <link refid="classcv_1_1_scalar__"/>
207
+ <childnode refid="348" relation="public-inheritance">
208
+ </childnode>
209
+ </node>
210
+ <node id="348">
211
+ <label>cv::Vec&lt; _Tp, 4 &gt;</label>
212
+ <link refid="classcv_1_1_vec"/>
213
+ </node>
214
+ </inheritancegraph>
215
+ <collaborationgraph>
216
+ <node id="349">
217
+ <label>cv::Scalar_&lt; _Tp &gt;</label>
218
+ <link refid="classcv_1_1_scalar__"/>
219
+ <childnode refid="350" relation="public-inheritance">
220
+ </childnode>
221
+ </node>
222
+ <node id="350">
223
+ <label>cv::Vec&lt; _Tp, 4 &gt;</label>
224
+ <link refid="classcv_1_1_vec"/>
225
+ <childnode refid="351" relation="usage">
226
+ <edgelabel>val</edgelabel>
227
+ </childnode>
228
+ </node>
229
+ <node id="351">
230
+ <label>_Tp</label>
231
+ </node>
232
+ </collaborationgraph>
233
+ <location file="/Users/gaspard/git/opencv/opencv/include/opencv/cxcore.hpp" line="425" bodyfile="/Users/gaspard/git/opencv/opencv/include/opencv/cxcore.hpp" bodystart="424" bodyend="438"/>
234
+ <listofallmembers>
235
+ <member refid="classcv_1_1_scalar___1ac1509a4b8454fe7fe29db069e13a2e6f" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>all</name></member>
236
+ <member refid="classcv_1_1_vec_1acee7fcb659e3761ecc7ced13e399c33fae9575073c9a06ece6f8f689cfdaffda1" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>channels</name></member>
237
+ <member refid="classcv_1_1_scalar___1a95f3a5ffa3f17e545c84c731acba4082" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>convertTo</name></member>
238
+ <member refid="classcv_1_1_vec_1a0a747642fbef7c45bd089b8255327423" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>cross</name></member>
239
+ <member refid="classcv_1_1_vec_1a7657dfa378030b145035425d227306ad" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>ddot</name></member>
240
+ <member refid="classcv_1_1_vec_1acee7fcb659e3761ecc7ced13e399c33fac384741a50c6182a73308a227f912207" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>depth</name></member>
241
+ <member refid="classcv_1_1_vec_1ab621963ce41a34ebea38468e68beecf7" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>dot</name></member>
242
+ <member refid="classcv_1_1_scalar___1a9220cda4988b7af1fd62d72419baaa54" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>mul</name></member>
243
+ <member refid="classcv_1_1_scalar___1a7e82b74016e7134955bd5e4f3ea43eaf" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>operator CvScalar</name></member>
244
+ <member refid="classcv_1_1_scalar___1a5cdacdd7b9b4d6f3aebbf7c9c830cdde" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>operator Scalar_&lt; T2 &gt;</name></member>
245
+ <member refid="classcv_1_1_vec_1a5355e4a1861b19224f92932e47ded71a" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>operator Vec&lt; T2, cn &gt;</name></member>
246
+ <member refid="classcv_1_1_vec_1af49eab1e1f471c1b24297415f6538d6e" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>operator[]</name></member>
247
+ <member refid="classcv_1_1_vec_1ac65f71f08e6af6e807ba4ca47ffd0d90" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>operator[]</name></member>
248
+ <member refid="classcv_1_1_scalar___1ae1f585cbf709bbce60762f802c571211" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>Scalar_</name></member>
249
+ <member refid="classcv_1_1_scalar___1ae64e021266b9f7661f66a3c77d175c1f" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>Scalar_</name></member>
250
+ <member refid="classcv_1_1_scalar___1ad882af49ebbea352268959dbcb4b2a0c" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>Scalar_</name></member>
251
+ <member refid="classcv_1_1_scalar___1a3929afa654b588e2d9b2dde86060e689" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>Scalar_</name></member>
252
+ <member refid="classcv_1_1_vec_1acee7fcb659e3761ecc7ced13e399c33fa6b9faf6f7c5de5b8d02cd192d847cba0" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>type</name></member>
253
+ <member refid="classcv_1_1_vec_1a915665691f65a3a0ad247446384a95b2" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>val</name></member>
254
+ <member refid="classcv_1_1_vec_1adca5e5fb1c491d3f253c9110777969aa" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>value_type</name></member>
255
+ <member refid="classcv_1_1_vec_1a72bcb5232e9c11542886319edb9809a9" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>Vec</name></member>
256
+ <member refid="classcv_1_1_vec_1a70931c51a1f6c84bc8f1863b8f35fadc" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>Vec</name></member>
257
+ <member refid="classcv_1_1_vec_1ab3c6059e273514f79aebefc2825ea06c" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>Vec</name></member>
258
+ <member refid="classcv_1_1_vec_1a72280b48a5d716939114289dc0930ba6" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>Vec</name></member>
259
+ <member refid="classcv_1_1_vec_1a4860aebf83282553be32c021cf9726bc" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>Vec</name></member>
260
+ <member refid="classcv_1_1_vec_1ae50afd23b21fbd313dbfc8476db849b2" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>Vec</name></member>
261
+ <member refid="classcv_1_1_vec_1a841ae2e0076c9393b42baee62f1ddafc" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>Vec</name></member>
262
+ <member refid="classcv_1_1_vec_1a78a6c4b0bd6932de02c191365a4e7d87" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>Vec</name></member>
263
+ <member refid="classcv_1_1_vec_1af133aa5b6e162a522a72a999a7130786" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>Vec</name></member>
264
+ <member refid="classcv_1_1_vec_1a25667a57fe49571f285bf5b65e8e76d0" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>Vec</name></member>
265
+ <member refid="classcv_1_1_vec_1a74ba63687a0a3878d9a3ded1e0990622" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>Vec</name></member>
266
+ <member refid="classcv_1_1_vec_1a2bcc2be2e6fc71d00a03f109e445f86b" prot="public" virt="non-virtual"><scope>cv::Scalar_</scope><name>Vec</name></member>
267
+ </listofallmembers>
268
+ </compounddef>
269
+ </doxygen>
@@ -1,15 +1,24 @@
1
1
  require 'helper'
2
+ require 'dub/lua'
2
3
 
3
4
  class FunctionGroupTest < Test::Unit::TestCase
4
5
 
5
6
  context 'A FunctionGroup' do
6
- setup do
7
- # namespacecv_xml = Dub.parse(fixture('namespacecv.xml'))
7
+ should 'keep its members sorted by overloaded_index' do
8
8
  @group = namespacecv_xml[:cv][:divide]
9
+ assert_equal [1, 2, 3, 4], @group.map {|f| f.overloaded_index}
9
10
  end
10
11
 
11
- should 'keep its members sorted by overloaded_index' do
12
- assert_equal [1, 2, 3, 4], @group.map {|f| f.overloaded_index}
12
+ should 'not use top__ in chooser if all methods have same arg count' do
13
+ @method = namespacecv_xml[:cv][:Mat][:diag]
14
+ Dub::Lua.bind(@method)
15
+ assert_no_match %r{top__}, Dub::Lua.function_generator.chooser_body(@method)
16
+ end
17
+
18
+ should 'use top__ in chooser if some methods have different arg count' do
19
+ @method = namespacecv_xml[:cv][:Mat][:Mat]
20
+ Dub::Lua.bind(@method)
21
+ assert_match %r{top__}, Dub::Lua.function_generator.chooser_body(@method)
13
22
  end
14
23
  end
15
24
  end
@@ -178,6 +178,38 @@ class FunctionTest < Test::Unit::TestCase
178
178
  end
179
179
  end
180
180
 
181
+ context 'A function with list arguments' do
182
+ setup do
183
+ @namespace = namespacecv_xml[:cv]
184
+ Dub::Lua.bind(@namespace)
185
+ @group = @namespace[:calcHist]
186
+ @function = @group[1]
187
+ end
188
+
189
+ # should 'mark argument as list on arg_is_list' do
190
+ # @function.arg_is_list(0, 1)
191
+ # assert @function.arguments[0].is_list?
192
+ # assert !@function.arguments[0].is_list_count?
193
+ # assert @function.arguments[1].is_list_count?
194
+ # end
195
+
196
+ should 'respond true to has_class_pointer_arguments' do
197
+ assert @function.has_class_pointer_arguments?
198
+ end
199
+
200
+ should 'be removed from group list' do
201
+ assert_nil @group.members
202
+ end
203
+
204
+ should 'remove group from member declaration' do
205
+ assert_no_match %r{cv_calcHist}, @namespace.gen.functions_registration(@namespace)
206
+ end
207
+
208
+ should 'not be instanciated' do
209
+ assert_equal '', @group.to_s
210
+ end
211
+ end
212
+
181
213
  context 'A method without arguments' do
182
214
  setup do
183
215
  @function = namespacecv_xml[:cv][:getCPUTickCount]
@@ -214,7 +246,6 @@ class FunctionTest < Test::Unit::TestCase
214
246
 
215
247
  context 'A constructor' do
216
248
  setup do
217
- # namespacecv_xml = Dub.parse(fixture('app/xml/namespacedub.xml'))
218
249
  @method = namespacedub_xml[:dub][:Matrix][:Matrix].first
219
250
  end
220
251
 
@@ -249,4 +280,100 @@ class FunctionTest < Test::Unit::TestCase
249
280
  end
250
281
  end
251
282
  end
283
+
284
+ context 'A static method in a class' do
285
+ setup do
286
+ @method = namespacedub_xml[:dub][:Matrix][:MakeMatrix]
287
+ end
288
+
289
+ should 'know it is static' do
290
+ assert @method.static?
291
+ end
292
+
293
+ should 'append class in call_name' do
294
+ assert_equal 'Matrix::MakeMatrix', @method.call_name
295
+ end
296
+
297
+ should 'parse return type' do
298
+ assert_equal 'Matrix', @method.return_value.type
299
+ end
300
+
301
+ context 'bound to a generator' do
302
+ setup do
303
+ Dub::Lua.bind(@method)
304
+ end
305
+
306
+ should 'not try to find self' do
307
+ assert_no_match %r{self__}, @method.to_s
308
+ end
309
+
310
+ should 'insert the function into the namespace' do
311
+ @class = namespacedub_xml[:dub][:Matrix]
312
+ Dub::Lua.bind(@class)
313
+ result = @class.to_s
314
+ member_methods_registration = result[/Matrix_member_methods([^;]*);/,1]
315
+ namespace_methods_registration = result[/Matrix_namespace_methods([^;]*);/,1]
316
+ assert_no_match %r{Matrix_MakeMatrix}, member_methods_registration
317
+ assert_match %r{Matrix_MakeMatrix.*Matrix_MakeMatrix}, namespace_methods_registration
318
+ end
319
+
320
+ should 'use class name in call' do
321
+ assert_match %r{Matrix::MakeMatrix\(}, @method.gen.call_string(@method)
322
+ end
323
+ end
324
+ end
325
+
326
+ # This is something like template<typename T2> foo() inside a templated class
327
+ context 'A template method' do
328
+ setup do
329
+ @class = namespacecv_xml[:cv][:Scalar]
330
+ @method = @class.template_method(:convertTo)
331
+ end
332
+
333
+ should 'know it is a template' do
334
+ assert @method.template?
335
+ end
336
+
337
+ context 'bound to a generator' do
338
+ setup do
339
+ Dub::Lua.bind(@class)
340
+ end
341
+
342
+ should 'be ignored in class members' do
343
+ assert !@class.members.include?(@method)
344
+ end
345
+ end
346
+ end
347
+
348
+ context 'A method in a class defined from a template' do
349
+ setup do
350
+ @class = namespacecv_xml[:cv][:Scalar]
351
+ @method = @class[:all]
352
+ end
353
+
354
+ should 'resolve its arguments' do
355
+ assert_equal 'double', @method.arguments[0].type
356
+ assert_equal 'Scalar', @method.return_value.type
357
+ end
358
+
359
+ should 'not be seen as a template' do
360
+ assert !@method.template?
361
+ end
362
+
363
+ should 'not be seen as having complex types' do
364
+ assert !@method.has_complex_arguments?
365
+ end
366
+
367
+ context 'bound to a generator' do
368
+ setup do
369
+ Dub::Lua.bind(@class)
370
+ end
371
+
372
+ should 'not be ignored in class members' do
373
+ assert @class.members.include?(@method)
374
+ end
375
+ end
376
+ end
377
+
378
+
252
379
  end
data/test/klass_test.rb CHANGED
@@ -46,7 +46,7 @@ class KlassTest < Test::Unit::TestCase
46
46
  assert_kind_of Array, @class.class_methods
47
47
  end
48
48
 
49
- context 'bound member list' do
49
+ context 'with a bound member list' do
50
50
  setup do
51
51
  Dub::Lua.bind(@class)
52
52
  @list = @class.members.map {|m| m.name}
@@ -100,6 +100,10 @@ class KlassTest < Test::Unit::TestCase
100
100
  assert_kind_of Dub::Function, @class[:rows]
101
101
  end
102
102
 
103
+ should 'find static methods with array index' do
104
+ assert_kind_of Dub::Function, @class[:MakeMatrix]
105
+ end
106
+
103
107
  should 'return header name on header' do
104
108
  assert_equal 'matrix.h', @class.header
105
109
  end
@@ -160,6 +164,17 @@ class KlassTest < Test::Unit::TestCase
160
164
  assert_match %r{__tostring}, @class.to_s
161
165
  end
162
166
 
167
+ should 'use custom format if provided for tostring' do
168
+ @class.string_format = "%dx%d"
169
+ @class.string_args = "(*userdata)->rows, (*userdata)->cols"
170
+ assert_match %r{\(\*userdata\)->rows, \(\*userdata\)->cols}, @class.to_s
171
+ end
172
+
173
+ should 'use a default method for tostring if no custom string_format is provided' do
174
+ @class.string_format = nil
175
+ assert_match %r{<dub.Matrix: %p>}, @class.to_s
176
+ end
177
+
163
178
  should 'implement tostring' do
164
179
  assert_match %r{Matrix__tostring\(lua_State}, @class.to_s
165
180
  end
@@ -195,6 +210,52 @@ class KlassTest < Test::Unit::TestCase
195
210
  @tclass = namespacecv_xml[:cv].template_class(:Size_)
196
211
  assert_equal @class, @tclass.instanciations[['int']]
197
212
  end
213
+
214
+ context 'with a bound member list' do
215
+ setup do
216
+ @class = namespacedub_xml[:dub][:FMatrix]
217
+ Dub::Lua.bind(@class)
218
+ @list = @class.members.map {|m| m.name}
219
+ end
220
+
221
+ should 'ignore template methods in member list' do
222
+ assert !@list.include?("give_me_tea")
223
+ end
224
+
225
+ should 'ignore template methods in member registration' do
226
+ assert_no_match %r{give_me_tea}, @class.gen.method_registration(@class)
227
+ end
228
+
229
+ should 'ignore template methods in method istanciation' do
230
+ assert_no_match %r{give_me_tea}, @class.to_s
231
+ end
232
+ end
233
+ end
234
+
235
+ # strangely, the bug does not show up with "FMatrix"
236
+ context 'Another class defined from a template' do
237
+ setup do
238
+ @class = namespacecv_xml[:cv][:Scalar]
239
+ end
240
+
241
+ context 'with a bound member list' do
242
+ setup do
243
+ Dub::Lua.bind(@class)
244
+ @list = @class.members.map {|m| m.name}
245
+ end
246
+
247
+ should 'ignore template methods in member list' do
248
+ assert !@list.include?("convertTo")
249
+ end
250
+
251
+ should 'ignore template methods in member registration' do
252
+ assert_no_match %r{convertTo}, @class.gen.method_registration(@class)
253
+ end
254
+
255
+ should 'ignore template methods in method istanciation' do
256
+ assert_no_match %r{convertTo}, @class.to_s
257
+ end
258
+ end
198
259
  end
199
260
 
200
261
  context 'A class with alias names' do
@@ -253,7 +314,21 @@ class KlassTest < Test::Unit::TestCase
253
314
 
254
315
  should 'declare chooser' do
255
316
  result = @class.gen.method_registration(@class)
256
- assert_match %r{"zeros"\s*,\s*Mat_zeros\}}, result
317
+ assert_match %r{"diag"\s*,\s*Mat_diag\}}, result
318
+ assert_no_match %r{diag1}, result
319
+ end
320
+ end
321
+
322
+ context 'A class with overloaded static methods' do
323
+ setup do
324
+ # namespacecv_xml = Dub.parse(fixture('app/xml/namespacedub.xml'))
325
+ @class = namespacecv_xml[:cv][:Mat]
326
+ Dub::Lua.bind(@class)
327
+ end
328
+
329
+ should 'declare chooser' do
330
+ result = @class.gen.namespace_methods_registration(@class)
331
+ assert_match %r{"Mat_zeros"\s*,\s*Mat_zeros\}}, result
257
332
  assert_no_match %r{zeros1}, result
258
333
  end
259
334
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gaspard Bucher
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-03-05 00:00:00 +01:00
12
+ date: 2010-03-11 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -164,6 +164,7 @@ files:
164
164
  - test/fixtures/app/xml/namespacedub.xml
165
165
  - test/fixtures/classcv_1_1_mat.xml
166
166
  - test/fixtures/classcv_1_1_point__.xml
167
+ - test/fixtures/classcv_1_1_scalar__.xml
167
168
  - test/fixtures/classcv_1_1_size__.xml
168
169
  - test/fixtures/group___magic_type.xml
169
170
  - test/fixtures/namespacecv.xml