dub 0.2.2 → 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.
Potentially problematic release.
This version of dub might be problematic. Click here for more details.
- data/History.txt +92 -0
- data/LICENSE +20 -0
- data/README.rdoc +115 -0
- data/Rakefile +59 -0
- data/dub.gemspec +197 -0
- data/lib/dub/argument.rb +286 -0
- data/lib/dub/entities_unescape.rb +9 -0
- data/lib/dub/function.rb +177 -0
- data/lib/dub/function_group.rb +72 -0
- data/lib/dub/generator.rb +15 -0
- data/lib/dub/group.rb +20 -0
- data/lib/dub/klass.rb +338 -0
- data/lib/dub/lua/class.cpp.erb +114 -0
- data/lib/dub/lua/class_gen.rb +96 -0
- data/lib/dub/lua/function.cpp.erb +15 -0
- data/lib/dub/lua/function_gen.rb +329 -0
- data/lib/dub/lua/group.cpp.erb +9 -0
- data/lib/dub/lua/lua_cpp_helper.cpp +259 -0
- data/lib/dub/lua/lua_cpp_helper.h +219 -0
- data/lib/dub/lua/lua_object.cpp +158 -0
- data/lib/dub/lua/lua_object.h +69 -0
- data/lib/dub/lua/namespace.cpp.erb +42 -0
- data/lib/dub/lua/namespace_gen.rb +69 -0
- data/lib/dub/lua.rb +24 -0
- data/lib/dub/member_extraction.rb +128 -0
- data/lib/dub/namespace.rb +295 -0
- data/lib/dub/opts_parser.rb +30 -0
- data/lib/dub/parser.rb +46 -0
- data/lib/dub/templates/lua_template.erb +21 -0
- data/lib/dub/version.rb +3 -0
- data/lib/dub.rb +24 -20
- data/test/argument_test.rb +581 -0
- data/test/fixtures/app/CMakeLists.txt +54 -0
- data/test/fixtures/app/Doxyfile +1600 -0
- data/test/fixtures/app/bindings/all_lua.cpp +299 -0
- data/test/fixtures/app/include/matrix.h +283 -0
- data/test/fixtures/app/make_lua_bindings.rb +13 -0
- data/test/fixtures/app/vendor/lua/CMakeLists.txt +25 -0
- data/test/fixtures/app/vendor/lua/COPYRIGHT +34 -0
- data/test/fixtures/app/vendor/lua/HISTORY +183 -0
- data/test/fixtures/app/vendor/lua/INSTALL +99 -0
- data/test/fixtures/app/vendor/lua/Makefile +183 -0
- data/test/fixtures/app/vendor/lua/README +37 -0
- data/test/fixtures/app/vendor/lua/lapi.c +1080 -0
- data/test/fixtures/app/vendor/lua/lapi.h +16 -0
- data/test/fixtures/app/vendor/lua/lauxlib.c +653 -0
- data/test/fixtures/app/vendor/lua/lauxlib.h +174 -0
- data/test/fixtures/app/vendor/lua/lbaselib.c +643 -0
- data/test/fixtures/app/vendor/lua/lcode.c +839 -0
- data/test/fixtures/app/vendor/lua/lcode.h +76 -0
- data/test/fixtures/app/vendor/lua/ldblib.c +397 -0
- data/test/fixtures/app/vendor/lua/ldebug.c +622 -0
- data/test/fixtures/app/vendor/lua/ldebug.h +33 -0
- data/test/fixtures/app/vendor/lua/ldo.c +516 -0
- data/test/fixtures/app/vendor/lua/ldo.h +57 -0
- data/test/fixtures/app/vendor/lua/ldump.c +164 -0
- data/test/fixtures/app/vendor/lua/lfunc.c +174 -0
- data/test/fixtures/app/vendor/lua/lfunc.h +34 -0
- data/test/fixtures/app/vendor/lua/lgc.c +711 -0
- data/test/fixtures/app/vendor/lua/lgc.h +110 -0
- data/test/fixtures/app/vendor/lua/liblua.a +0 -0
- data/test/fixtures/app/vendor/lua/linit.c +38 -0
- data/test/fixtures/app/vendor/lua/liolib.c +532 -0
- data/test/fixtures/app/vendor/lua/llex.c +461 -0
- data/test/fixtures/app/vendor/lua/llex.h +81 -0
- data/test/fixtures/app/vendor/lua/llimits.h +128 -0
- data/test/fixtures/app/vendor/lua/lmathlib.c +263 -0
- data/test/fixtures/app/vendor/lua/lmem.c +86 -0
- data/test/fixtures/app/vendor/lua/lmem.h +49 -0
- data/test/fixtures/app/vendor/lua/loadlib.c +664 -0
- data/test/fixtures/app/vendor/lua/lobject.c +214 -0
- data/test/fixtures/app/vendor/lua/lobject.h +381 -0
- data/test/fixtures/app/vendor/lua/lopcodes.c +102 -0
- data/test/fixtures/app/vendor/lua/lopcodes.h +268 -0
- data/test/fixtures/app/vendor/lua/loslib.c +244 -0
- data/test/fixtures/app/vendor/lua/lparser.c +1337 -0
- data/test/fixtures/app/vendor/lua/lparser.h +82 -0
- data/test/fixtures/app/vendor/lua/lstate.c +214 -0
- data/test/fixtures/app/vendor/lua/lstate.h +168 -0
- data/test/fixtures/app/vendor/lua/lstring.c +111 -0
- data/test/fixtures/app/vendor/lua/lstring.h +31 -0
- data/test/fixtures/app/vendor/lua/lstrlib.c +868 -0
- data/test/fixtures/app/vendor/lua/ltable.c +588 -0
- data/test/fixtures/app/vendor/lua/ltable.h +40 -0
- data/test/fixtures/app/vendor/lua/ltablib.c +278 -0
- data/test/fixtures/app/vendor/lua/ltm.c +75 -0
- data/test/fixtures/app/vendor/lua/ltm.h +54 -0
- data/test/fixtures/app/vendor/lua/lua.c +695 -0
- data/test/fixtures/app/vendor/lua/lua.h +385 -0
- data/test/fixtures/app/vendor/lua/lua_dub_helper.h +77 -0
- data/test/fixtures/app/vendor/lua/luac +0 -0
- data/test/fixtures/app/vendor/lua/luac.c +200 -0
- data/test/fixtures/app/vendor/lua/luaconf.h +762 -0
- data/test/fixtures/app/vendor/lua/lualib.h +53 -0
- data/test/fixtures/app/vendor/lua/lundump.c +223 -0
- data/test/fixtures/app/vendor/lua/lundump.h +36 -0
- data/test/fixtures/app/vendor/lua/lvm.c +765 -0
- data/test/fixtures/app/vendor/lua/lvm.h +36 -0
- data/test/fixtures/app/vendor/lua/lzio.c +82 -0
- data/test/fixtures/app/vendor/lua/lzio.h +67 -0
- data/test/fixtures/app/vendor/lua/matrix.h +102 -0
- data/test/fixtures/app/vendor/lua/print.c +227 -0
- data/test/fixtures/app/vendor/lua/test/README +26 -0
- data/test/fixtures/app/vendor/lua/test/bisect.lua +27 -0
- data/test/fixtures/app/vendor/lua/test/cf.lua +16 -0
- data/test/fixtures/app/vendor/lua/test/echo.lua +5 -0
- data/test/fixtures/app/vendor/lua/test/env.lua +7 -0
- data/test/fixtures/app/vendor/lua/test/factorial.lua +32 -0
- data/test/fixtures/app/vendor/lua/test/fib.lua +40 -0
- data/test/fixtures/app/vendor/lua/test/fibfor.lua +13 -0
- data/test/fixtures/app/vendor/lua/test/globals.lua +13 -0
- data/test/fixtures/app/vendor/lua/test/hello.lua +3 -0
- data/test/fixtures/app/vendor/lua/test/life.lua +111 -0
- data/test/fixtures/app/vendor/lua/test/luac.lua +7 -0
- data/test/fixtures/app/vendor/lua/test/printf.lua +7 -0
- data/test/fixtures/app/vendor/lua/test/readonly.lua +12 -0
- data/test/fixtures/app/vendor/lua/test/sieve.lua +29 -0
- data/test/fixtures/app/vendor/lua/test/sort.lua +66 -0
- data/test/fixtures/app/vendor/lua/test/table.lua +12 -0
- data/test/fixtures/app/vendor/lua/test/trace-calls.lua +32 -0
- data/test/fixtures/app/vendor/lua/test/trace-globals.lua +38 -0
- data/test/fixtures/app/vendor/lua/test/xd.lua +14 -0
- data/test/fixtures/app/xml/classdub_1_1_base.xml +85 -0
- data/test/fixtures/app/xml/classdub_1_1_custom_destructor.xml +67 -0
- data/test/fixtures/app/xml/classdub_1_1_deletable_out_of_lua.xml +43 -0
- data/test/fixtures/app/xml/classdub_1_1_matrix.xml +482 -0
- data/test/fixtures/app/xml/classdub_1_1_no_destructor.xml +49 -0
- data/test/fixtures/app/xml/classdub_1_1_priv_sub_base.xml +89 -0
- data/test/fixtures/app/xml/classdub_1_1_private_constr.xml +68 -0
- data/test/fixtures/app/xml/classdub_1_1_static_constr.xml +69 -0
- data/test/fixtures/app/xml/classdub_1_1_sub_base.xml +89 -0
- data/test/fixtures/app/xml/classdub_1_1_t_mat.xml +252 -0
- data/test/fixtures/app/xml/combine.xslt +15 -0
- data/test/fixtures/app/xml/compound.xsd +814 -0
- data/test/fixtures/app/xml/dir_53661a2bdeb1d55e60581a7e15deb763.xml +12 -0
- data/test/fixtures/app/xml/index.xml +91 -0
- data/test/fixtures/app/xml/index.xsd +66 -0
- data/test/fixtures/app/xml/matrix_8h.xml +310 -0
- data/test/fixtures/app/xml/namespacedub.xml +48 -0
- data/test/fixtures/classcv_1_1_mat.xml +1996 -0
- data/test/fixtures/classcv_1_1_point__.xml +341 -0
- data/test/fixtures/classcv_1_1_scalar__.xml +269 -0
- data/test/fixtures/classcv_1_1_size__.xml +270 -0
- data/test/fixtures/dummy_class.cpp.erb +1 -0
- data/test/fixtures/dummy_function.cpp.erb +1 -0
- data/test/fixtures/group___magic_type.xml +406 -0
- data/test/fixtures/namespacecv.xml +12659 -0
- data/test/function_group_test.rb +43 -0
- data/test/function_test.rb +405 -0
- data/test/group_test.rb +241 -0
- data/test/helper.rb +34 -0
- data/test/klass_test.rb +551 -0
- data/test/lua_function_gen_test.rb +242 -0
- data/test/namespace_test.rb +220 -0
- data/test/parser_test.rb +36 -0
- metadata +229 -272
- checksums.yaml +0 -7
- data/lib/open_api_sdk/analytics.rb +0 -99
- data/lib/open_api_sdk/domains.rb +0 -353
- data/lib/open_api_sdk/dub.rb +0 -88
- data/lib/open_api_sdk/links.rb +0 -766
- data/lib/open_api_sdk/metatags.rb +0 -54
- data/lib/open_api_sdk/models/operations/bulkcreatelinks_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/bulkupdatelinks_requestbody.rb +0 -27
- data/lib/open_api_sdk/models/operations/bulkupdatelinks_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/color.rb +0 -24
- data/lib/open_api_sdk/models/operations/createdomain_requestbody.rb +0 -33
- data/lib/open_api_sdk/models/operations/createdomain_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/createlink_requestbody.rb +0 -95
- data/lib/open_api_sdk/models/operations/createlink_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/createtag_requestbody.rb +0 -32
- data/lib/open_api_sdk/models/operations/createtag_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/data.rb +0 -83
- data/lib/open_api_sdk/models/operations/deletedomain_request.rb +0 -24
- data/lib/open_api_sdk/models/operations/deletedomain_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/deletedomain_responsebody.rb +0 -24
- data/lib/open_api_sdk/models/operations/deletelink_request.rb +0 -24
- data/lib/open_api_sdk/models/operations/deletelink_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/deletelink_responsebody.rb +0 -24
- data/lib/open_api_sdk/models/operations/event.rb +0 -21
- data/lib/open_api_sdk/models/operations/getlinkinfo_request.rb +0 -33
- data/lib/open_api_sdk/models/operations/getlinkinfo_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/getlinks_request.rb +0 -51
- data/lib/open_api_sdk/models/operations/getlinks_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/getlinkscount_request.rb +0 -48
- data/lib/open_api_sdk/models/operations/getlinkscount_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/getmetatags_request.rb +0 -24
- data/lib/open_api_sdk/models/operations/getmetatags_response.rb +0 -33
- data/lib/open_api_sdk/models/operations/getmetatags_responsebody.rb +0 -30
- data/lib/open_api_sdk/models/operations/getqrcode_request.rb +0 -39
- data/lib/open_api_sdk/models/operations/getqrcode_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/gettags_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/getworkspace_request.rb +0 -24
- data/lib/open_api_sdk/models/operations/getworkspace_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/groupby.rb +0 -28
- data/lib/open_api_sdk/models/operations/interval.rb +0 -25
- data/lib/open_api_sdk/models/operations/level.rb +0 -21
- data/lib/open_api_sdk/models/operations/listdomains_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/paymentprocessor.rb +0 -20
- data/lib/open_api_sdk/models/operations/requestbody.rb +0 -95
- data/lib/open_api_sdk/models/operations/retrieveanalytics_request.rb +0 -81
- data/lib/open_api_sdk/models/operations/retrieveanalytics_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/sort.rb +0 -20
- data/lib/open_api_sdk/models/operations/trackcustomer_requestbody.rb +0 -33
- data/lib/open_api_sdk/models/operations/trackcustomer_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/trackcustomer_responsebody.rb +0 -33
- data/lib/open_api_sdk/models/operations/tracklead_requestbody.rb +0 -42
- data/lib/open_api_sdk/models/operations/tracklead_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/tracklead_responsebody.rb +0 -42
- data/lib/open_api_sdk/models/operations/tracksale_requestbody.rb +0 -42
- data/lib/open_api_sdk/models/operations/tracksale_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/tracksale_responsebody.rb +0 -42
- data/lib/open_api_sdk/models/operations/updatedomain_request.rb +0 -27
- data/lib/open_api_sdk/models/operations/updatedomain_requestbody.rb +0 -33
- data/lib/open_api_sdk/models/operations/updatedomain_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/updatelink_request.rb +0 -27
- data/lib/open_api_sdk/models/operations/updatelink_requestbody.rb +0 -95
- data/lib/open_api_sdk/models/operations/updatelink_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/updatetag_color.rb +0 -24
- data/lib/open_api_sdk/models/operations/updatetag_request.rb +0 -27
- data/lib/open_api_sdk/models/operations/updatetag_requestbody.rb +0 -32
- data/lib/open_api_sdk/models/operations/updatetag_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/updateworkspace_request.rb +0 -27
- data/lib/open_api_sdk/models/operations/updateworkspace_requestbody.rb +0 -27
- data/lib/open_api_sdk/models/operations/updateworkspace_response.rb +0 -60
- data/lib/open_api_sdk/models/operations/upsertlink_requestbody.rb +0 -95
- data/lib/open_api_sdk/models/operations/upsertlink_response.rb +0 -60
- data/lib/open_api_sdk/models/operations.rb +0 -74
- data/lib/open_api_sdk/models/shared/badrequest.rb +0 -24
- data/lib/open_api_sdk/models/shared/code.rb +0 -18
- data/lib/open_api_sdk/models/shared/color.rb +0 -24
- data/lib/open_api_sdk/models/shared/conflict.rb +0 -24
- data/lib/open_api_sdk/models/shared/conflict_code.rb +0 -18
- data/lib/open_api_sdk/models/shared/conflict_error.rb +0 -30
- data/lib/open_api_sdk/models/shared/countrycode.rb +0 -267
- data/lib/open_api_sdk/models/shared/domains.rb +0 -27
- data/lib/open_api_sdk/models/shared/domainschema.rb +0 -48
- data/lib/open_api_sdk/models/shared/error.rb +0 -30
- data/lib/open_api_sdk/models/shared/forbidden.rb +0 -24
- data/lib/open_api_sdk/models/shared/forbidden_code.rb +0 -18
- data/lib/open_api_sdk/models/shared/forbidden_error.rb +0 -30
- data/lib/open_api_sdk/models/shared/geo.rb +0 -771
- data/lib/open_api_sdk/models/shared/internalservererror.rb +0 -24
- data/lib/open_api_sdk/models/shared/internalservererror_code.rb +0 -18
- data/lib/open_api_sdk/models/shared/internalservererror_error.rb +0 -30
- data/lib/open_api_sdk/models/shared/inviteexpired.rb +0 -24
- data/lib/open_api_sdk/models/shared/inviteexpired_code.rb +0 -18
- data/lib/open_api_sdk/models/shared/inviteexpired_error.rb +0 -30
- data/lib/open_api_sdk/models/shared/linkgeotargeting.rb +0 -771
- data/lib/open_api_sdk/models/shared/linkschema.rb +0 -142
- data/lib/open_api_sdk/models/shared/notfound.rb +0 -24
- data/lib/open_api_sdk/models/shared/notfound_code.rb +0 -18
- data/lib/open_api_sdk/models/shared/notfound_error.rb +0 -30
- data/lib/open_api_sdk/models/shared/plan.rb +0 -24
- data/lib/open_api_sdk/models/shared/ratelimitexceeded.rb +0 -24
- data/lib/open_api_sdk/models/shared/ratelimitexceeded_code.rb +0 -18
- data/lib/open_api_sdk/models/shared/ratelimitexceeded_error.rb +0 -30
- data/lib/open_api_sdk/models/shared/role.rb +0 -19
- data/lib/open_api_sdk/models/shared/security.rb +0 -24
- data/lib/open_api_sdk/models/shared/tagschema.rb +0 -30
- data/lib/open_api_sdk/models/shared/unauthorized.rb +0 -24
- data/lib/open_api_sdk/models/shared/unauthorized_code.rb +0 -18
- data/lib/open_api_sdk/models/shared/unauthorized_error.rb +0 -30
- data/lib/open_api_sdk/models/shared/unprocessableentity.rb +0 -24
- data/lib/open_api_sdk/models/shared/unprocessableentity_code.rb +0 -18
- data/lib/open_api_sdk/models/shared/unprocessableentity_error.rb +0 -30
- data/lib/open_api_sdk/models/shared/users.rb +0 -24
- data/lib/open_api_sdk/models/shared/workspaceschema.rb +0 -81
- data/lib/open_api_sdk/models/shared.rb +0 -49
- data/lib/open_api_sdk/qr_codes.rb +0 -97
- data/lib/open_api_sdk/sdkconfiguration.rb +0 -52
- data/lib/open_api_sdk/tags.rb +0 -272
- data/lib/open_api_sdk/track.rb +0 -276
- data/lib/open_api_sdk/utils/metadata_fields.rb +0 -150
- data/lib/open_api_sdk/utils/t.rb +0 -59
- data/lib/open_api_sdk/utils/utils.rb +0 -772
- data/lib/open_api_sdk/workspaces.rb +0 -192
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'dub/lua'
|
3
|
+
|
4
|
+
class FunctionGroupTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
context 'A FunctionGroup' do
|
7
|
+
should 'keep its members sorted by overloaded_index' do
|
8
|
+
@group = namespacecv_xml[:cv][:divide]
|
9
|
+
assert_equal [1, 2, 3, 4], @group.map {|f| f.overloaded_index}
|
10
|
+
|
11
|
+
assert_match %r{lua_type\(L, 1\)}, Dub::Lua.function_generator.chooser_body(@group)
|
12
|
+
end
|
13
|
+
|
14
|
+
should 'start getting type on first argument' do
|
15
|
+
@group = namespacecv_xml[:cv][:divide]
|
16
|
+
assert_match %r{lua_type\(L, 1\)}, Dub::Lua.function_generator.chooser_body(@group)
|
17
|
+
end
|
18
|
+
|
19
|
+
should 'not use top__ in chooser if all methods have same arg count' do
|
20
|
+
@method = namespacecv_xml[:cv][:Mat][:diag]
|
21
|
+
Dub::Lua.bind(@method)
|
22
|
+
assert_no_match %r{top__}, Dub::Lua.function_generator.chooser_body(@method)
|
23
|
+
end
|
24
|
+
|
25
|
+
should 'use top__ in chooser if some methods have different arg count' do
|
26
|
+
@method = namespacecv_xml[:cv][:Mat][:Mat]
|
27
|
+
Dub::Lua.bind(@method)
|
28
|
+
assert_match %r{top__}, Dub::Lua.function_generator.chooser_body(@method)
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'from overloaded members' do
|
32
|
+
subject do
|
33
|
+
namespacedub_xml[:dub][:Matrix][:do_something]
|
34
|
+
end
|
35
|
+
|
36
|
+
should 'start getting type on second argument' do
|
37
|
+
# Function selector should not be fooled by the first arg == self
|
38
|
+
assert_no_match %r{lua_type\(L, 1\)}, Dub::Lua.function_generator.chooser_body(subject)
|
39
|
+
assert_match %r{lua_type\(L, 2\)}, Dub::Lua.function_generator.chooser_body(subject)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,405 @@
|
|
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 'use prefix in id_name' do
|
26
|
+
assert_equal 'cv.resize', @function.id_name
|
27
|
+
end
|
28
|
+
|
29
|
+
should 'display original_signature' do
|
30
|
+
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
|
31
|
+
end
|
32
|
+
|
33
|
+
should 'return file and line on source' do
|
34
|
+
assert_equal 'include/opencv/cv.hpp:343', @function.source
|
35
|
+
end
|
36
|
+
|
37
|
+
should 'know if it has default arguments' do
|
38
|
+
assert @function.has_default_arguments?
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'without default arguments' do
|
42
|
+
setup do
|
43
|
+
@function = namespacecv_xml[:cv][:getRotationMatrix2D]
|
44
|
+
end
|
45
|
+
|
46
|
+
should 'know if it has default arguments' do
|
47
|
+
assert !@function.has_default_arguments?
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context 'not public' do
|
52
|
+
setup do
|
53
|
+
@function = namespacedub_xml[:dub][:Matrix][:protected_method]
|
54
|
+
end
|
55
|
+
|
56
|
+
should 'not be found' do
|
57
|
+
assert_nil @function
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context 'without a return value' do
|
62
|
+
should 'know the type of a returned value' do
|
63
|
+
assert_equal nil, @function.return_value
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
context 'with a return value' do
|
68
|
+
setup do
|
69
|
+
@function = namespacecv_xml[:cv][:getRotationMatrix2D]
|
70
|
+
end
|
71
|
+
|
72
|
+
should 'return an Argument on return_value' do
|
73
|
+
assert_kind_of Dub::Argument, @function.return_value
|
74
|
+
end
|
75
|
+
|
76
|
+
should 'know the type of a returned value' do
|
77
|
+
assert_equal 'Mat', @function.return_value.type
|
78
|
+
end
|
79
|
+
|
80
|
+
should 'not use a pointer for create_type' do
|
81
|
+
assert_equal 'Mat ', @function.return_value.create_type
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
context 'with a pointer to native type return value' do
|
86
|
+
setup do
|
87
|
+
@function = namespacecv_xml[:cv][:Mat][:ptr].first
|
88
|
+
end
|
89
|
+
|
90
|
+
should 'know the type of the returned value' do
|
91
|
+
assert_equal 'uchar *', @function.return_value.create_type
|
92
|
+
end
|
93
|
+
|
94
|
+
should 'know that the type is a native pointer' do
|
95
|
+
assert @function.return_value.is_pointer?
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
context 'with a reference return value' do
|
100
|
+
setup do
|
101
|
+
@function = namespacecv_xml[:cv][:Mat][:adjustROI]
|
102
|
+
end
|
103
|
+
|
104
|
+
should 'strip ref in the create type' do
|
105
|
+
assert_equal 'Mat ', @function.return_value.create_type
|
106
|
+
end
|
107
|
+
|
108
|
+
should 'know that the type is a not native pointer' do
|
109
|
+
assert !@function.return_value.is_pointer?
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
context 'with a void pointer return value' do
|
114
|
+
setup do
|
115
|
+
@function = namespacecv_xml[:cv][:fastMalloc]
|
116
|
+
#Dub::Lua.bind(@function)
|
117
|
+
end
|
118
|
+
|
119
|
+
should 'strip ref in the create type' do
|
120
|
+
assert_equal 'void *', @function.return_value.create_type
|
121
|
+
end
|
122
|
+
|
123
|
+
should 'be ignored by generator' do
|
124
|
+
assert Dub::Lua.namespace_generator.ignore_member?(@function)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
context 'with a class return value' do
|
129
|
+
setup do
|
130
|
+
@function = namespacecv_xml[:cv][:Mat][:row]
|
131
|
+
end
|
132
|
+
|
133
|
+
should 'return new objects in constructors' do
|
134
|
+
Dub::Lua.bind(@function)
|
135
|
+
assert_match %r{lua_pushclass<Mat>.*"cv.Mat"}, @function.to_s
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
context 'A vararg method' do
|
141
|
+
setup do
|
142
|
+
@function = namespacecv_xml[:cv][:format]
|
143
|
+
end
|
144
|
+
|
145
|
+
should 'know it is a vararg' do
|
146
|
+
assert @function.vararg?
|
147
|
+
end
|
148
|
+
|
149
|
+
should 'be ignored by generator' do
|
150
|
+
assert Dub::Lua.namespace_generator.ignore_member?(@function)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
context 'A constructor with void pointer argument' do
|
155
|
+
setup do
|
156
|
+
@function = namespacecv_xml[:cv][:Mat].constructor[6]
|
157
|
+
end
|
158
|
+
|
159
|
+
should 'be ignored by generator' do
|
160
|
+
assert Dub::Lua.class_generator.ignore_member?(@function)
|
161
|
+
end
|
162
|
+
|
163
|
+
should 'not have array arguments' do
|
164
|
+
assert !namespacecv_xml[:cv][:Mat].constructor[2].has_array_arguments?
|
165
|
+
end
|
166
|
+
|
167
|
+
should 'not be listed in group members if bound' do
|
168
|
+
klass = namespacecv_xml[:cv][:Mat]
|
169
|
+
Dub::Lua.bind(klass)
|
170
|
+
assert !klass.constructor.members.include?(@function)
|
171
|
+
end
|
172
|
+
|
173
|
+
should 'be removed from group list on to_s' do
|
174
|
+
klass = namespacecv_xml[:cv][:Mat]
|
175
|
+
Dub::Lua.bind(klass)
|
176
|
+
assert_no_match %r{void\s*\*_data,\s*size_t}, klass.constructor.to_s
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
context 'A function with void pointer argument' do
|
181
|
+
setup do
|
182
|
+
@function = namespacecv_xml[:cv][:fastFree]
|
183
|
+
end
|
184
|
+
|
185
|
+
should 'be ignored by generator' do
|
186
|
+
assert Dub::Lua.namespace_generator.ignore_member?(@function)
|
187
|
+
end
|
188
|
+
|
189
|
+
should 'be removed from members list' do
|
190
|
+
Dub::Lua.bind(namespacecv_xml[:cv])
|
191
|
+
assert !namespacecv_xml[:cv].members.include?(@function)
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
context 'A function with list arguments' do
|
196
|
+
setup do
|
197
|
+
@namespace = namespacecv_xml[:cv]
|
198
|
+
Dub::Lua.bind(@namespace)
|
199
|
+
@group = @namespace[:calcHist]
|
200
|
+
@function = @group[1]
|
201
|
+
end
|
202
|
+
|
203
|
+
# should 'mark argument as list on arg_is_list' do
|
204
|
+
# @function.arg_is_list(0, 1)
|
205
|
+
# assert @function.arguments[0].is_list?
|
206
|
+
# assert !@function.arguments[0].is_list_count?
|
207
|
+
# assert @function.arguments[1].is_list_count?
|
208
|
+
# end
|
209
|
+
|
210
|
+
should 'respond true to has_class_pointer_arguments' do
|
211
|
+
assert @function.has_class_pointer_arguments?
|
212
|
+
end
|
213
|
+
|
214
|
+
should 'be removed from group list' do
|
215
|
+
assert_nil @group.members
|
216
|
+
end
|
217
|
+
|
218
|
+
should 'remove group from member declaration' do
|
219
|
+
assert_no_match %r{cv_calcHist}, @namespace.gen.functions_registration(@namespace)
|
220
|
+
end
|
221
|
+
|
222
|
+
should 'not be instanciated' do
|
223
|
+
assert_equal '', @group.to_s
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
context 'A method without arguments' do
|
228
|
+
setup do
|
229
|
+
@function = namespacecv_xml[:cv][:getCPUTickCount]
|
230
|
+
end
|
231
|
+
|
232
|
+
should 'parse return value' do
|
233
|
+
assert_equal 'int64', @function.return_value.type
|
234
|
+
end
|
235
|
+
|
236
|
+
should 'produce a one liner to call function' do
|
237
|
+
Dub::Lua.bind(@function)
|
238
|
+
assert_match %r{int64\s*retval__\s*=\s*getCPUTickCount\(\);}, @function.to_s
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
context 'A method' do
|
243
|
+
setup do
|
244
|
+
# namespacecv_xml = Dub.parse(fixture('app/xml/namespacedub.xml'))
|
245
|
+
@method = namespacedub_xml[:dub][:Matrix][:size]
|
246
|
+
end
|
247
|
+
|
248
|
+
should 'know that it belongs to a class' do
|
249
|
+
assert @method.member_method?
|
250
|
+
end
|
251
|
+
|
252
|
+
should 'know if it is a constructor' do
|
253
|
+
assert !@method.constructor?
|
254
|
+
end
|
255
|
+
|
256
|
+
should 'return klass on klass' do
|
257
|
+
assert_kind_of Dub::Klass, @method.klass
|
258
|
+
end
|
259
|
+
|
260
|
+
should 'use class id_name in id_name' do
|
261
|
+
assert_equal 'dub.Matrix.size', @method.id_name
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
265
|
+
context 'A constructor' do
|
266
|
+
setup do
|
267
|
+
@method = namespacedub_xml[:dub][:Matrix][:Matrix].first
|
268
|
+
end
|
269
|
+
|
270
|
+
should 'know that it belongs to a class' do
|
271
|
+
assert @method.member_method?
|
272
|
+
end
|
273
|
+
|
274
|
+
should 'know if it is a constructor' do
|
275
|
+
assert @method.constructor?
|
276
|
+
end
|
277
|
+
|
278
|
+
should 'return class name on return_value create_type' do
|
279
|
+
assert_equal 'Matrix', @method.return_value.type
|
280
|
+
end
|
281
|
+
|
282
|
+
should 'return class name pointer on return_value create_type' do
|
283
|
+
assert_equal 'Matrix *', @method.return_value.create_type
|
284
|
+
end
|
285
|
+
|
286
|
+
context 'from a typedef bound to a generator' do
|
287
|
+
setup do
|
288
|
+
@method = namespacecv_xml[:cv][:Size].constructor.first
|
289
|
+
Dub::Lua.bind(@method)
|
290
|
+
end
|
291
|
+
|
292
|
+
should 'know that it is a constructor' do
|
293
|
+
assert @method.constructor?
|
294
|
+
end
|
295
|
+
|
296
|
+
should 'push new userdata on new' do
|
297
|
+
assert_match %r{lua_pushclass<Size>.*"cv.Size".*return 1}m, @method.generator.return_value(@method)
|
298
|
+
end
|
299
|
+
end
|
300
|
+
end
|
301
|
+
|
302
|
+
context 'A static method in a class' do
|
303
|
+
setup do
|
304
|
+
@method = namespacedub_xml[:dub][:Matrix][:MakeMatrix]
|
305
|
+
end
|
306
|
+
|
307
|
+
should 'know it is static' do
|
308
|
+
assert @method.static?
|
309
|
+
end
|
310
|
+
|
311
|
+
should 'append class in call_name' do
|
312
|
+
assert_equal 'Matrix::MakeMatrix', @method.call_name
|
313
|
+
end
|
314
|
+
|
315
|
+
should 'parse return type' do
|
316
|
+
assert_equal 'Matrix', @method.return_value.type
|
317
|
+
end
|
318
|
+
|
319
|
+
context 'bound to a generator' do
|
320
|
+
setup do
|
321
|
+
Dub::Lua.bind(@method)
|
322
|
+
end
|
323
|
+
|
324
|
+
should 'not try to find self' do
|
325
|
+
assert_no_match %r{self__}, @method.to_s
|
326
|
+
end
|
327
|
+
|
328
|
+
should 'insert the function into the namespace' do
|
329
|
+
@class = namespacedub_xml[:dub][:Matrix]
|
330
|
+
Dub::Lua.bind(@class)
|
331
|
+
result = @class.to_s
|
332
|
+
member_methods_registration = result[/Matrix_member_methods([^;]*);/,1]
|
333
|
+
namespace_methods_registration = result[/Matrix_namespace_methods([^;]*);/,1]
|
334
|
+
assert_no_match %r{Matrix_MakeMatrix}, member_methods_registration
|
335
|
+
assert_match %r{Matrix_MakeMatrix.*Matrix_MakeMatrix}, namespace_methods_registration
|
336
|
+
end
|
337
|
+
|
338
|
+
should 'use class name in call' do
|
339
|
+
assert_match %r{Matrix::MakeMatrix\(}, @method.gen.call_string(@method)
|
340
|
+
end
|
341
|
+
end
|
342
|
+
end
|
343
|
+
|
344
|
+
# This is something like template<typename T2> foo() inside a templated class
|
345
|
+
context 'A template method' do
|
346
|
+
setup do
|
347
|
+
@class = namespacecv_xml[:cv][:Scalar]
|
348
|
+
@method = @class.template_method(:convertTo)
|
349
|
+
end
|
350
|
+
|
351
|
+
should 'know it is a template' do
|
352
|
+
assert @method.template?
|
353
|
+
end
|
354
|
+
|
355
|
+
context 'bound to a generator' do
|
356
|
+
setup do
|
357
|
+
Dub::Lua.bind(@class)
|
358
|
+
end
|
359
|
+
|
360
|
+
should 'be ignored in class members' do
|
361
|
+
assert !@class.members.include?(@method)
|
362
|
+
end
|
363
|
+
end
|
364
|
+
end
|
365
|
+
|
366
|
+
context 'A method in a class defined from a template' do
|
367
|
+
setup do
|
368
|
+
@class = namespacecv_xml[:cv][:Scalar]
|
369
|
+
@method = @class[:all]
|
370
|
+
end
|
371
|
+
|
372
|
+
should 'resolve its arguments' do
|
373
|
+
assert_equal 'double', @method.arguments[0].type
|
374
|
+
assert_equal 'Scalar', @method.return_value.type
|
375
|
+
end
|
376
|
+
|
377
|
+
should 'not be seen as a template' do
|
378
|
+
assert !@method.template?
|
379
|
+
end
|
380
|
+
|
381
|
+
should 'not be seen as having complex types' do
|
382
|
+
assert !@method.has_complex_arguments?
|
383
|
+
end
|
384
|
+
|
385
|
+
context 'bound to a generator' do
|
386
|
+
setup do
|
387
|
+
Dub::Lua.bind(@class)
|
388
|
+
end
|
389
|
+
|
390
|
+
should 'not be ignored in class members' do
|
391
|
+
assert @class.members.include?(@method)
|
392
|
+
end
|
393
|
+
end
|
394
|
+
end
|
395
|
+
|
396
|
+
context 'A method in a class with templated arguments' do
|
397
|
+
setup do
|
398
|
+
@method = namespacedub_xml[:dub][:Matrix][:mul]
|
399
|
+
end
|
400
|
+
|
401
|
+
should 'respond true to has_complex_arguments' do
|
402
|
+
assert @method.has_complex_arguments?
|
403
|
+
end
|
404
|
+
end
|
405
|
+
end
|
data/test/group_test.rb
ADDED
@@ -0,0 +1,241 @@
|
|
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
|
+
subject do
|
58
|
+
namespacecv_xml[:cv][:divide]
|
59
|
+
end
|
60
|
+
|
61
|
+
should 'find a Dub::FunctionGroup' do
|
62
|
+
assert_kind_of Dub::FunctionGroup, subject
|
63
|
+
end
|
64
|
+
|
65
|
+
should 'find a group of functions' do
|
66
|
+
assert_kind_of Dub::Function, subject[0]
|
67
|
+
assert_kind_of Dub::Function, subject[1]
|
68
|
+
end
|
69
|
+
|
70
|
+
should 'group functions by name' do
|
71
|
+
assert_equal 'divide', subject[0].name
|
72
|
+
assert_equal 'divide', subject[1].name
|
73
|
+
end
|
74
|
+
|
75
|
+
should 'assign an overloaded_index to grouped functions' do
|
76
|
+
assert_equal 1, subject[0].overloaded_index
|
77
|
+
assert_equal 2, subject[1].overloaded_index
|
78
|
+
end
|
79
|
+
|
80
|
+
should 'build chooser body' do
|
81
|
+
Dub::Lua.bind(subject)
|
82
|
+
assert_match %r{cv_divide1.*cv_divide2.*cv_divide3.*cv_divide\(}m, subject.to_s
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
context 'with overloaded members' do
|
87
|
+
subject do
|
88
|
+
namespacedub_xml[:dub][:Matrix][:do_something]
|
89
|
+
end
|
90
|
+
|
91
|
+
should 'find a Dub::FunctionGroup' do
|
92
|
+
assert_kind_of Dub::FunctionGroup, subject
|
93
|
+
end
|
94
|
+
|
95
|
+
should 'find a group of functions' do
|
96
|
+
assert_kind_of Dub::Function, subject[0]
|
97
|
+
assert_kind_of Dub::Function, subject[1]
|
98
|
+
end
|
99
|
+
|
100
|
+
should 'group functions by name' do
|
101
|
+
assert_equal 'do_something', subject[0].name
|
102
|
+
assert_equal 'do_something', subject[1].name
|
103
|
+
end
|
104
|
+
|
105
|
+
should 'assign an overloaded_index to grouped functions' do
|
106
|
+
assert_equal 1, subject[0].overloaded_index
|
107
|
+
assert_equal 2, subject[1].overloaded_index
|
108
|
+
end
|
109
|
+
|
110
|
+
should 'build chooser body' do
|
111
|
+
Dub::Lua.bind(subject)
|
112
|
+
assert_match %r{Matrix_do_something1.*Matrix_do_something2.*Matrix_do_something\(}m, subject.to_s
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
context 'with overloaded constructors' do
|
117
|
+
subject do
|
118
|
+
namespacedub_xml[:dub][:Matrix][:Matrix]
|
119
|
+
end
|
120
|
+
|
121
|
+
should 'find a Dub::FunctionGroup' do
|
122
|
+
assert_kind_of Dub::FunctionGroup, subject
|
123
|
+
end
|
124
|
+
|
125
|
+
should 'find a group of functions' do
|
126
|
+
assert_kind_of Dub::Function, subject[0]
|
127
|
+
assert_kind_of Dub::Function, subject[1]
|
128
|
+
end
|
129
|
+
|
130
|
+
should 'group functions by name' do
|
131
|
+
assert_equal 'Matrix', subject[0].name
|
132
|
+
assert_equal 'Matrix', subject[1].name
|
133
|
+
end
|
134
|
+
|
135
|
+
should 'assign an overloaded_index to grouped functions' do
|
136
|
+
assert_equal 1, subject[0].overloaded_index
|
137
|
+
assert_equal 2, subject[1].overloaded_index
|
138
|
+
end
|
139
|
+
|
140
|
+
should 'build chooser body' do
|
141
|
+
Dub::Lua.bind(subject)
|
142
|
+
assert_match %r{Matrix_Matrix1.*Matrix_Matrix2.*Matrix_Matrix\(}m, subject.to_s
|
143
|
+
end
|
144
|
+
|
145
|
+
should 'choose without self delta index' do
|
146
|
+
Dub::Lua.bind(subject)
|
147
|
+
assert_match %r{top__ < 1}m, subject.generator.chooser_body(subject)
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
context 'with overloaded containing private members' do
|
152
|
+
subject do
|
153
|
+
namespacedub_xml[:dub][:PrivateConstr][:PrivateConstr]
|
154
|
+
end
|
155
|
+
|
156
|
+
should 'find a Dub::Function' do
|
157
|
+
assert_kind_of Dub::Function, subject
|
158
|
+
end
|
159
|
+
|
160
|
+
should 'not set overloaded_index' do
|
161
|
+
assert_nil subject.overloaded_index
|
162
|
+
Dub::Lua.bind(subject)
|
163
|
+
assert_no_match %r{PrivateConstr_PrivateConstr1}, subject.to_s
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
context 'A namespace with class definitions' do
|
169
|
+
setup do
|
170
|
+
@namespace = namespacedub_xml[:dub]
|
171
|
+
end
|
172
|
+
|
173
|
+
should 'find classes by array index' do
|
174
|
+
assert_kind_of Dub::Klass, @namespace[:Matrix]
|
175
|
+
end
|
176
|
+
|
177
|
+
should 'find classes with klass' do
|
178
|
+
assert_kind_of Dub::Klass, @namespace.klass('Matrix')
|
179
|
+
end
|
180
|
+
|
181
|
+
should 'return a list of classes with classes' do
|
182
|
+
assert_kind_of Array, @namespace.classes
|
183
|
+
assert_kind_of Dub::Klass, @namespace.classes.first
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
context 'A namespace with template class definitions' do
|
188
|
+
setup do
|
189
|
+
@namespace = namespacedub_xml[:dub]
|
190
|
+
end
|
191
|
+
|
192
|
+
should 'ignore template classes in class list' do
|
193
|
+
assert !@namespace.classes.map{|m| m.name}.include?("TMat")
|
194
|
+
end
|
195
|
+
|
196
|
+
should 'return template class with template_class' do
|
197
|
+
assert_kind_of Dub::Klass, @namespace.template_class('TMat')
|
198
|
+
end
|
199
|
+
|
200
|
+
should 'build a full classes for template typedefs' do
|
201
|
+
assert_kind_of Dub::Klass, @namespace.klass(:FloatMat)
|
202
|
+
end
|
203
|
+
|
204
|
+
context 'bound to a generator' do
|
205
|
+
setup do
|
206
|
+
Dub::Lua.bind(@namespace)
|
207
|
+
end
|
208
|
+
|
209
|
+
should 'generate a valid class' do
|
210
|
+
# TODO: rerun all tests for lua class generation
|
211
|
+
assert_match %r{luaL_register\(L,\s*"dub".*FMatrix}, @namespace[:FloatMat].to_s
|
212
|
+
end
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
context 'A namespace with enums' do
|
217
|
+
setup do
|
218
|
+
@namespace = namespacecv_xml[:cv]
|
219
|
+
end
|
220
|
+
|
221
|
+
should 'respond true to has_enums' do
|
222
|
+
assert @namespace.has_constants?
|
223
|
+
end
|
224
|
+
|
225
|
+
should 'produce namespaced declarations' do
|
226
|
+
assert_match %r{\{"INTER_LINEAR"\s*,\s*cv::INTER_LINEAR\}}, Dub::Lua.namespace_generator.constants_registration(@namespace)
|
227
|
+
end
|
228
|
+
|
229
|
+
context 'bound to a generator' do
|
230
|
+
setup do
|
231
|
+
Dub::Lua.bind(@namespace)
|
232
|
+
end
|
233
|
+
|
234
|
+
should 'produce enums registration' do
|
235
|
+
result = @namespace.to_s
|
236
|
+
assert_match %r{\{"INTER_LINEAR"\s*,\s*cv::INTER_LINEAR\}}, result
|
237
|
+
assert_match %r{register_constants\(L,\s*"cv",\s*cv_namespace_constants\)}, result
|
238
|
+
end
|
239
|
+
end
|
240
|
+
end
|
241
|
+
end
|