opal 0.11.0.rc1 → 0.11.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.
Files changed (493) hide show
  1. checksums.yaml +4 -4
  2. data/.jshintrc +1 -1
  3. data/.travis.yml +14 -2
  4. data/CHANGELOG.md +30 -5
  5. data/HACKING.md +2 -2
  6. data/README.md +4 -5
  7. data/appveyor.yml +3 -4
  8. data/bin +1 -0
  9. data/docs/headless_chrome.md +105 -0
  10. data/docs/rspec.md +2 -19
  11. data/{bin → exe}/opal +0 -0
  12. data/{bin → exe}/opal-build +0 -0
  13. data/{bin → exe}/opal-mspec +0 -0
  14. data/{bin → exe}/opal-repl +0 -0
  15. data/lib/opal.rb +1 -0
  16. data/lib/opal/ast/builder.rb +0 -4
  17. data/lib/opal/builder.rb +69 -15
  18. data/lib/opal/builder_processors.rb +8 -7
  19. data/lib/opal/cli.rb +1 -1
  20. data/lib/opal/cli_options.rb +1 -1
  21. data/lib/opal/cli_runners.rb +1 -1
  22. data/lib/opal/cli_runners/applescript.rb +0 -1
  23. data/lib/opal/cli_runners/chrome.js +135 -0
  24. data/lib/opal/cli_runners/chrome.rb +100 -0
  25. data/lib/opal/cli_runners/nashorn.rb +0 -1
  26. data/lib/opal/cli_runners/node_modules/.bin/chrome-remote-interface +1 -0
  27. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/LICENSE +18 -0
  28. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/README.md +843 -0
  29. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/bin/client.js +326 -0
  30. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/chrome-remote-interface.js +11 -0
  31. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/index.js +39 -0
  32. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/api.js +84 -0
  33. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/chrome.js +289 -0
  34. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/defaults.js +4 -0
  35. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/devtools.js +245 -0
  36. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/external-request.js +23 -0
  37. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/protocol.json +13303 -0
  38. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/lib/websocket-wrapper.js +32 -0
  39. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/package.json +128 -0
  40. data/lib/opal/cli_runners/node_modules/chrome-remote-interface/webpack.config.js +55 -0
  41. data/lib/opal/cli_runners/node_modules/commander/Readme.md +195 -0
  42. data/lib/opal/cli_runners/node_modules/commander/index.js +851 -0
  43. data/lib/opal/cli_runners/node_modules/commander/package.json +92 -0
  44. data/lib/opal/cli_runners/node_modules/ultron/LICENSE +22 -0
  45. data/lib/opal/cli_runners/node_modules/ultron/index.js +138 -0
  46. data/lib/opal/cli_runners/node_modules/ultron/package.json +112 -0
  47. data/lib/opal/cli_runners/node_modules/ws/LICENSE +21 -0
  48. data/lib/opal/cli_runners/node_modules/ws/README.md +259 -0
  49. data/lib/opal/cli_runners/node_modules/ws/SECURITY.md +33 -0
  50. data/lib/opal/cli_runners/node_modules/ws/index.js +15 -0
  51. data/lib/opal/cli_runners/node_modules/ws/lib/BufferUtil.fallback.js +56 -0
  52. data/lib/opal/cli_runners/node_modules/ws/lib/BufferUtil.js +15 -0
  53. data/lib/opal/cli_runners/node_modules/ws/lib/ErrorCodes.js +28 -0
  54. data/lib/opal/cli_runners/node_modules/ws/lib/EventTarget.js +158 -0
  55. data/lib/opal/cli_runners/node_modules/ws/lib/Extensions.js +69 -0
  56. data/lib/opal/cli_runners/node_modules/ws/lib/PerMessageDeflate.js +339 -0
  57. data/lib/opal/cli_runners/node_modules/ws/lib/Receiver.js +520 -0
  58. data/lib/opal/cli_runners/node_modules/ws/lib/Sender.js +438 -0
  59. data/lib/opal/cli_runners/node_modules/ws/lib/Validation.fallback.js +9 -0
  60. data/lib/opal/cli_runners/node_modules/ws/lib/Validation.js +17 -0
  61. data/lib/opal/cli_runners/node_modules/ws/lib/WebSocket.js +705 -0
  62. data/lib/opal/cli_runners/node_modules/ws/lib/WebSocketServer.js +336 -0
  63. data/lib/opal/cli_runners/node_modules/ws/package.json +122 -0
  64. data/lib/opal/cli_runners/nodejs.rb +0 -1
  65. data/lib/opal/cli_runners/package.json +5 -0
  66. data/lib/opal/cli_runners/server.rb +0 -1
  67. data/lib/opal/compiler.rb +8 -18
  68. data/lib/opal/deprecations.rb +1 -1
  69. data/lib/opal/eof_content.rb +36 -0
  70. data/lib/opal/nodes.rb +0 -1
  71. data/lib/opal/nodes/args/kwarg.rb +8 -6
  72. data/lib/opal/nodes/args/kwoptarg.rb +12 -6
  73. data/lib/opal/nodes/call.rb +3 -2
  74. data/lib/opal/nodes/call_special.rb +10 -1
  75. data/lib/opal/nodes/definitions.rb +5 -3
  76. data/lib/opal/nodes/helpers.rb +4 -8
  77. data/lib/opal/nodes/literal.rb +13 -1
  78. data/lib/opal/nodes/logic.rb +19 -32
  79. data/lib/opal/nodes/node_with_args.rb +1 -1
  80. data/lib/opal/nodes/scope.rb +1 -0
  81. data/lib/opal/nodes/super.rb +0 -4
  82. data/lib/opal/nodes/variables.rb +11 -0
  83. data/lib/opal/parser.rb +24 -19
  84. data/lib/opal/path_reader.rb +17 -4
  85. data/lib/opal/rewriter.rb +5 -1
  86. data/lib/opal/rewriters/base.rb +37 -34
  87. data/lib/opal/rewriters/binary_operator_assignment.rb +0 -3
  88. data/lib/opal/rewriters/for_rewriter.rb +93 -0
  89. data/lib/opal/rewriters/hashes/key_duplicates_rewriter.rb +58 -0
  90. data/lib/opal/rewriters/js_reserved_words.rb +5 -8
  91. data/lib/opal/rewriters/logical_operator_assignment.rb +0 -1
  92. data/lib/opal/simple_server.rb +1 -0
  93. data/lib/opal/util.rb +1 -1
  94. data/lib/opal/version.rb +1 -1
  95. data/opal.gemspec +32 -30
  96. data/opal/corelib/array.rb +53 -30
  97. data/opal/corelib/boolean.rb +11 -3
  98. data/opal/corelib/comparable.rb +16 -0
  99. data/opal/corelib/constants.rb +3 -3
  100. data/opal/corelib/enumerable.rb +48 -1
  101. data/opal/corelib/file.rb +54 -11
  102. data/opal/corelib/hash.rb +98 -0
  103. data/opal/corelib/io.rb +2 -2
  104. data/opal/corelib/kernel.rb +28 -11
  105. data/opal/corelib/marshal/read_buffer.rb +288 -150
  106. data/opal/corelib/marshal/write_buffer.rb +27 -2
  107. data/opal/corelib/nil.rb +11 -3
  108. data/opal/corelib/number.rb +90 -20
  109. data/opal/corelib/numeric.rb +3 -3
  110. data/opal/corelib/random.rb +1 -1
  111. data/opal/corelib/range.rb +22 -22
  112. data/opal/corelib/regexp.rb +45 -4
  113. data/opal/corelib/runtime.js +25 -9
  114. data/opal/corelib/string.rb +1 -1
  115. data/opal/corelib/string/encoding.rb +21 -29
  116. data/opal/corelib/string/inheritance.rb +1 -1
  117. data/opal/corelib/struct.rb +0 -5
  118. data/opal/corelib/time.rb +1 -1
  119. data/stdlib/buffer/array.rb +4 -2
  120. data/stdlib/date.rb +46 -12
  121. data/stdlib/headless_chrome.rb +11 -0
  122. data/stdlib/nodejs/file.rb +36 -11
  123. data/stdlib/nodejs/io.rb +8 -0
  124. data/stdlib/nodejs/stacktrace.rb +116 -100
  125. data/stdlib/opal-builder.rb +1 -0
  126. data/stdlib/opal-platform.rb +6 -6
  127. data/stdlib/opal/platform.rb +2 -2
  128. data/stdlib/rbconfig.rb +1 -1
  129. data/stdlib/securerandom.rb +1 -1
  130. data/tasks/testing.rake +58 -26
  131. data/tasks/testing/opal_rspec_smoketest.Gemfile +5 -12
  132. metadata +64 -733
  133. data/lib/opal/cli_runners/phantom.js +0 -69
  134. data/lib/opal/cli_runners/phantomjs.rb +0 -29
  135. data/lib/opal/hike_path_finder.rb +0 -19
  136. data/lib/opal/nodes/for.rb +0 -75
  137. data/spec/README.md +0 -10
  138. data/spec/filters/bugs/array.rb +0 -16
  139. data/spec/filters/bugs/basicobject.rb +0 -13
  140. data/spec/filters/bugs/bigdecimal.rb +0 -146
  141. data/spec/filters/bugs/class.rb +0 -11
  142. data/spec/filters/bugs/comparable.rb +0 -5
  143. data/spec/filters/bugs/complex.rb +0 -3
  144. data/spec/filters/bugs/date.rb +0 -94
  145. data/spec/filters/bugs/enumerable.rb +0 -43
  146. data/spec/filters/bugs/enumerator.rb +0 -40
  147. data/spec/filters/bugs/exception.rb +0 -72
  148. data/spec/filters/bugs/file.rb +0 -8
  149. data/spec/filters/bugs/float.rb +0 -39
  150. data/spec/filters/bugs/hash.rb +0 -15
  151. data/spec/filters/bugs/inheritance.rb +0 -5
  152. data/spec/filters/bugs/integer.rb +0 -30
  153. data/spec/filters/bugs/io.rb +0 -8
  154. data/spec/filters/bugs/kernel.rb +0 -168
  155. data/spec/filters/bugs/language.rb +0 -190
  156. data/spec/filters/bugs/marshal.rb +0 -41
  157. data/spec/filters/bugs/method.rb +0 -60
  158. data/spec/filters/bugs/module.rb +0 -158
  159. data/spec/filters/bugs/numeric.rb +0 -8
  160. data/spec/filters/bugs/pathname.rb +0 -7
  161. data/spec/filters/bugs/proc.rb +0 -37
  162. data/spec/filters/bugs/random.rb +0 -7
  163. data/spec/filters/bugs/range.rb +0 -36
  164. data/spec/filters/bugs/rational.rb +0 -4
  165. data/spec/filters/bugs/regexp.rb +0 -158
  166. data/spec/filters/bugs/set.rb +0 -41
  167. data/spec/filters/bugs/singleton.rb +0 -6
  168. data/spec/filters/bugs/string.rb +0 -98
  169. data/spec/filters/bugs/stringscanner.rb +0 -71
  170. data/spec/filters/bugs/struct.rb +0 -4
  171. data/spec/filters/bugs/time.rb +0 -35
  172. data/spec/filters/bugs/unboundmethod.rb +0 -17
  173. data/spec/filters/unsupported/array.rb +0 -167
  174. data/spec/filters/unsupported/basicobject.rb +0 -14
  175. data/spec/filters/unsupported/bignum.rb +0 -55
  176. data/spec/filters/unsupported/class.rb +0 -4
  177. data/spec/filters/unsupported/delegator.rb +0 -5
  178. data/spec/filters/unsupported/enumerable.rb +0 -11
  179. data/spec/filters/unsupported/enumerator.rb +0 -13
  180. data/spec/filters/unsupported/file.rb +0 -4
  181. data/spec/filters/unsupported/fixnum.rb +0 -14
  182. data/spec/filters/unsupported/float.rb +0 -46
  183. data/spec/filters/unsupported/freeze.rb +0 -75
  184. data/spec/filters/unsupported/hash.rb +0 -43
  185. data/spec/filters/unsupported/integer.rb +0 -3
  186. data/spec/filters/unsupported/kernel.rb +0 -32
  187. data/spec/filters/unsupported/language.rb +0 -22
  188. data/spec/filters/unsupported/marshal.rb +0 -46
  189. data/spec/filters/unsupported/matchdata.rb +0 -33
  190. data/spec/filters/unsupported/math.rb +0 -3
  191. data/spec/filters/unsupported/pathname.rb +0 -3
  192. data/spec/filters/unsupported/privacy.rb +0 -279
  193. data/spec/filters/unsupported/proc.rb +0 -3
  194. data/spec/filters/unsupported/random.rb +0 -4
  195. data/spec/filters/unsupported/range.rb +0 -7
  196. data/spec/filters/unsupported/regexp.rb +0 -69
  197. data/spec/filters/unsupported/set.rb +0 -4
  198. data/spec/filters/unsupported/singleton.rb +0 -6
  199. data/spec/filters/unsupported/string.rb +0 -546
  200. data/spec/filters/unsupported/struct.rb +0 -6
  201. data/spec/filters/unsupported/symbol.rb +0 -20
  202. data/spec/filters/unsupported/taint.rb +0 -30
  203. data/spec/filters/unsupported/thread.rb +0 -7
  204. data/spec/filters/unsupported/time.rb +0 -202
  205. data/spec/lib/builder_processors_spec.rb +0 -27
  206. data/spec/lib/builder_spec.rb +0 -89
  207. data/spec/lib/cli_runners/phantomjs_spec.rb +0 -39
  208. data/spec/lib/cli_spec.rb +0 -240
  209. data/spec/lib/compiler/call_spec.rb +0 -732
  210. data/spec/lib/compiler_spec.rb +0 -294
  211. data/spec/lib/config_spec.rb +0 -110
  212. data/spec/lib/dependency_resolver_spec.rb +0 -40
  213. data/spec/lib/deprecations_spec.rb +0 -16
  214. data/spec/lib/fixtures/complex_sprockets.js.rb.erb +0 -4
  215. data/spec/lib/fixtures/file_with_directives.js +0 -2
  216. data/spec/lib/fixtures/jst_file.js.jst +0 -1
  217. data/spec/lib/fixtures/no_requires.rb +0 -1
  218. data/spec/lib/fixtures/opal_file.rb +0 -2
  219. data/spec/lib/fixtures/require_tree_test.rb +0 -3
  220. data/spec/lib/fixtures/required_file.js +0 -1
  221. data/spec/lib/fixtures/required_tree_test/required_file1.rb +0 -1
  222. data/spec/lib/fixtures/required_tree_test/required_file2.rb +0 -1
  223. data/spec/lib/fixtures/requires.rb +0 -7
  224. data/spec/lib/fixtures/source_location_test.rb +0 -7
  225. data/spec/lib/fixtures/source_map.rb +0 -1
  226. data/spec/lib/fixtures/source_map/subfolder/other_file.rb +0 -1
  227. data/spec/lib/fixtures/sprockets_file.js.rb +0 -3
  228. data/spec/lib/fixtures/sprockets_require_tree_test.rb +0 -3
  229. data/spec/lib/hike_path_finder_spec.rb +0 -23
  230. data/spec/lib/path_reader_spec.rb +0 -36
  231. data/spec/lib/paths_spec.rb +0 -18
  232. data/spec/lib/rewriters/binary_operator_assignment_spec.rb +0 -151
  233. data/spec/lib/rewriters/block_to_iter_spec.rb +0 -28
  234. data/spec/lib/rewriters/dot_js_syntax_spec.rb +0 -108
  235. data/spec/lib/rewriters/explicit_writer_return_spec.rb +0 -186
  236. data/spec/lib/rewriters/js_reserved_words_spec.rb +0 -116
  237. data/spec/lib/rewriters/logical_operator_assignment_spec.rb +0 -202
  238. data/spec/lib/rewriters/opal_engine_check_spec.rb +0 -82
  239. data/spec/lib/rewriters/rubyspec/filters_rewriter_spec.rb +0 -53
  240. data/spec/lib/shared/path_finder_shared.rb +0 -19
  241. data/spec/lib/shared/path_reader_shared.rb +0 -31
  242. data/spec/lib/simple_server_spec.rb +0 -54
  243. data/spec/lib/spec_helper.rb +0 -100
  244. data/spec/mspec-opal/formatters.rb +0 -236
  245. data/spec/mspec-opal/runner.rb +0 -173
  246. data/spec/opal/compiler/irb_spec.rb +0 -44
  247. data/spec/opal/core/arity_spec.rb +0 -142
  248. data/spec/opal/core/array/intersection_spec.rb +0 -38
  249. data/spec/opal/core/array/minus_spec.rb +0 -38
  250. data/spec/opal/core/array/select_spec.rb +0 -14
  251. data/spec/opal/core/array/set_range_to_array_spec.rb +0 -7
  252. data/spec/opal/core/array/union_spec.rb +0 -38
  253. data/spec/opal/core/array/uniq_spec.rb +0 -49
  254. data/spec/opal/core/date_spec.rb +0 -191
  255. data/spec/opal/core/enumerable/all_break_spec.rb +0 -5
  256. data/spec/opal/core/enumerable/any_break_spec.rb +0 -5
  257. data/spec/opal/core/enumerable/collect_break_spec.rb +0 -13
  258. data/spec/opal/core/enumerable/count_break_spec.rb +0 -5
  259. data/spec/opal/core/enumerable/detect_break_spec.rb +0 -5
  260. data/spec/opal/core/enumerable/drop_while_break_spec.rb +0 -5
  261. data/spec/opal/core/enumerable/each_slice_break.rb +0 -6
  262. data/spec/opal/core/enumerable/each_with_index_break_spec.rb +0 -5
  263. data/spec/opal/core/enumerable/each_with_object_break_spec.rb +0 -5
  264. data/spec/opal/core/enumerable/find_all_break_spec.rb +0 -5
  265. data/spec/opal/core/enumerable/find_index_break_spec.rb +0 -5
  266. data/spec/opal/core/enumerable/grep_break_spec.rb +0 -5
  267. data/spec/opal/core/enumerable/max_break_spec.rb +0 -5
  268. data/spec/opal/core/enumerable/max_by_break_spec.rb +0 -5
  269. data/spec/opal/core/enumerable/min_break_spec.rb +0 -5
  270. data/spec/opal/core/enumerable/min_by_break_spec.rb +0 -5
  271. data/spec/opal/core/enumerable/none_break_spec.rb +0 -5
  272. data/spec/opal/core/enumerable/one_break_spec.rb +0 -5
  273. data/spec/opal/core/enumerable/reduce_break_spec.rb +0 -5
  274. data/spec/opal/core/enumerable/take_while_break_spec.rb +0 -5
  275. data/spec/opal/core/enumerator/with_index_spec.rb +0 -6
  276. data/spec/opal/core/exception_spec.rb +0 -30
  277. data/spec/opal/core/fixtures/class.rb +0 -124
  278. data/spec/opal/core/fixtures/class_variables.rb +0 -0
  279. data/spec/opal/core/fixtures/constants.rb +0 -33
  280. data/spec/opal/core/fixtures/require_tree_files/file 1.rb +0 -1
  281. data/spec/opal/core/fixtures/require_tree_files/file 2.rb +0 -1
  282. data/spec/opal/core/fixtures/require_tree_files/file 3.rb +0 -1
  283. data/spec/opal/core/fixtures/require_tree_files/file 4.rb +0 -1
  284. data/spec/opal/core/fixtures/require_tree_files/file 5.rb +0 -1
  285. data/spec/opal/core/fixtures/require_tree_files/nested/nested 1.rb +0 -1
  286. data/spec/opal/core/fixtures/require_tree_files/nested/nested 2.rb +0 -1
  287. data/spec/opal/core/fixtures/require_tree_files/other/other 1.rb +0 -1
  288. data/spec/opal/core/fixtures/require_tree_with_dot/file 1.rb +0 -1
  289. data/spec/opal/core/fixtures/require_tree_with_dot/file 2.rb +0 -1
  290. data/spec/opal/core/fixtures/require_tree_with_dot/file 3.rb +0 -1
  291. data/spec/opal/core/fixtures/require_tree_with_dot/index.rb +0 -3
  292. data/spec/opal/core/hash/has_value_spec.rb +0 -13
  293. data/spec/opal/core/hash/internals_spec.rb +0 -332
  294. data/spec/opal/core/helpers_spec.rb +0 -14
  295. data/spec/opal/core/kernel/Array_spec.rb +0 -10
  296. data/spec/opal/core/kernel/at_exit_spec.rb +0 -70
  297. data/spec/opal/core/kernel/block_given_spec.rb +0 -30
  298. data/spec/opal/core/kernel/class_spec.rb +0 -6
  299. data/spec/opal/core/kernel/define_singleton_method_spec.rb +0 -21
  300. data/spec/opal/core/kernel/equal_value_spec.rb +0 -12
  301. data/spec/opal/core/kernel/extend_spec.rb +0 -21
  302. data/spec/opal/core/kernel/format_spec.rb +0 -122
  303. data/spec/opal/core/kernel/freeze_spec.rb +0 -15
  304. data/spec/opal/core/kernel/instance_eval_spec.rb +0 -28
  305. data/spec/opal/core/kernel/instance_variable_defined_spec.rb +0 -15
  306. data/spec/opal/core/kernel/instance_variable_get_spec.rb +0 -14
  307. data/spec/opal/core/kernel/instance_variable_set_spec.rb +0 -10
  308. data/spec/opal/core/kernel/instance_variables_spec.rb +0 -110
  309. data/spec/opal/core/kernel/loop_spec.rb +0 -23
  310. data/spec/opal/core/kernel/match_spec.rb +0 -5
  311. data/spec/opal/core/kernel/method_spec.rb +0 -31
  312. data/spec/opal/core/kernel/methods_spec.rb +0 -25
  313. data/spec/opal/core/kernel/nil_spec.rb +0 -7
  314. data/spec/opal/core/kernel/p_spec.rb +0 -15
  315. data/spec/opal/core/kernel/printf_spec.rb +0 -11
  316. data/spec/opal/core/kernel/proc_spec.rb +0 -13
  317. data/spec/opal/core/kernel/raise_spec.rb +0 -13
  318. data/spec/opal/core/kernel/rand_spec.rb +0 -19
  319. data/spec/opal/core/kernel/require_tree_spec.rb +0 -18
  320. data/spec/opal/core/kernel/respond_to_spec.rb +0 -44
  321. data/spec/opal/core/kernel/send_spec.rb +0 -56
  322. data/spec/opal/core/kernel/sprintf_spec.rb +0 -5
  323. data/spec/opal/core/language/arguments/mlhs_arg_spec.rb +0 -19
  324. data/spec/opal/core/language/class_spec.rb +0 -55
  325. data/spec/opal/core/language/constant_lookup_spec.rb +0 -38
  326. data/spec/opal/core/language/equal_spec.rb +0 -8
  327. data/spec/opal/core/language/fixtures/array.rb +0 -11
  328. data/spec/opal/core/language/fixtures/block.rb +0 -57
  329. data/spec/opal/core/language/fixtures/break.rb +0 -240
  330. data/spec/opal/core/language/fixtures/ensure.rb +0 -72
  331. data/spec/opal/core/language/fixtures/literal_lambda.rb +0 -7
  332. data/spec/opal/core/language/fixtures/metaclass.rb +0 -33
  333. data/spec/opal/core/language/fixtures/module.rb +0 -24
  334. data/spec/opal/core/language/fixtures/next.rb +0 -128
  335. data/spec/opal/core/language/fixtures/return.rb +0 -118
  336. data/spec/opal/core/language/fixtures/send.rb +0 -111
  337. data/spec/opal/core/language/fixtures/send_1.9.rb +0 -22
  338. data/spec/opal/core/language/fixtures/super.rb +0 -308
  339. data/spec/opal/core/language/fixtures/variables.rb +0 -58
  340. data/spec/opal/core/language/fixtures/yield.rb +0 -28
  341. data/spec/opal/core/language/heredoc_spec.rb +0 -42
  342. data/spec/opal/core/language/keyword_arguments_spec.rb +0 -11
  343. data/spec/opal/core/language/predefined_spec.rb +0 -138
  344. data/spec/opal/core/language/regexp_spec.rb +0 -20
  345. data/spec/opal/core/language/rescue_spec.rb +0 -18
  346. data/spec/opal/core/language/safe_navigator_spec.rb +0 -7
  347. data/spec/opal/core/language/send_spec.rb +0 -222
  348. data/spec/opal/core/language/string_spec.rb +0 -44
  349. data/spec/opal/core/language/ternary_operator_spec.rb +0 -20
  350. data/spec/opal/core/language/versions/array_1.9.rb +0 -39
  351. data/spec/opal/core/language/versions/block_1.9.rb +0 -0
  352. data/spec/opal/core/language/versions/break_1.9.rb +0 -0
  353. data/spec/opal/core/language/versions/case_1.9.rb +0 -20
  354. data/spec/opal/core/language/versions/def_2_0_spec.rb +0 -58
  355. data/spec/opal/core/language/versions/hash_1_9_spec.rb +0 -23
  356. data/spec/opal/core/language/versions/literal_lambda_1.9.rb +0 -143
  357. data/spec/opal/core/language/versions/not_1.9.rb +0 -22
  358. data/spec/opal/core/language/versions/send_1.9.rb +0 -241
  359. data/spec/opal/core/language/versions/symbol_1.9.rb +0 -15
  360. data/spec/opal/core/language/versions/variables_1.9.rb +0 -8
  361. data/spec/opal/core/language_spec.rb +0 -77
  362. data/spec/opal/core/marshal/dump_spec.rb +0 -53
  363. data/spec/opal/core/marshal/load_spec.rb +0 -7
  364. data/spec/opal/core/method/to_proc_spec.rb +0 -28
  365. data/spec/opal/core/module/alias_method_spec.rb +0 -28
  366. data/spec/opal/core/module/ancestors_spec.rb +0 -11
  367. data/spec/opal/core/module/append_features_spec.rb +0 -14
  368. data/spec/opal/core/module/attr_accessor_spec.rb +0 -26
  369. data/spec/opal/core/module/const_defined_spec.rb +0 -84
  370. data/spec/opal/core/module/const_get_spec.rb +0 -85
  371. data/spec/opal/core/module/const_missing_spec.rb +0 -17
  372. data/spec/opal/core/module/const_set_spec.rb +0 -64
  373. data/spec/opal/core/module/constants_spec.rb +0 -49
  374. data/spec/opal/core/module/fixtures/classes.rb +0 -444
  375. data/spec/opal/core/module/method_defined_spec.rb +0 -48
  376. data/spec/opal/core/module/method_lookup_spec.rb +0 -13
  377. data/spec/opal/core/module/module_function_spec.rb +0 -25
  378. data/spec/opal/core/module/name_spec.rb +0 -41
  379. data/spec/opal/core/module/public_method_defined_spec.rb +0 -18
  380. data/spec/opal/core/module/remove_const_spec.rb +0 -22
  381. data/spec/opal/core/module/undef_method_spec.rb +0 -66
  382. data/spec/opal/core/numeric/bit_and_spec.rb +0 -7
  383. data/spec/opal/core/numeric/bit_or_spec.rb +0 -8
  384. data/spec/opal/core/numeric/bit_xor_spec.rb +0 -6
  385. data/spec/opal/core/numeric/ceil_spec.rb +0 -8
  386. data/spec/opal/core/numeric/chr_spec.rb +0 -8
  387. data/spec/opal/core/numeric/comparison_spec.rb +0 -24
  388. data/spec/opal/core/numeric/complement_spec.rb +0 -8
  389. data/spec/opal/core/numeric/divide_spec.rb +0 -10
  390. data/spec/opal/core/numeric/eql_spec.rb +0 -9
  391. data/spec/opal/core/numeric/exponent_spec.rb +0 -33
  392. data/spec/opal/core/numeric/floor_spec.rb +0 -8
  393. data/spec/opal/core/numeric/gt_spec.rb +0 -11
  394. data/spec/opal/core/numeric/gte_spec.rb +0 -12
  395. data/spec/opal/core/numeric/integer_spec.rb +0 -9
  396. data/spec/opal/core/numeric/left_shift_spec.rb +0 -21
  397. data/spec/opal/core/numeric/lt_spec.rb +0 -11
  398. data/spec/opal/core/numeric/lte_spec.rb +0 -12
  399. data/spec/opal/core/numeric/minus_spec.rb +0 -8
  400. data/spec/opal/core/numeric/modulo_spec.rb +0 -19
  401. data/spec/opal/core/numeric/multiply_spec.rb +0 -9
  402. data/spec/opal/core/numeric/next_spec.rb +0 -9
  403. data/spec/opal/core/numeric/ord_spec.rb +0 -9
  404. data/spec/opal/core/numeric/plus_spec.rb +0 -8
  405. data/spec/opal/core/numeric/pred_spec.rb +0 -7
  406. data/spec/opal/core/numeric/right_shift_spec.rb +0 -25
  407. data/spec/opal/core/numeric/step_spec.rb +0 -11
  408. data/spec/opal/core/numeric/succ_spec.rb +0 -9
  409. data/spec/opal/core/numeric/times_spec.rb +0 -36
  410. data/spec/opal/core/numeric/to_f_spec.rb +0 -7
  411. data/spec/opal/core/numeric/to_i_spec.rb +0 -7
  412. data/spec/opal/core/numeric/to_json_spec.rb +0 -8
  413. data/spec/opal/core/numeric/to_s_spec.rb +0 -26
  414. data/spec/opal/core/numeric/uminus_spec.rb +0 -9
  415. data/spec/opal/core/numeric/upto_spec.rb +0 -19
  416. data/spec/opal/core/numeric/zero_spec.rb +0 -7
  417. data/spec/opal/core/object_id_spec.rb +0 -56
  418. data/spec/opal/core/proc/call_spec.rb +0 -21
  419. data/spec/opal/core/proc/element_reference_spec.rb +0 -21
  420. data/spec/opal/core/proc/proc_tricks_spec.rb +0 -7
  421. data/spec/opal/core/runtime/begin_spec.rb +0 -39
  422. data/spec/opal/core/runtime/block_spec.rb +0 -23
  423. data/spec/opal/core/runtime/bridged_classes_spec.rb +0 -123
  424. data/spec/opal/core/runtime/constants_spec.rb +0 -13
  425. data/spec/opal/core/runtime/donate_spec.rb +0 -53
  426. data/spec/opal/core/runtime/eval_spec.rb +0 -5
  427. data/spec/opal/core/runtime/is_a_spec.rb +0 -36
  428. data/spec/opal/core/runtime/main_methods_spec.rb +0 -27
  429. data/spec/opal/core/runtime/method_missing_spec.rb +0 -68
  430. data/spec/opal/core/runtime/method_spec.rb +0 -31
  431. data/spec/opal/core/runtime/operator_call_spec.rb +0 -13
  432. data/spec/opal/core/runtime/paren_spec.rb +0 -14
  433. data/spec/opal/core/runtime/rescue_spec.rb +0 -106
  434. data/spec/opal/core/runtime/return_spec.rb +0 -38
  435. data/spec/opal/core/runtime/singleton_class_spec.rb +0 -13
  436. data/spec/opal/core/runtime/super_spec.rb +0 -223
  437. data/spec/opal/core/runtime/truthy_spec.rb +0 -63
  438. data/spec/opal/core/runtime/variables_spec.rb +0 -20
  439. data/spec/opal/core/runtime_spec.rb +0 -58
  440. data/spec/opal/core/source_map_spec.rb +0 -49
  441. data/spec/opal/core/string_spec.rb +0 -32
  442. data/spec/opal/core/time_spec.rb +0 -38
  443. data/spec/opal/javascript_api_spec.rb +0 -16
  444. data/spec/opal/stdlib/erb/erb_spec.rb +0 -30
  445. data/spec/opal/stdlib/erb/inline_block.opalerb +0 -3
  446. data/spec/opal/stdlib/erb/quoted.opalerb +0 -1
  447. data/spec/opal/stdlib/erb/simple.opalerb +0 -1
  448. data/spec/opal/stdlib/js_spec.rb +0 -66
  449. data/spec/opal/stdlib/json/ext_spec.rb +0 -48
  450. data/spec/opal/stdlib/json/parse_spec.rb +0 -37
  451. data/spec/opal/stdlib/native/alias_native_spec.rb +0 -27
  452. data/spec/opal/stdlib/native/array_spec.rb +0 -11
  453. data/spec/opal/stdlib/native/each_spec.rb +0 -13
  454. data/spec/opal/stdlib/native/element_reference_spec.rb +0 -16
  455. data/spec/opal/stdlib/native/exposure_spec.rb +0 -33
  456. data/spec/opal/stdlib/native/ext_spec.rb +0 -19
  457. data/spec/opal/stdlib/native/hash_spec.rb +0 -67
  458. data/spec/opal/stdlib/native/initialize_spec.rb +0 -17
  459. data/spec/opal/stdlib/native/method_missing_spec.rb +0 -51
  460. data/spec/opal/stdlib/native/native_alias_spec.rb +0 -19
  461. data/spec/opal/stdlib/native/native_class_spec.rb +0 -18
  462. data/spec/opal/stdlib/native/native_module_spec.rb +0 -13
  463. data/spec/opal/stdlib/native/native_reader_spec.rb +0 -22
  464. data/spec/opal/stdlib/native/native_writer_spec.rb +0 -30
  465. data/spec/opal/stdlib/native/new_spec.rb +0 -92
  466. data/spec/opal/stdlib/native/struct_spec.rb +0 -12
  467. data/spec/opal/stdlib/promise/always_spec.rb +0 -49
  468. data/spec/opal/stdlib/promise/error_spec.rb +0 -15
  469. data/spec/opal/stdlib/promise/rescue_spec.rb +0 -53
  470. data/spec/opal/stdlib/promise/then_spec.rb +0 -79
  471. data/spec/opal/stdlib/promise/trace_spec.rb +0 -51
  472. data/spec/opal/stdlib/promise/value_spec.rb +0 -15
  473. data/spec/opal/stdlib/promise/when_spec.rb +0 -34
  474. data/spec/opal/stdlib/source_map_spec.rb +0 -8
  475. data/spec/opal/stdlib/strscan/scan_spec.rb +0 -11
  476. data/spec/opal/stdlib/template/paths_spec.rb +0 -10
  477. data/spec/opal/stdlib/thread/mutex_spec.rb +0 -40
  478. data/spec/opal/stdlib/thread/thread_queue_spec.rb +0 -32
  479. data/spec/opal/stdlib/thread/thread_spec.rb +0 -60
  480. data/spec/ruby_specs +0 -122
  481. data/spec/spec_helper.rb +0 -27
  482. data/spec/support/match_helpers.rb +0 -57
  483. data/spec/support/mspec_rspec_adapter.rb +0 -33
  484. data/spec/support/rewriters_helper.rb +0 -24
  485. data/stdlib/phantomjs.rb +0 -17
  486. data/tasks/testing/sprockets-phantomjs.js +0 -54
  487. data/test/nodejs/fixtures/hello.rb +0 -1
  488. data/test/nodejs/test_dir.rb +0 -17
  489. data/test/nodejs/test_file.rb +0 -87
  490. data/test/nodejs/test_io.rb +0 -18
  491. data/test/nodejs/test_opal_builder.rb +0 -12
  492. data/test/opal/test_keyword.rb +0 -590
  493. data/test/opal/unsupported_and_bugs.rb +0 -39
@@ -1,44 +0,0 @@
1
- describe "Ruby character strings" do
2
- it "are produced from character shortcuts" do
3
- ?z.should == 'z'
4
- end
5
-
6
- it "should parse string into %[]" do
7
- %[foo].should == "foo"
8
- %|bar|.should == "bar"
9
- %'baz'.should == "baz"
10
- end
11
-
12
- it "interpolate string" do
13
- a = 1
14
- %[#{a}23].should == "123"
15
- end
16
-
17
- it "should not process escape characters in single-quoted heredocs" do
18
- s = <<'EOD'
19
- hey\now\brown\cow
20
- EOD
21
- s.strip.should == 'hey\now\brown\cow'
22
- end
23
-
24
- it "should ignore single-quote escapes in single-quoted heredocs" do
25
- s = <<'EOD'
26
- they\'re greeeeaaat!
27
- EOD
28
- s.strip.should == 'they\\\'re greeeeaaat!'
29
- end
30
-
31
- it "should process escape characters in double quoted heredocs" do
32
- s = <<"EOD"
33
- hey\now\brown\cow
34
- EOD
35
- s.strip.should == "hey\now\brown\cow"
36
- end
37
-
38
- it "should treat bare-word heredoc identifiers as double-quoted" do
39
- s = <<EOD
40
- hey\now\brown\cow
41
- EOD
42
- s.strip.should == "hey\now\brown\cow"
43
- end
44
- end
@@ -1,20 +0,0 @@
1
- describe "Ternary condition operator" do
2
- it "returns the second argument if the condition is true" do
3
- (true ? 1 : 2).should == 1
4
- end
5
-
6
- it "returns the third argument if the condition is false" do
7
- (false ? 1 : 2).should == 2
8
- end
9
-
10
- it "doesn't get confused if : follows a string literal" do
11
- # this could be interpreted as a Ruby 1.9 symbol hash key
12
- (true ?'str':'another str').should == 'str'
13
- end
14
-
15
- it "doesn't interpret ?? as an identifier" do
16
- obj = mock("object with a query method")
17
- obj.should_receive("m?").and_return(true)
18
- (obj.m?? 1 : 2).should == 1
19
- end
20
- end
@@ -1,39 +0,0 @@
1
- describe "Array literals" do
2
- it "[] accepts a literal hash without curly braces as its last parameter" do
3
- ["foo", "bar" => :baz].should == ["foo", {"bar" => :baz}]
4
- [1, 2, 3 => 6, 4 => 24].should == [1, 2, {3 => 6, 4 => 24}]
5
- end
6
-
7
- it "[] treats splatted nil as no element" do
8
- [*nil].should == []
9
- [1, *nil].should == [1]
10
- [1, 2, *nil].should == [1, 2]
11
- [1, *nil, 3].should == [1, 3]
12
- [*nil, *nil, *nil].should == []
13
- end
14
- end
15
-
16
- describe "The unpacking splat operator (*)" do
17
- it "when applied to a non-Array value attempts to coerce it to Array if the object respond_to?(:to_a)" do
18
- obj = mock("pseudo-array")
19
- obj.should_receive(:to_a).and_return([2, 3, 4])
20
- [1, *obj].should == [1, 2, 3, 4]
21
- end
22
-
23
- it "when applied to a non-Array value uses it unchanged if it does not respond_to?(:to_a)" do
24
- obj = Object.new
25
- obj.should_not respond_to(:to_a)
26
- [1, *obj].should == [1, obj]
27
- end
28
-
29
- it "can be used before other non-splat elements" do
30
- a = [1, 2]
31
- [0, *a, 3].should == [0, 1, 2, 3]
32
- end
33
-
34
- it "can be used multiple times in the same containing array" do
35
- a = [1, 2]
36
- b = [1, 0]
37
- [*a, 3, *a, *b].should == [1, 2, 3, 1, 2, 1, 0]
38
- end
39
- end
@@ -1,20 +0,0 @@
1
- describe "The 'case'-construct" do
2
- it "takes multiple expanded arrays" do
3
- a1 = ['f', 'o', 'o']
4
- a2 = ['b', 'a', 'r']
5
-
6
- case 'f'
7
- when *a1, *['x', 'y', 'z']
8
- "foo"
9
- when *a2, *['x', 'y', 'z']
10
- "bar"
11
- end.should == "foo"
12
-
13
- case 'b'
14
- when *a1, *['x', 'y', 'z']
15
- "foo"
16
- when *a2, *['x', 'y', 'z']
17
- "bar"
18
- end.should == "bar"
19
- end
20
- end
@@ -1,58 +0,0 @@
1
- # TODO: this should be loaded from rubyspec instead
2
-
3
- describe "An instance method with keyword arguments" do
4
- context "when there is a single keyword argument" do
5
- before do
6
- def foo(a: 1)
7
- a
8
- end
9
- end
10
-
11
- it "evaluates to the default when a value isn't provided" do
12
- foo.should == 1
13
- end
14
-
15
- it "evaluates to the provided value" do
16
- foo(a: 20).should == 20
17
- foo(a: nil).should be_nil
18
- end
19
-
20
- it "raises an argument error when a non-keyword argument is provided" do
21
- lambda { foo(1) }.should raise_error(ArgumentError)
22
- end
23
- end
24
-
25
- it "treats a sole hash argument correctly" do
26
- def foo(a, b: 10)
27
- [a, b]
28
- end
29
- foo(b: "b").should == [{:b => "b"}, 10]
30
- foo("a", b: "b").should == ["a", "b"]
31
- end
32
-
33
- it "correctly distinguishes between optional and keyword arguments" do
34
- def foo(a = true, b: 10)
35
- [a, b]
36
- end
37
- foo(b: 42).should == [true, 42]
38
- foo(false, b: 42).should == [false, 42]
39
- end
40
-
41
- it "correctly distinguishes between rest and keyword arguments" do
42
- def foo(*a, b: 10)
43
- [a, b]
44
- end
45
- foo(1, 2, 3, 4).should == [[1, 2, 3, 4], 10]
46
- foo(1, 2, 3, 4, b: 42).should == [[1, 2, 3, 4], 42]
47
- foo(b: 42).should == [[], 42]
48
- end
49
-
50
- it "should allow keyword rest arguments" do
51
- def foo(a: 1, **b)
52
- [a, b]
53
- end
54
- foo(b: 2, c: 3, d: 4).should == [1, {:b => 2, :c => 3, :d => 4}]
55
- foo(a: 4, b: 2).should == [4, {:b => 2}]
56
- foo.should == [1, {}]
57
- end
58
- end
@@ -1,23 +0,0 @@
1
- describe "Hash literal" do
2
- describe "new-style hash syntax" do
3
- it "constructs a new hash with the given elements" do
4
- {foo: 123}.should == {:foo => 123}
5
- {rbx: :cool, specs: 'fail_sometimes'}.should == {:rbx => :cool, :specs => 'fail_sometimes'}
6
- end
7
-
8
- it "ignores a hanging comma" do
9
- {foo: 123,}.should == {:foo => 123}
10
- {rbx: :cool, specs: 'fail_sometimes',}.should == {:rbx => :cool, :specs => 'fail_sometimes'}
11
- end
12
-
13
- it "can mix and match syntax styles" do
14
- {rbx: :cool, :specs => 'fail_sometimes'}.should == {:rbx => :cool, :specs => 'fail_sometimes'}
15
- {'rbx' => :cool, specs: 'fail_sometimes'}.should == {'rbx' => :cool, :specs => 'fail_sometimes'}
16
- end
17
-
18
- it "accepts symbol keys using 'string': syntax" do
19
- {'test': :test}.should == {test: :test}
20
- {'symbol literal': :test}.should == {:'symbol literal' => :test}
21
- end
22
- end
23
- end
@@ -1,143 +0,0 @@
1
- require File.join(File.dirname(__FILE__), '../fixtures/literal_lambda')
2
-
3
- describe "->(){}" do
4
- it "can be specified as a literal" do
5
- lambda { ->(){} }.should_not raise_error
6
- end
7
-
8
- it "returns a Proc object" do
9
- ->(){}.should be_an_instance_of(Proc)
10
- end
11
-
12
- it "returns a lambda" do
13
- ->(){}.lambda?.should be_true
14
- end
15
-
16
- it "can be assigned to a variable" do
17
- var = ->(){}
18
- var.lambda?.should be_true
19
- end
20
-
21
- it "understands a do/end block in place of {}" do
22
- lambda do
23
- ->() do
24
- end
25
- end.should_not raise_error(SyntaxError)
26
- end
27
-
28
- it "requires an associated block" do
29
- lambda { eval "->()" }.should raise_error(SyntaxError)
30
- lambda { eval "->" }.should raise_error(SyntaxError)
31
- end
32
-
33
- it "can be interpolated into a String" do
34
- "1+2=#{->{ 1 + 2}.call}".should == "1+2=3"
35
- end
36
-
37
- it "can be be used as a Hash key" do
38
- h = new_hash
39
- # h[->(one=1){ one + 2}.call] = :value
40
- h.key?(3).should be_true
41
- end
42
-
43
- it "can be used in method parameter lists" do
44
- def glark7654(a=-> { :foo })
45
- a.call
46
- end
47
- glark7654.should == :foo
48
- end
49
-
50
- it "accepts an parameter list between the parenthesis" do
51
- lambda { ->(a) {} }.should_not raise_error(SyntaxError)
52
- lambda { ->(a,b) {} }.should_not raise_error(SyntaxError)
53
- end
54
-
55
- it "accepts an empty parameter list" do
56
- lambda { ->() {} }.should_not raise_error(SyntaxError)
57
- end
58
-
59
- it "allows the parenthesis to be omitted entirely" do
60
- lambda { -> {} }.should_not raise_error(SyntaxError)
61
- lambda { ->{} }.should_not raise_error(SyntaxError)
62
- lambda do
63
- -> do
64
- end
65
- end.should_not raise_error(SyntaxError)
66
- ->{}.should be_an_instance_of(Proc)
67
- end
68
-
69
- it "aliases each argument to the corresponding parameter" do
70
- ->(a) {a}.call(:sym).should == :sym
71
- ->(a,b) {[a, b]}.call(:sym, :bol).should == [:sym, :bol]
72
- end
73
-
74
- it "accepts parameters with default parameters between the parenthesis" do
75
- # lambda { ->(a=1) {} }.should_not raise_error(SyntaxError)
76
- # lambda { ->(x=1, b=[]) {} }.should_not raise_error(SyntaxError)
77
- end
78
-
79
- it "aliases each argument with a default value to the corresponding parameter" do
80
- # ->(a=:cymbal) {a}.call(:sym).should == :sym
81
- # ->(a,b=:cymbal) {[a, b]}.call(:sym, :bol).should == [:sym, :bol]
82
- end
83
-
84
- it "sets arguments to their default value if one wasn't supplied" do
85
- # ->(a=:cymbal) {a}.call.should == :cymbal
86
- # ->(a,b=:cymbal) {[a, b]}.call(:sym).should == [:sym, :cymbal]
87
- end
88
-
89
- it "accepts a parameter prefixed with an asterisk between the parenthesis" do
90
- # lambda { ->(*a) {} }.should_not raise_error(SyntaxError)
91
- # lambda { ->(x, *a) {} }.should_not raise_error(SyntaxError)
92
- end
93
-
94
- it "assigns all remaining arguments to the variable in the parameter list prefixed with an asterisk, if one exists" do
95
- # ->(*a) {a}.call(:per, :cus, :si, :on).should == [:per, :cus, :si, :on]
96
- # ->(a,*b) {b}.call(:per, :cus, :si, :on).should == [:cus, :si, :on]
97
- end
98
-
99
- it "accepts a parameter prefixed with an ampersand between the parenthesis" do
100
- # lambda { ->(&a) {} }.should_not raise_error(SyntaxError)
101
- # lambda { ->(x, &a) {} }.should_not raise_error(SyntaxError)
102
- end
103
-
104
- it "assigns the given block to the parameter prefixed with an ampersand if such a parameter exists" do
105
- # l = ->(&a) { a }.call { :foo }
106
- l.call.should == :foo
107
- end
108
-
109
- it "assigns nil to the parameter prefixed with an ampersand unless a block was supplied" do
110
- # ->(&a) { a }.call.should be_nil
111
- end
112
-
113
- it "accepts a combination of argument types between the parenthesis" do
114
- # lambda { ->(x, y={}, z = Object.new, *a, &b) {} }.
115
- should_not raise_error(SyntaxError)
116
- end
117
-
118
- it "sets parameters appropriately when a combination of parameter types is given between the parenthesis" do
119
- # l = ->(x, y={}, z = Object.new, *a, &b) { [x,y,z,a,b]}
120
- l.call(1, [], [], 30, 40).should == [1, [], [], [30, 40], nil]
121
- block = lambda { :lamb }
122
- l.call(1, [], [], 30, 40, &block).last.should be_an_instance_of(Proc)
123
- # l2 = ->(x, y={}, *a) { [x, y, a]}
124
- l2.call(:x).should == [:x, {}, []]
125
- end
126
-
127
- it "uses lambda's 'rigid' argument handling" do
128
- ->(a, b){}.parameters.first.first.should == :req
129
- ->(a, b){}.parameters.last.first.should == :req
130
- lambda { ->(a, b){}.call 1 }.should raise_error(ArgumentError)
131
- end
132
-
133
- it "does not call the associated block" do
134
- @called = false
135
- ->() { @called = true }
136
- @called.should be_false
137
- end
138
-
139
- it "evaluates constants as normal blocks do" do
140
- l = LiteralLambdaMethods.literal_lambda_with_constant
141
- l.().should == "some value"
142
- end
143
- end
@@ -1,22 +0,0 @@
1
- describe "not()" do
2
- # not(arg).method and method(not(arg)) raise SyntaxErrors on 1.8. Here we
3
- # use #inspect to test that the syntax works on 1.9
4
-
5
- it "can be used as a function" do
6
- lambda do
7
- not(true).inspect
8
- end.should_not raise_error(SyntaxError)
9
- end
10
-
11
- it "returns false if the argument is true" do
12
- not(true).inspect.should == "false"
13
- end
14
-
15
- it "returns true if the argument is false" do
16
- not(false).inspect.should == "true"
17
- end
18
-
19
- it "returns true if the argument is nil" do
20
- not(nil).inspect.should == "true"
21
- end
22
- end
@@ -1,241 +0,0 @@
1
- # FIXME: Add error case
2
- #
3
- require File.expand_path("../../fixtures/send_1.9.rb", __FILE__)
4
- require 'language/fixtures/send_1.9'
5
-
6
- specs = LangSendSpecs
7
-
8
- describe "Invoking a method" do
9
- describe "with required args after the rest arguments" do
10
- it "binds the required arguments first" do
11
- specs.fooM0RQ1(1).should == [[], 1]
12
- specs.fooM0RQ1(1,2).should == [[1], 2]
13
- specs.fooM0RQ1(1,2,3).should == [[1,2], 3]
14
-
15
- specs.fooM1RQ1(1,2).should == [1, [], 2]
16
- specs.fooM1RQ1(1,2,3).should == [1, [2], 3]
17
- specs.fooM1RQ1(1,2,3,4).should == [1, [2, 3], 4]
18
-
19
- specs.fooM1O1RQ1(1,2).should == [1, 9, [], 2]
20
- specs.fooM1O1RQ1(1,2,3).should == [1, 2, [], 3]
21
- specs.fooM1O1RQ1(1,2,3,4).should == [1, 2, [3], 4]
22
-
23
- specs.fooM1O1RQ2(1,2,3).should == [1, 9, [], 2, 3]
24
- specs.fooM1O1RQ2(1,2,3,4).should == [1, 2, [], 3, 4]
25
- specs.fooM1O1RQ2(1,2,3,4,5).should == [1, 2, [3], 4, 5]
26
- end
27
- end
28
-
29
- describe "with manditory arguments after optional arguments" do
30
- it "binds the required arguments first" do
31
- specs.fooO1Q1(0,1).should == [0,1]
32
- specs.fooO1Q1(2).should == [1,2]
33
-
34
- specs.fooM1O1Q1(2,3,4).should == [2,3,4]
35
- specs.fooM1O1Q1(1,3).should == [1,2,3]
36
-
37
- specs.fooM2O1Q1(1,2,4).should == [1,2,3,4]
38
-
39
- specs.fooM2O2Q1(1,2,3,4,5).should == [1,2,3,4,5]
40
- specs.fooM2O2Q1(1,2,3,5).should == [1,2,3,4,5]
41
- specs.fooM2O2Q1(1,2,5).should == [1,2,3,4,5]
42
-
43
- specs.fooO4Q1(1,2,3,4,5).should == [1,2,3,4,5]
44
- specs.fooO4Q1(1,2,3,5).should == [1,2,3,4,5]
45
- specs.fooO4Q1(1,2,5).should == [1,2,3,4,5]
46
- specs.fooO4Q1(1,5).should == [1,2,3,4,5]
47
- specs.fooO4Q1(5).should == [1,2,3,4,5]
48
-
49
- specs.fooO4Q2(1,2,3,4,5,6).should == [1,2,3,4,5,6]
50
- specs.fooO4Q2(1,2,3,5,6).should == [1,2,3,4,5,6]
51
- specs.fooO4Q2(1,2,5,6).should == [1,2,3,4,5,6]
52
- specs.fooO4Q2(1,5,6).should == [1,2,3,4,5,6]
53
- specs.fooO4Q2(5,6).should == [1,2,3,4,5,6]
54
- end
55
- end
56
-
57
- it "with .() invokes #call" do
58
- q = proc { |z| z }
59
- q.(1).should == 1
60
-
61
- obj = mock("paren call")
62
- obj.should_receive(:call).and_return(:called)
63
- obj.().should == :called
64
- end
65
-
66
- it "allows a vestigial trailing ',' in the arguments" do
67
- # specs.fooM1(1,).should == [1]
68
- end
69
-
70
- it "with splat operator attempts to coerce it to an Array if the object respond_to?(:to_a)" do
71
- ary = [2,3,4]
72
- obj = mock("to_a")
73
- obj.should_receive(:to_a).and_return(ary).twice
74
- specs.fooM0R(*obj).should == ary
75
- specs.fooM1R(1,*obj).should == [1, ary]
76
- end
77
-
78
- it "with splat operator * and non-Array value uses value unchanged if it does not respond_to?(:to_ary)" do
79
- obj = Object.new
80
- obj.should_not respond_to(:to_a)
81
-
82
- specs.fooM0R(*obj).should == [obj]
83
- specs.fooM1R(1,*obj).should == [1, [obj]]
84
- end
85
-
86
- it "accepts additional arguments after splat expansion" do
87
- a = [1,2]
88
- specs.fooM4(*a,3,4).should == [1,2,3,4]
89
- specs.fooM4(0,*a,3).should == [0,1,2,3]
90
- end
91
-
92
- it "accepts final explicit literal Hash arguments after the splat" do
93
- a = [1, 2]
94
- specs.fooM0RQ1(*a, { :a => 1 }).should == [[1, 2], { :a => 1 }]
95
- end
96
-
97
- it "accepts final implicit literal Hash arguments after the splat" do
98
- a = [1, 2]
99
- specs.fooM0RQ1(*a, :a => 1).should == [[1, 2], { :a => 1 }]
100
- end
101
-
102
- it "accepts final Hash arguments after the splat" do
103
- a = [1, 2]
104
- b = { :a => 1 }
105
- specs.fooM0RQ1(*a, b).should == [[1, 2], { :a => 1 }]
106
- end
107
-
108
- it "accepts mandatory and explicit literal Hash arguments after the splat" do
109
- a = [1, 2]
110
- specs.fooM0RQ2(*a, 3, { :a => 1 }).should == [[1, 2], 3, { :a => 1 }]
111
- end
112
-
113
- it "accepts mandatory and implicit literal Hash arguments after the splat" do
114
- a = [1, 2]
115
- specs.fooM0RQ2(*a, 3, :a => 1).should == [[1, 2], 3, { :a => 1 }]
116
- end
117
-
118
- it "accepts mandatory and Hash arguments after the splat" do
119
- a = [1, 2]
120
- b = { :a => 1 }
121
- specs.fooM0RQ2(*a, 3, b).should == [[1, 2], 3, { :a => 1 }]
122
- end
123
-
124
- it "converts a final splatted explicit Hash to an Array" do
125
- a = [1, 2]
126
- specs.fooR(*a, 3, *{ :a => 1 }).should == [1, 2, 3, [:a, 1]]
127
- end
128
-
129
- it "calls #to_a to convert a final splatted Hash object to an Array" do
130
- a = [1, 2]
131
- b = { :a => 1 }
132
- b.should_receive(:to_a).and_return([:a, 1])
133
-
134
- specs.fooR(*a, 3, *b).should == [1, 2, 3, :a, 1]
135
- end
136
-
137
- it "accepts multiple splat expansions in the same argument list" do
138
- a = [1,2,3]
139
- b = 7
140
- c = mock("pseudo-array")
141
- c.should_receive(:to_a).and_return([0,0])
142
-
143
- d = [4,5]
144
- specs.rest_len(*a,*d,6,*b).should == 7
145
- specs.rest_len(*a,*a,*a).should == 9
146
- specs.rest_len(0,*a,4,*5,6,7,*c,-1).should == 11
147
- end
148
-
149
- it "expands an array to arguments grouped in parentheses" do
150
- specs.destructure2([40,2]).should == 42
151
- end
152
-
153
- it "expands an array to arguments grouped in parentheses and ignores any rest arguments in the array" do
154
- specs.destructure2([40,2,84]).should == 42
155
- end
156
-
157
- it "expands an array to arguments grouped in parentheses and sets not specified arguments to nil" do
158
- specs.destructure2b([42]).should == [42, nil]
159
- end
160
-
161
- it "expands an array to arguments grouped in parentheses which in turn takes rest arguments" do
162
- specs.destructure4r([1, 2, 3]).should == [1, 2, [], 3, nil]
163
- specs.destructure4r([1, 2, 3, 4]).should == [1, 2, [], 3, 4]
164
- specs.destructure4r([1, 2, 3, 4, 5]).should == [1, 2, [3], 4, 5]
165
- end
166
-
167
- describe "new-style hash arguments" do
168
- describe "as the only parameter" do
169
- it "passes without curly braces" do
170
- specs.fooM1(rbx: 'cool', specs: :fail_sometimes, non_sym: 1234).should ==
171
- [{ :rbx => 'cool', :specs => :fail_sometimes, :non_sym => 1234 }]
172
- end
173
-
174
- it "passes without curly braces or parens" do
175
- (specs.fooM1 rbx: 'cool', specs: :fail_sometimes, non_sym: 1234).should ==
176
- [{ :rbx => 'cool', :specs => :fail_sometimes, :non_sym => 1234 }]
177
- end
178
-
179
- it "handles a hanging comma without curly braces" do
180
- # specs.fooM1(abc: 123,).should == [{:abc => 123}]
181
- # specs.fooM1(rbx: 'cool', specs: :fail_sometimes, non_sym: 1234,).should ==
182
- # [{ :rbx => 'cool', :specs => :fail_sometimes, :non_sym => 1234 }]
183
- end
184
- end
185
-
186
- describe "as the last parameter" do
187
- it "passes without curly braces" do
188
- specs.fooM3('abc', 123, rbx: 'cool', specs: :fail_sometimes, non_sym: 1234).should ==
189
- ['abc', 123, { :rbx => 'cool', :specs => :fail_sometimes, :non_sym => 1234 }]
190
- end
191
-
192
- it "passes without curly braces or parens" do
193
- (specs.fooM3 'abc', 123, rbx: 'cool', specs: :fail_sometimes, non_sym: 1234).should ==
194
- ['abc', 123, { :rbx => 'cool', :specs => :fail_sometimes, :non_sym => 1234 }]
195
- end
196
-
197
- it "handles a hanging comma without curly braces" do
198
- # specs.fooM3('abc', 123, abc: 123,).should == ['abc', 123, {:abc => 123}]
199
- # specs.fooM3('abc', 123, rbx: 'cool', specs: :fail_sometimes, non_sym: 1234,).should ==
200
- # ['abc', 123, { :rbx => 'cool', :specs => :fail_sometimes, :non_sym => 1234 }]
201
- end
202
- end
203
- end
204
-
205
- describe "mixed new- and old-style hash arguments" do
206
- describe "as the only parameter" do
207
- it "passes without curly braces" do
208
- specs.fooM1(rbx: 'cool', :specs => :fail_sometimes, non_sym: 1234).should ==
209
- [{ :rbx => 'cool', :specs => :fail_sometimes, :non_sym => 1234 }]
210
- end
211
-
212
- it "passes without curly braces or parens" do
213
- (specs.fooM1 :rbx => 'cool', specs: :fail_sometimes, non_sym: 1234).should ==
214
- [{ :rbx => 'cool', :specs => :fail_sometimes, :non_sym => 1234 }]
215
- end
216
-
217
- it "handles a hanging comma without curly braces" do
218
- # specs.fooM1(rbx: 'cool', specs: :fail_sometimes, :non_sym => 1234,).should ==
219
- # [{ :rbx => 'cool', :specs => :fail_sometimes, :non_sym => 1234 }]
220
- end
221
- end
222
-
223
- describe "as the last parameter" do
224
- it "passes without curly braces" do
225
- specs.fooM3('abc', 123, rbx: 'cool', :specs => :fail_sometimes, non_sym: 1234).should ==
226
- ['abc', 123, { :rbx => 'cool', :specs => :fail_sometimes, :non_sym => 1234 }]
227
- end
228
-
229
- it "passes without curly braces or parens" do
230
- (specs.fooM3 'abc', 123, :rbx => 'cool', specs: :fail_sometimes, non_sym: 1234).should ==
231
- ['abc', 123, { :rbx => 'cool', :specs => :fail_sometimes, :non_sym => 1234 }]
232
- end
233
-
234
- it "handles a hanging comma without curly braces" do
235
- # specs.fooM3('abc', 123, rbx: 'cool', specs: :fail_sometimes, :non_sym => 1234,).should ==
236
- # ['abc', 123, { :rbx => 'cool', :specs => :fail_sometimes, :non_sym => 1234 }]
237
- end
238
- end
239
- end
240
-
241
- end