dub 0.3.0 → 0.6.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.

Files changed (405) hide show
  1. data/.gitignore +8 -0
  2. data/History.txt +20 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +53 -0
  5. data/Rakefile +58 -0
  6. data/dub.gemspec +195 -0
  7. data/lib/dub/argument.rb +273 -0
  8. data/lib/dub/entities_unescape.rb +16 -0
  9. data/lib/dub/function.rb +159 -0
  10. data/lib/dub/function_group.rb +72 -0
  11. data/lib/dub/generator.rb +15 -0
  12. data/lib/dub/group.rb +24 -0
  13. data/lib/dub/klass.rb +231 -0
  14. data/lib/dub/lua/class.cpp.erb +79 -0
  15. data/lib/dub/lua/class_gen.rb +86 -0
  16. data/lib/dub/lua/function.cpp.erb +4 -0
  17. data/lib/dub/lua/function_gen.rb +247 -0
  18. data/lib/dub/lua/group.cpp.erb +9 -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 +88 -0
  22. data/lib/dub/lua.rb +24 -0
  23. data/lib/dub/member_extraction.rb +92 -0
  24. data/lib/dub/namespace.rb +277 -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 +23 -24
  29. data/test/argument_test.rb +547 -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 +140 -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 +281 -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 +44 -0
  126. data/test/fixtures/app/xml/index.xsd +66 -0
  127. data/test/fixtures/app/xml/matrix_8h.xml +157 -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_scalar__.xml +269 -0
  132. data/test/fixtures/classcv_1_1_size__.xml +270 -0
  133. data/test/fixtures/group___magic_type.xml +406 -0
  134. data/test/fixtures/namespacecv.xml +12659 -0
  135. data/test/function_group_test.rb +24 -0
  136. data/test/function_test.rb +379 -0
  137. data/test/group_test.rb +155 -0
  138. data/test/helper.rb +34 -0
  139. data/test/klass_test.rb +372 -0
  140. data/test/lua_function_gen_test.rb +179 -0
  141. data/test/namespace_test.rb +220 -0
  142. data/test/parser_test.rb +36 -0
  143. metadata +202 -460
  144. checksums.yaml +0 -7
  145. data/lib/crystalline/metadata_fields.rb +0 -163
  146. data/lib/crystalline/t.rb +0 -59
  147. data/lib/crystalline/utils.rb +0 -65
  148. data/lib/crystalline.rb +0 -12
  149. data/lib/open_api_sdk/analytics.rb +0 -154
  150. data/lib/open_api_sdk/commissions.rb +0 -298
  151. data/lib/open_api_sdk/customers.rb +0 -709
  152. data/lib/open_api_sdk/domains.rb +0 -839
  153. data/lib/open_api_sdk/dub.rb +0 -99
  154. data/lib/open_api_sdk/embed_tokens.rb +0 -163
  155. data/lib/open_api_sdk/events.rb +0 -154
  156. data/lib/open_api_sdk/folders.rb +0 -570
  157. data/lib/open_api_sdk/links.rb +0 -1377
  158. data/lib/open_api_sdk/models/operations/accesslevel.rb +0 -18
  159. data/lib/open_api_sdk/models/operations/bulkcreatelinks_response.rb +0 -60
  160. data/lib/open_api_sdk/models/operations/bulkcreatelinks_testvariants.rb +0 -27
  161. data/lib/open_api_sdk/models/operations/bulkdeletelinks_request.rb +0 -24
  162. data/lib/open_api_sdk/models/operations/bulkdeletelinks_response.rb +0 -60
  163. data/lib/open_api_sdk/models/operations/bulkdeletelinks_responsebody.rb +0 -24
  164. data/lib/open_api_sdk/models/operations/bulkupdatelinks_requestbody.rb +0 -30
  165. data/lib/open_api_sdk/models/operations/bulkupdatelinks_response.rb +0 -60
  166. data/lib/open_api_sdk/models/operations/bulkupdatelinks_testvariants.rb +0 -27
  167. data/lib/open_api_sdk/models/operations/checkdomainstatus_request.rb +0 -24
  168. data/lib/open_api_sdk/models/operations/checkdomainstatus_response.rb +0 -60
  169. data/lib/open_api_sdk/models/operations/click.rb +0 -24
  170. data/lib/open_api_sdk/models/operations/color.rb +0 -23
  171. data/lib/open_api_sdk/models/operations/country.rb +0 -266
  172. data/lib/open_api_sdk/models/operations/createcustomer_discount.rb +0 -48
  173. data/lib/open_api_sdk/models/operations/createcustomer_link.rb +0 -39
  174. data/lib/open_api_sdk/models/operations/createcustomer_partner.rb +0 -33
  175. data/lib/open_api_sdk/models/operations/createcustomer_requestbody.rb +0 -33
  176. data/lib/open_api_sdk/models/operations/createcustomer_response.rb +0 -60
  177. data/lib/open_api_sdk/models/operations/createcustomer_responsebody.rb +0 -60
  178. data/lib/open_api_sdk/models/operations/createcustomer_type.rb +0 -18
  179. data/lib/open_api_sdk/models/operations/createdomain_requestbody.rb +0 -45
  180. data/lib/open_api_sdk/models/operations/createdomain_response.rb +0 -60
  181. data/lib/open_api_sdk/models/operations/createfolder_requestbody.rb +0 -27
  182. data/lib/open_api_sdk/models/operations/createfolder_response.rb +0 -60
  183. data/lib/open_api_sdk/models/operations/createlink_requestbody.rb +0 -145
  184. data/lib/open_api_sdk/models/operations/createlink_response.rb +0 -60
  185. data/lib/open_api_sdk/models/operations/createpartner_link.rb +0 -48
  186. data/lib/open_api_sdk/models/operations/createpartner_requestbody.rb +0 -45
  187. data/lib/open_api_sdk/models/operations/createpartner_response.rb +0 -60
  188. data/lib/open_api_sdk/models/operations/createpartner_responsebody.rb +0 -104
  189. data/lib/open_api_sdk/models/operations/createpartner_status.rb +0 -23
  190. data/lib/open_api_sdk/models/operations/createpartner_testvariants.rb +0 -27
  191. data/lib/open_api_sdk/models/operations/createpartnerlink_linkprops.rb +0 -111
  192. data/lib/open_api_sdk/models/operations/createpartnerlink_requestbody.rb +0 -39
  193. data/lib/open_api_sdk/models/operations/createpartnerlink_response.rb +0 -60
  194. data/lib/open_api_sdk/models/operations/createpartnerlink_testvariants.rb +0 -27
  195. data/lib/open_api_sdk/models/operations/createreferralsembedtoken_country.rb +0 -266
  196. data/lib/open_api_sdk/models/operations/createreferralsembedtoken_linkprops.rb +0 -111
  197. data/lib/open_api_sdk/models/operations/createreferralsembedtoken_requestbody.rb +0 -30
  198. data/lib/open_api_sdk/models/operations/createreferralsembedtoken_response.rb +0 -60
  199. data/lib/open_api_sdk/models/operations/createreferralsembedtoken_responsebody.rb +0 -27
  200. data/lib/open_api_sdk/models/operations/createreferralsembedtoken_testvariants.rb +0 -27
  201. data/lib/open_api_sdk/models/operations/createtag_requestbody.rb +0 -32
  202. data/lib/open_api_sdk/models/operations/createtag_response.rb +0 -60
  203. data/lib/open_api_sdk/models/operations/customer.rb +0 -33
  204. data/lib/open_api_sdk/models/operations/data.rb +0 -130
  205. data/lib/open_api_sdk/models/operations/deletecustomer_request.rb +0 -24
  206. data/lib/open_api_sdk/models/operations/deletecustomer_response.rb +0 -60
  207. data/lib/open_api_sdk/models/operations/deletecustomer_responsebody.rb +0 -24
  208. data/lib/open_api_sdk/models/operations/deletedomain_request.rb +0 -24
  209. data/lib/open_api_sdk/models/operations/deletedomain_response.rb +0 -60
  210. data/lib/open_api_sdk/models/operations/deletedomain_responsebody.rb +0 -24
  211. data/lib/open_api_sdk/models/operations/deletefolder_request.rb +0 -24
  212. data/lib/open_api_sdk/models/operations/deletefolder_response.rb +0 -60
  213. data/lib/open_api_sdk/models/operations/deletefolder_responsebody.rb +0 -24
  214. data/lib/open_api_sdk/models/operations/deletelink_request.rb +0 -24
  215. data/lib/open_api_sdk/models/operations/deletelink_response.rb +0 -60
  216. data/lib/open_api_sdk/models/operations/deletelink_responsebody.rb +0 -24
  217. data/lib/open_api_sdk/models/operations/deletetag_request.rb +0 -24
  218. data/lib/open_api_sdk/models/operations/deletetag_response.rb +0 -60
  219. data/lib/open_api_sdk/models/operations/deletetag_responsebody.rb +0 -24
  220. data/lib/open_api_sdk/models/operations/discount.rb +0 -48
  221. data/lib/open_api_sdk/models/operations/event.rb +0 -20
  222. data/lib/open_api_sdk/models/operations/getcustomer_discount.rb +0 -48
  223. data/lib/open_api_sdk/models/operations/getcustomer_link.rb +0 -39
  224. data/lib/open_api_sdk/models/operations/getcustomer_partner.rb +0 -33
  225. data/lib/open_api_sdk/models/operations/getcustomer_request.rb +0 -27
  226. data/lib/open_api_sdk/models/operations/getcustomer_response.rb +0 -60
  227. data/lib/open_api_sdk/models/operations/getcustomer_responsebody.rb +0 -60
  228. data/lib/open_api_sdk/models/operations/getcustomer_type.rb +0 -18
  229. data/lib/open_api_sdk/models/operations/getcustomers_link.rb +0 -39
  230. data/lib/open_api_sdk/models/operations/getcustomers_partner.rb +0 -33
  231. data/lib/open_api_sdk/models/operations/getcustomers_queryparam_sortby.rb +0 -18
  232. data/lib/open_api_sdk/models/operations/getcustomers_queryparam_sortorder.rb +0 -18
  233. data/lib/open_api_sdk/models/operations/getcustomers_request.rb +0 -51
  234. data/lib/open_api_sdk/models/operations/getcustomers_response.rb +0 -60
  235. data/lib/open_api_sdk/models/operations/getcustomers_responsebody.rb +0 -60
  236. data/lib/open_api_sdk/models/operations/getcustomers_type.rb +0 -18
  237. data/lib/open_api_sdk/models/operations/getlinkinfo_request.rb +0 -33
  238. data/lib/open_api_sdk/models/operations/getlinkinfo_response.rb +0 -60
  239. data/lib/open_api_sdk/models/operations/getlinks_request.rb +0 -66
  240. data/lib/open_api_sdk/models/operations/getlinks_response.rb +0 -60
  241. data/lib/open_api_sdk/models/operations/getlinkscount_request.rb +0 -54
  242. data/lib/open_api_sdk/models/operations/getlinkscount_response.rb +0 -60
  243. data/lib/open_api_sdk/models/operations/getqrcode_request.rb +0 -48
  244. data/lib/open_api_sdk/models/operations/getqrcode_response.rb +0 -60
  245. data/lib/open_api_sdk/models/operations/gettags_queryparam_sortby.rb +0 -18
  246. data/lib/open_api_sdk/models/operations/gettags_queryparam_sortorder.rb +0 -18
  247. data/lib/open_api_sdk/models/operations/gettags_request.rb +0 -39
  248. data/lib/open_api_sdk/models/operations/gettags_response.rb +0 -60
  249. data/lib/open_api_sdk/models/operations/getworkspace_request.rb +0 -24
  250. data/lib/open_api_sdk/models/operations/getworkspace_response.rb +0 -60
  251. data/lib/open_api_sdk/models/operations/groupby.rb +0 -37
  252. data/lib/open_api_sdk/models/operations/interval.rb +0 -25
  253. data/lib/open_api_sdk/models/operations/level.rb +0 -20
  254. data/lib/open_api_sdk/models/operations/link.rb +0 -48
  255. data/lib/open_api_sdk/models/operations/linkprops.rb +0 -111
  256. data/lib/open_api_sdk/models/operations/listcommissions_queryparam_interval.rb +0 -25
  257. data/lib/open_api_sdk/models/operations/listcommissions_queryparam_sortby.rb +0 -18
  258. data/lib/open_api_sdk/models/operations/listcommissions_queryparam_sortorder.rb +0 -18
  259. data/lib/open_api_sdk/models/operations/listcommissions_request.rb +0 -60
  260. data/lib/open_api_sdk/models/operations/listcommissions_response.rb +0 -60
  261. data/lib/open_api_sdk/models/operations/listcommissions_responsebody.rb +0 -51
  262. data/lib/open_api_sdk/models/operations/listcommissions_status.rb +0 -23
  263. data/lib/open_api_sdk/models/operations/listcommissions_type.rb +0 -20
  264. data/lib/open_api_sdk/models/operations/listdomains_request.rb +0 -33
  265. data/lib/open_api_sdk/models/operations/listdomains_response.rb +0 -60
  266. data/lib/open_api_sdk/models/operations/listevents_request.rb +0 -138
  267. data/lib/open_api_sdk/models/operations/listevents_response.rb +0 -60
  268. data/lib/open_api_sdk/models/operations/listfolders_request.rb +0 -30
  269. data/lib/open_api_sdk/models/operations/listfolders_response.rb +0 -60
  270. data/lib/open_api_sdk/models/operations/mode.rb +0 -18
  271. data/lib/open_api_sdk/models/operations/order.rb +0 -20
  272. data/lib/open_api_sdk/models/operations/partner.rb +0 -45
  273. data/lib/open_api_sdk/models/operations/paymentprocessor.rb +0 -21
  274. data/lib/open_api_sdk/models/operations/queryparam_event.rb +0 -19
  275. data/lib/open_api_sdk/models/operations/queryparam_groupby.rb +0 -19
  276. data/lib/open_api_sdk/models/operations/queryparam_interval.rb +0 -25
  277. data/lib/open_api_sdk/models/operations/queryparam_sortby.rb +0 -17
  278. data/lib/open_api_sdk/models/operations/queryparam_sortorder.rb +0 -18
  279. data/lib/open_api_sdk/models/operations/queryparam_status.rb +0 -23
  280. data/lib/open_api_sdk/models/operations/queryparam_trigger.rb +0 -18
  281. data/lib/open_api_sdk/models/operations/registerdomain_requestbody.rb +0 -24
  282. data/lib/open_api_sdk/models/operations/registerdomain_response.rb +0 -60
  283. data/lib/open_api_sdk/models/operations/registerdomain_responsebody.rb +0 -30
  284. data/lib/open_api_sdk/models/operations/requestbody.rb +0 -145
  285. data/lib/open_api_sdk/models/operations/responsebody.rb +0 -33
  286. data/lib/open_api_sdk/models/operations/retrieveanalytics_request.rb +0 -126
  287. data/lib/open_api_sdk/models/operations/retrieveanalytics_response.rb +0 -60
  288. data/lib/open_api_sdk/models/operations/retrievelinks_request.rb +0 -27
  289. data/lib/open_api_sdk/models/operations/retrievelinks_response.rb +0 -60
  290. data/lib/open_api_sdk/models/operations/retrievepartneranalytics_queryparam_interval.rb +0 -25
  291. data/lib/open_api_sdk/models/operations/retrievepartneranalytics_request.rb +0 -42
  292. data/lib/open_api_sdk/models/operations/retrievepartneranalytics_response.rb +0 -60
  293. data/lib/open_api_sdk/models/operations/sale.rb +0 -36
  294. data/lib/open_api_sdk/models/operations/sort.rb +0 -22
  295. data/lib/open_api_sdk/models/operations/sortby.rb +0 -20
  296. data/lib/open_api_sdk/models/operations/sortorder.rb +0 -18
  297. data/lib/open_api_sdk/models/operations/status.rb +0 -20
  298. data/lib/open_api_sdk/models/operations/testvariants.rb +0 -27
  299. data/lib/open_api_sdk/models/operations/tracklead_requestbody.rb +0 -48
  300. data/lib/open_api_sdk/models/operations/tracklead_response.rb +0 -60
  301. data/lib/open_api_sdk/models/operations/tracklead_responsebody.rb +0 -27
  302. data/lib/open_api_sdk/models/operations/tracksale_customer.rb +0 -36
  303. data/lib/open_api_sdk/models/operations/tracksale_requestbody.rb +0 -45
  304. data/lib/open_api_sdk/models/operations/tracksale_response.rb +0 -60
  305. data/lib/open_api_sdk/models/operations/tracksale_responsebody.rb +0 -30
  306. data/lib/open_api_sdk/models/operations/trigger.rb +0 -18
  307. data/lib/open_api_sdk/models/operations/type.rb +0 -20
  308. data/lib/open_api_sdk/models/operations/updatecommission_request.rb +0 -27
  309. data/lib/open_api_sdk/models/operations/updatecommission_requestbody.rb +0 -33
  310. data/lib/open_api_sdk/models/operations/updatecommission_response.rb +0 -60
  311. data/lib/open_api_sdk/models/operations/updatecommission_responsebody.rb +0 -51
  312. data/lib/open_api_sdk/models/operations/updatecommission_status.rb +0 -23
  313. data/lib/open_api_sdk/models/operations/updatecommission_type.rb +0 -20
  314. data/lib/open_api_sdk/models/operations/updatecustomer_discount.rb +0 -48
  315. data/lib/open_api_sdk/models/operations/updatecustomer_link.rb +0 -39
  316. data/lib/open_api_sdk/models/operations/updatecustomer_partner.rb +0 -33
  317. data/lib/open_api_sdk/models/operations/updatecustomer_request.rb +0 -30
  318. data/lib/open_api_sdk/models/operations/updatecustomer_requestbody.rb +0 -33
  319. data/lib/open_api_sdk/models/operations/updatecustomer_response.rb +0 -60
  320. data/lib/open_api_sdk/models/operations/updatecustomer_responsebody.rb +0 -60
  321. data/lib/open_api_sdk/models/operations/updatecustomer_type.rb +0 -18
  322. data/lib/open_api_sdk/models/operations/updatedomain_request.rb +0 -27
  323. data/lib/open_api_sdk/models/operations/updatedomain_requestbody.rb +0 -45
  324. data/lib/open_api_sdk/models/operations/updatedomain_response.rb +0 -60
  325. data/lib/open_api_sdk/models/operations/updatefolder_accesslevel.rb +0 -18
  326. data/lib/open_api_sdk/models/operations/updatefolder_request.rb +0 -27
  327. data/lib/open_api_sdk/models/operations/updatefolder_requestbody.rb +0 -27
  328. data/lib/open_api_sdk/models/operations/updatefolder_response.rb +0 -60
  329. data/lib/open_api_sdk/models/operations/updatelink_request.rb +0 -27
  330. data/lib/open_api_sdk/models/operations/updatelink_requestbody.rb +0 -139
  331. data/lib/open_api_sdk/models/operations/updatelink_response.rb +0 -60
  332. data/lib/open_api_sdk/models/operations/updatelink_testvariants.rb +0 -27
  333. data/lib/open_api_sdk/models/operations/updatetag_color.rb +0 -23
  334. data/lib/open_api_sdk/models/operations/updatetag_request.rb +0 -27
  335. data/lib/open_api_sdk/models/operations/updatetag_requestbody.rb +0 -32
  336. data/lib/open_api_sdk/models/operations/updatetag_response.rb +0 -60
  337. data/lib/open_api_sdk/models/operations/updateworkspace_request.rb +0 -27
  338. data/lib/open_api_sdk/models/operations/updateworkspace_requestbody.rb +0 -36
  339. data/lib/open_api_sdk/models/operations/updateworkspace_response.rb +0 -60
  340. data/lib/open_api_sdk/models/operations/upsertlink_requestbody.rb +0 -145
  341. data/lib/open_api_sdk/models/operations/upsertlink_response.rb +0 -60
  342. data/lib/open_api_sdk/models/operations/upsertlink_testvariants.rb +0 -27
  343. data/lib/open_api_sdk/models/operations/upsertpartnerlink_linkprops.rb +0 -111
  344. data/lib/open_api_sdk/models/operations/upsertpartnerlink_requestbody.rb +0 -39
  345. data/lib/open_api_sdk/models/operations/upsertpartnerlink_response.rb +0 -60
  346. data/lib/open_api_sdk/models/operations/upsertpartnerlink_testvariants.rb +0 -27
  347. data/lib/open_api_sdk/models/operations.rb +0 -198
  348. data/lib/open_api_sdk/models/shared/accesslevel.rb +0 -18
  349. data/lib/open_api_sdk/models/shared/badrequest.rb +0 -24
  350. data/lib/open_api_sdk/models/shared/code.rb +0 -17
  351. data/lib/open_api_sdk/models/shared/color.rb +0 -23
  352. data/lib/open_api_sdk/models/shared/conflict.rb +0 -24
  353. data/lib/open_api_sdk/models/shared/conflict_code.rb +0 -17
  354. data/lib/open_api_sdk/models/shared/conflict_error.rb +0 -30
  355. data/lib/open_api_sdk/models/shared/continentcode.rb +0 -23
  356. data/lib/open_api_sdk/models/shared/countrycode.rb +0 -266
  357. data/lib/open_api_sdk/models/shared/domains.rb +0 -30
  358. data/lib/open_api_sdk/models/shared/domainschema.rb +0 -63
  359. data/lib/open_api_sdk/models/shared/error.rb +0 -30
  360. data/lib/open_api_sdk/models/shared/folderschema.rb +0 -39
  361. data/lib/open_api_sdk/models/shared/forbidden.rb +0 -24
  362. data/lib/open_api_sdk/models/shared/forbidden_code.rb +0 -17
  363. data/lib/open_api_sdk/models/shared/forbidden_error.rb +0 -30
  364. data/lib/open_api_sdk/models/shared/geo.rb +0 -771
  365. data/lib/open_api_sdk/models/shared/internalservererror.rb +0 -24
  366. data/lib/open_api_sdk/models/shared/internalservererror_code.rb +0 -17
  367. data/lib/open_api_sdk/models/shared/internalservererror_error.rb +0 -30
  368. data/lib/open_api_sdk/models/shared/inviteexpired.rb +0 -24
  369. data/lib/open_api_sdk/models/shared/inviteexpired_code.rb +0 -17
  370. data/lib/open_api_sdk/models/shared/inviteexpired_error.rb +0 -30
  371. data/lib/open_api_sdk/models/shared/linkgeotargeting.rb +0 -771
  372. data/lib/open_api_sdk/models/shared/linkschema.rb +0 -172
  373. data/lib/open_api_sdk/models/shared/notfound.rb +0 -24
  374. data/lib/open_api_sdk/models/shared/notfound_code.rb +0 -17
  375. data/lib/open_api_sdk/models/shared/notfound_error.rb +0 -30
  376. data/lib/open_api_sdk/models/shared/plan.rb +0 -24
  377. data/lib/open_api_sdk/models/shared/ratelimitexceeded.rb +0 -24
  378. data/lib/open_api_sdk/models/shared/ratelimitexceeded_code.rb +0 -17
  379. data/lib/open_api_sdk/models/shared/ratelimitexceeded_error.rb +0 -30
  380. data/lib/open_api_sdk/models/shared/registereddomain.rb +0 -30
  381. data/lib/open_api_sdk/models/shared/role.rb +0 -18
  382. data/lib/open_api_sdk/models/shared/security.rb +0 -24
  383. data/lib/open_api_sdk/models/shared/tagschema.rb +0 -30
  384. data/lib/open_api_sdk/models/shared/testvariants.rb +0 -27
  385. data/lib/open_api_sdk/models/shared/type.rb +0 -18
  386. data/lib/open_api_sdk/models/shared/unauthorized.rb +0 -24
  387. data/lib/open_api_sdk/models/shared/unauthorized_code.rb +0 -17
  388. data/lib/open_api_sdk/models/shared/unauthorized_error.rb +0 -30
  389. data/lib/open_api_sdk/models/shared/unprocessableentity.rb +0 -24
  390. data/lib/open_api_sdk/models/shared/unprocessableentity_code.rb +0 -17
  391. data/lib/open_api_sdk/models/shared/unprocessableentity_error.rb +0 -30
  392. data/lib/open_api_sdk/models/shared/users.rb +0 -27
  393. data/lib/open_api_sdk/models/shared/workspaceschema.rb +0 -123
  394. data/lib/open_api_sdk/models/shared.rb +0 -55
  395. data/lib/open_api_sdk/partners.rb +0 -701
  396. data/lib/open_api_sdk/qr_codes.rb +0 -151
  397. data/lib/open_api_sdk/sdk_hooks/hooks.rb +0 -103
  398. data/lib/open_api_sdk/sdk_hooks/registration.rb +0 -35
  399. data/lib/open_api_sdk/sdk_hooks/types.rb +0 -152
  400. data/lib/open_api_sdk/sdkconfiguration.rb +0 -75
  401. data/lib/open_api_sdk/tags.rb +0 -570
  402. data/lib/open_api_sdk/track.rb +0 -302
  403. data/lib/open_api_sdk/utils/retries.rb +0 -95
  404. data/lib/open_api_sdk/utils/utils.rb +0 -738
  405. data/lib/open_api_sdk/workspaces.rb +0 -301
@@ -0,0 +1,372 @@
1
+ require 'helper'
2
+ require 'dub/lua'
3
+
4
+ class KlassTest < Test::Unit::TestCase
5
+
6
+ context 'A Klass' do
7
+ setup do
8
+ # namespacecv_xml = Dub.parse(fixture('app/xml/namespacedub.xml'))
9
+ @class = namespacedub_xml[:dub][:Matrix]
10
+ end
11
+
12
+ should 'return a list of Functions with members' do
13
+ assert_kind_of Array, @class.members
14
+ assert_kind_of Dub::Function, @class.members.first
15
+ end
16
+
17
+ should 'return name with name' do
18
+ assert_equal 'Matrix', @class.name
19
+ end
20
+
21
+ should 'have namespace prefix' do
22
+ assert_equal 'dub', @class.prefix
23
+ end
24
+
25
+ should 'combine prefix and name in lib_name' do
26
+ assert_equal 'dub_Matrix', @class.lib_name
27
+ end
28
+
29
+ should 'combine prefix and name in id_name' do
30
+ assert_equal 'dub.Matrix', @class.id_name
31
+ end
32
+
33
+ should 'combine prefix and provided name in id_name' do
34
+ assert_equal 'dub.Foobar', @class.id_name('Foobar')
35
+ end
36
+
37
+ should 'use parent namespace in full_type' do
38
+ assert_equal 'dub::Matrix', @class.full_type
39
+ end
40
+
41
+ should 'return file and line on source' do
42
+ assert_match %r{app/include/matrix\.h:\d+}, @class.source
43
+ end
44
+
45
+ should 'return a list of class methods' do
46
+ assert_kind_of Array, @class.class_methods
47
+ end
48
+
49
+ context 'with a bound member list' do
50
+ setup do
51
+ Dub::Lua.bind(@class)
52
+ @list = @class.members.map {|m| m.name}
53
+ end
54
+
55
+ should 'remove destructor from member list' do
56
+ assert !@list.include?("~Matrix")
57
+ end
58
+
59
+ should 'remove constructor from member list' do
60
+ assert !@list.include?("Matrix")
61
+ end
62
+
63
+ should 'ignore template methods in member list' do
64
+ assert !@list.include?("give_me_tea")
65
+ end
66
+
67
+ should 'ignore members with templated arguments' do
68
+ # at least for now
69
+ assert !@list.include?("mul")
70
+ assert_no_match %r{Matrix_mul}, @class.to_s
71
+ end
72
+
73
+ should 'ignore operator methods in member list' do
74
+ assert !@list.include?("operator size_t")
75
+ end
76
+
77
+ should 'ignore members returning native pointers' do
78
+ assert !@list.include?("ptr")
79
+ end
80
+ end
81
+
82
+ should 'return constructor with constructor' do
83
+ const = @class.constructor
84
+ assert_kind_of Dub::Function, const.first
85
+ end
86
+
87
+ should 'respond to destructor_name' do
88
+ assert_equal 'Matrix_destructor', @class.destructor_name
89
+ end
90
+
91
+ should 'respond to tostring_name' do
92
+ assert_equal 'Matrix__tostring', @class.tostring_name
93
+ end
94
+
95
+ should 'respond to constructor.method_name' do
96
+ assert_equal 'Matrix_Matrix', @class.constructor.method_name(0)
97
+ end
98
+
99
+ should 'find method with array index' do
100
+ assert_kind_of Dub::Function, @class[:rows]
101
+ end
102
+
103
+ should 'find static methods with array index' do
104
+ assert_kind_of Dub::Function, @class[:MakeMatrix]
105
+ end
106
+
107
+ should 'return header name on header' do
108
+ assert_equal 'matrix.h', @class.header
109
+ end
110
+
111
+ should 'return defined header if changed' do
112
+ klass = Dub.parse(fixture('app/xml/namespacedub.xml'))[:dub][:Matrix]
113
+ klass.header = 'opencv/cv.h'
114
+ assert_equal 'opencv/cv.h', klass.header
115
+ end
116
+
117
+ should 'know that it is not a template' do
118
+ assert !@class.template?
119
+ end
120
+
121
+ context 'bound to a generator' do
122
+ setup do
123
+ Dub::Lua.bind(@class)
124
+ end
125
+
126
+ should 'bind each member' do
127
+ assert_equal Dub::Lua.function_generator, @class.members.first.gen
128
+ end
129
+
130
+ should 'register constructor' do
131
+ assert_match %r{\{\s*\"Matrix\"\s*,\s*Matrix_Matrix\s*\}}, @class.to_s
132
+ end
133
+
134
+ should 'build constructor' do
135
+ result = @class.to_s
136
+ assert_match %r{static int Matrix_Matrix1\s*\(}, result
137
+ assert_match %r{static int Matrix_Matrix2\s*\(}, result
138
+ assert_match %r{static int Matrix_Matrix\s*\(}, result
139
+ end
140
+
141
+ should 'return new objects in constructors' do
142
+ @class = namespacecv_xml[:cv][:Mat]
143
+ Dub::Lua.bind(@class)
144
+ assert_match %r{lua_pushclass<Mat>.*"cv.Mat"}, @class.constructor.first.to_s
145
+ end
146
+
147
+ should 'include class header' do
148
+ assert_match %r{#include\s+"matrix.h"}, @class.to_s
149
+ end
150
+
151
+ should 'include helper header' do
152
+ assert_match %r{#include\s+"lua_cpp_helper.h"}, @class.to_s
153
+ end
154
+
155
+ should 'create Lua metatable with class name' do
156
+ assert_match %r{luaL_newmetatable\(L,\s*"dub.Matrix"\)}, @class.to_s
157
+ end
158
+
159
+ should 'not build template methods' do
160
+ assert_no_match %r{give_me_tea}, @class.to_s
161
+ end
162
+
163
+ should 'declare tostring' do
164
+ assert_match %r{__tostring}, @class.to_s
165
+ end
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
+
178
+ should 'implement tostring' do
179
+ assert_match %r{Matrix__tostring\(lua_State}, @class.to_s
180
+ end
181
+ end
182
+ end
183
+
184
+ context 'A template class' do
185
+ setup do
186
+ # namespacecv_xml = Dub.parse(fixture('app/xml/namespacedub.xml'))
187
+ @class = namespacedub_xml[:dub].template_class(:TMat)
188
+ end
189
+
190
+ should 'know that it is a template' do
191
+ assert @class.template?
192
+ end
193
+
194
+ should 'return template parameters' do
195
+ assert_equal ['T'], @class.template_params
196
+ end
197
+ end
198
+
199
+ context 'A class defined from a template' do
200
+ setup do
201
+ @class = namespacecv_xml[:cv][:Size]
202
+ end
203
+
204
+ should 'replace template parameter in method arguments' do
205
+ Dub::Lua.bind(@class)
206
+ assert_match %r{int *_width}, @class.to_s
207
+ end
208
+
209
+ should 'register in the template for these types' do
210
+ @tclass = namespacecv_xml[:cv].template_class(:Size_)
211
+ assert_equal @class, @tclass.instanciations[['int']]
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
259
+ end
260
+
261
+ context 'A class with alias names' do
262
+ setup do
263
+ # namespacecv_xml = Dub.parse(fixture('app/xml/namespacedub.xml'))
264
+ @class = namespacedub_xml[:dub][:FloatMat]
265
+ end
266
+
267
+ should 'return a list of these alias on alias_names' do
268
+ assert_equal ['FloatMat'], @class.alias_names
269
+ assert_equal 'FMatrix', @class.name
270
+ end
271
+
272
+ should 'find class from alias in namespace' do
273
+ assert_equal @class, namespacedub_xml[:dub][:FMatrix]
274
+ end
275
+
276
+ should 'use the shortest alias as main name' do
277
+ assert_equal 'Size', namespacecv_xml[:cv][:Size2i].name
278
+ end
279
+
280
+ should 'rename constructors to shortest name' do
281
+ assert_equal 'Size', namespacecv_xml[:cv][:Size].constructor.name
282
+ end
283
+
284
+ should 'parse arguments and evaluate types by resolving template params' do
285
+ size_class = namespacecv_xml[:cv][:Size]
286
+ Dub::Lua.bind(size_class)
287
+ assert_match %r{const Point \*pt}, size_class.constructor[5].to_s
288
+ end
289
+
290
+ context 'bound to a generator' do
291
+ setup do
292
+ Dub::Lua.bind(@class)
293
+ end
294
+
295
+ should 'register all alias_names' do
296
+ result = @class.to_s
297
+ assert_match %r{"FloatMat"\s*,\s*FMatrix_FMatrix}, result
298
+ assert_match %r{"FMatrix"\s*,\s*FMatrix_FMatrix}, result
299
+ assert_match %r{luaL_register\(L,\s*"dub".*FMatrix_namespace_methods}, result
300
+ end
301
+
302
+ should 'use the smallest name in method definition' do
303
+ assert_match %r{int FMatrix_FMatrix}, @class.to_s
304
+ end
305
+ end
306
+ end
307
+
308
+ context 'A class with overloaded methods' do
309
+ setup do
310
+ # namespacecv_xml = Dub.parse(fixture('app/xml/namespacedub.xml'))
311
+ @class = namespacecv_xml[:cv][:Mat]
312
+ Dub::Lua.bind(@class)
313
+ end
314
+
315
+ should 'declare chooser' do
316
+ result = @class.gen.method_registration(@class)
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
332
+ assert_no_match %r{zeros1}, result
333
+ end
334
+ end
335
+
336
+ context 'A complex class' do
337
+ setup do
338
+ # namespacecv_xml = Dub.parse(fixture('app/xml/namespacedub.xml'))
339
+ @class = namespacecv_xml[:cv][:Mat]
340
+ end
341
+
342
+ context 'bound to a generator' do
343
+ setup do
344
+ Dub::Lua.bind(@class)
345
+ end
346
+
347
+ should 'list all members on members' do
348
+ assert_equal %w{addref adjustROI assignTo channels clone col colRange convertTo copyTo create cross depth diag dot elemSize elemSize1 empty eye isContinuous locateROI ones release reshape row rowRange setTo size step1 type zeros}, @class.members.map {|m| m.name}
349
+ end
350
+ end
351
+ end
352
+
353
+ context 'A class with enums' do
354
+ setup do
355
+ # namespacecv_xml = Dub.parse(fixture('app/xml/namespacedub.xml'))
356
+ @class = namespacecv_xml[:cv][:Mat]
357
+ end
358
+
359
+ should 'respond true to has_enums' do
360
+ assert @class.has_constants?
361
+ end
362
+
363
+ should 'produce namespaced declarations' do
364
+ assert_match %r{\{"AUTO_STEP"\s*,\s*cv::Mat::AUTO_STEP\}}, Dub::Lua.class_generator.constants_registration(@class)
365
+ end
366
+
367
+ should 'find a list of enums' do
368
+ assert_equal %w{MAGIC_VAL AUTO_STEP CONTINUOUS_FLAG}, @class.enums
369
+ end
370
+ end
371
+
372
+ end
@@ -0,0 +1,179 @@
1
+ require 'helper'
2
+ require 'dub/lua'
3
+
4
+ class LuaFunctionGenTest < Test::Unit::TestCase
5
+ context 'A Lua generator' do
6
+ setup do
7
+ @generator = Dub::Lua
8
+ end
9
+
10
+ context 'with a function' do
11
+ setup do
12
+ # namespacecv_xml = Dub.parse(fixture('namespacecv.xml'))
13
+ @function = namespacecv_xml[:cv][:resize]
14
+ end
15
+
16
+ should 'return Function on bind' do
17
+ assert_kind_of Dub::Function, @generator.bind(@function)
18
+ end
19
+ end
20
+ end
21
+
22
+ context 'A Function' do
23
+ setup do
24
+ @function = namespacecv_xml[:cv][:resize]
25
+ end
26
+
27
+ context 'bound to a Lua generator' do
28
+ setup do
29
+ Dub::Lua.bind(@function)
30
+ @generator = Dub::Lua.function_generator
31
+ end
32
+
33
+
34
+ should 'return string on to_s' do
35
+ assert_kind_of String, @function.to_s
36
+ end
37
+
38
+ should 'generate a static function returning an int' do
39
+ assert_match %r{static int cv_resize}, @function.to_s
40
+ end
41
+
42
+ should 'insert code to check for an arguments on get_arg' do
43
+ assert_match /Mat.*\*\s*src\s*=\s*\*\(\(const\s+Mat\s+\*\*\)\s*luaL_checkudata\s*\(L,\s*1,\s*\"cv\.Mat\"\s*\)\)\s*;/,
44
+ @generator.get_arg(@function.arguments.first, 1) # 1 = first argument in Lua stack
45
+ end
46
+
47
+ context 'with default values' do
48
+ should 'verify stack size' do
49
+ assert_match /top__\s*<\s*6/, @generator.function(@function)
50
+ end
51
+ end
52
+
53
+ context 'in a class with a class as parameter' do
54
+ setup do
55
+ @function = namespacecv_xml[:cv][:Mat][:locateROI]
56
+ end
57
+
58
+ should 'use parameter class identifier' do
59
+ assert_match /Size\s*\*\*\)luaL_checkudata\s*\(L,\s*1,\s*\"cv\.Size\"\s*\)\)\s*;/,
60
+ @generator.get_arg(@function.arguments.first, 1) # 1 = first argument in Lua stack
61
+ end
62
+ end
63
+ end
64
+ end
65
+
66
+ context 'A group of overloaded functions' do
67
+ setup do
68
+ # namespacecv_xml = Dub.parse(fixture('namespacecv.xml'))
69
+ @function_group = namespacecv_xml[:cv][:divide]
70
+ end
71
+
72
+ context 'bound to a Lua generator' do
73
+ setup do
74
+ Dub::Lua.bind(@function_group)
75
+ end
76
+
77
+ should 'return string content on to_s' do
78
+ assert_kind_of String, @function_group.to_s
79
+ end
80
+
81
+ should 'generate a static function returning an int' do
82
+ assert_match %r{static int cv_divide}, @function_group.to_s
83
+ end
84
+
85
+ should 'generate a static function returning an int for each overloaded function' do
86
+ bindings = @function_group.to_s
87
+ assert_match %r{static int cv_divide1}, bindings
88
+ assert_match %r{static int cv_divide2}, bindings
89
+ assert_match %r{static int cv_divide3}, bindings
90
+ assert_match %r{static int cv_divide4}, bindings
91
+ end
92
+
93
+ # should 'declare chooser' do
94
+ # assert_match %r{"divide",\s*cv_divide\}}, @group.to_s
95
+ # end
96
+ end
97
+ end
98
+
99
+ context 'A function with a custom class return value' do
100
+ setup do
101
+ # namespacecv_xml = Dub.parse(fixture('namespacecv.xml'))
102
+ @function = namespacecv_xml[:cv][:getRotationMatrix2D]
103
+ end
104
+
105
+ context 'bound to a Lua generator' do
106
+ setup do
107
+ Dub::Lua.bind(@function)
108
+ end
109
+
110
+ should 'call template push method' do
111
+ assert_match %r{lua_pushclass<Mat>\(\s*L\s*,\s*retval__\s*,\s*"cv.Mat"\s*\)}, @function.to_s
112
+ end
113
+ end
114
+ end
115
+
116
+ context 'A function with pointer parameters' do
117
+ setup do
118
+ # namespacecv_xml = Dub.parse(fixture('namespacecv.xml'))
119
+ @function = namespacecv_xml[:cv][:calcHist][0]
120
+ end
121
+
122
+ context 'bound to a Lua generator' do
123
+ setup do
124
+ Dub::Lua.bind(@function)
125
+ end
126
+
127
+ should 'use a DubArgPointer with the given type' do
128
+ assert_match %r{DubArgPointer<int>}, @function.to_s
129
+ end
130
+ end
131
+ end
132
+
133
+ context 'A member function bound to a Lua generator' do
134
+ setup do
135
+ @member = namespacedub_xml[:dub][:Matrix][:rows]
136
+ Dub::Lua.bind(@member)
137
+ end
138
+
139
+ should 'start by getting self' do
140
+ assert_match %r{self__\s*=\s*\*\(\(Matrix\*\*\)luaL_checkudata}, @member.to_s
141
+ end
142
+
143
+ should 'prefix call with self' do
144
+ assert_match %r{self__->rows\(}, @member.to_s
145
+ end
146
+ end
147
+
148
+ context 'A constructor bound to a Lua generator' do
149
+ setup do
150
+ @constructor = namespacedub_xml[:dub][:Matrix][:Matrix].first
151
+ Dub::Lua.bind(@constructor)
152
+ end
153
+
154
+ should 'use pushclass in constructor' do
155
+ result = @constructor.to_s
156
+ assert_match %r{lua_pushclass<Matrix>\s*\(L, retval__, \"dub.Matrix\"\s*\)}, result
157
+ end
158
+ end
159
+
160
+ context 'A function without return value' do
161
+ setup do
162
+ @function = namespacecv_xml[:cv][:blur]
163
+ end
164
+
165
+ context 'bound to a Lua generator' do
166
+ setup do
167
+ Dub::Lua.bind(@function)
168
+ end
169
+
170
+ should 'return 0' do
171
+ assert_match %r{return\s+0}, @function.to_s
172
+ end
173
+ end
174
+ end
175
+ end
176
+
177
+
178
+
179
+