opal 0.3.42 → 0.3.43
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.
- data/CHANGELOG.md +29 -0
- data/CONTRIBUTING.md +9 -1
- data/Rakefile +58 -21
- data/config.ru +14 -0
- data/examples/rack/Gemfile +3 -0
- data/examples/rack/README.md +22 -0
- data/examples/rack/app/app.rb +5 -0
- data/examples/rack/config.ru +20 -0
- data/examples/rack/index.html +12 -0
- data/examples/server/Gemfile +3 -0
- data/examples/server/README.md +22 -0
- data/examples/server/app/app.rb +18 -0
- data/examples/server/config.ru +10 -0
- data/examples/server/index.html.erb +10 -0
- data/lib/opal.rb +4 -1
- data/lib/opal/erb.rb +41 -0
- data/lib/opal/lexer.rb +1 -1
- data/lib/opal/parser.rb +5 -12
- data/lib/opal/processor.rb +70 -0
- data/lib/opal/server.rb +93 -0
- data/lib/opal/version.rb +1 -1
- data/opal.gemspec +1 -1
- data/opal/{opal/date.rb → date.rb} +0 -0
- data/opal/erb.rb +19 -0
- data/{spec → opal}/fileutils.rb +0 -0
- data/{spec → opal}/iconv.rb +0 -0
- data/opal/observer.rb +202 -0
- data/opal/opal-browser/local_storage.rb +27 -0
- data/opal/opal-browser/script_loader.rb +40 -0
- data/opal/opal-eventable.rb +26 -0
- data/opal/opal-parser.js.erb +8 -3
- data/opal/{opal/template.rb → opal-template.rb} +0 -0
- data/opal/opal.rb +20 -18
- data/opal/opal/array.rb +1 -1
- data/opal/opal/class.rb +6 -1
- data/opal/opal/kernel.rb +1 -1
- data/opal/opal/native.rb +91 -5
- data/opal/opal/runtime.js +39 -8
- data/{spec → opal}/pp.rb +0 -0
- data/opal/{opal/racc.rb → racc.rb} +0 -0
- data/{spec → opal}/rbconfig.rb +0 -0
- data/opal/{opal/strscan.rb → strscan.rb} +0 -0
- data/{spec → opal}/yaml.rb +0 -0
- data/spec/{core_ext → opal}/array/element_reference_spec.rb +0 -0
- data/spec/{core_ext → opal}/array/equal_value_spec.rb +0 -0
- data/spec/{core_ext → opal}/array/fill_spec.rb +0 -0
- data/spec/{core_ext → opal}/array/reduce_spec.rb +0 -0
- data/spec/{core_ext → opal}/array/to_json_spec.rb +0 -0
- data/spec/{core_ext → opal}/basic_object/send_spec.rb +0 -0
- data/spec/{core_ext → opal}/boolean/singleton_class_spec.rb +0 -0
- data/spec/{core_ext → opal}/boolean/to_json_spec.rb +0 -0
- data/spec/opal/browser/local_storage_spec.rb +55 -0
- data/spec/{core_ext → opal}/class/_inherited_spec.rb +0 -0
- data/spec/{core_ext → opal}/class/proc_methods_spec.rb +0 -0
- data/spec/{core_ext → opal}/class/singleton_methods_spec.rb +0 -0
- data/spec/{core_ext → opal}/constants_spec.rb +0 -0
- data/spec/opal/erb/erb_spec.rb +31 -0
- data/spec/opal/eventable_spec.rb +75 -0
- data/spec/{core_ext → opal}/method_missing_spec.rb +0 -0
- data/spec/opal/native/element_reference_spec.rb +40 -0
- data/spec/opal/native/equal_spec.rb +17 -0
- data/spec/opal/native/fixtures/classes.rb +27 -0
- data/spec/opal/native/global_spec.rb +12 -0
- data/spec/opal/native/initialize_spec.rb +8 -0
- data/spec/opal/native/method_missing_spec.rb +53 -0
- data/spec/{core_ext → opal}/native/to_native_spec.rb +1 -1
- data/spec/{core_ext → opal}/nil/to_json_spec.rb +0 -0
- data/spec/opal/runtime/eval_spec.rb +5 -0
- data/spec/opal/runtime/send_spec.rb +34 -0
- data/spec/ospec/main.rb.erb +9 -3
- data/spec/ospec/runner.rb +132 -5
- data/spec/{grammar → parser}/alias_spec.rb +0 -0
- data/spec/{grammar → parser}/and_spec.rb +0 -0
- data/spec/{grammar → parser}/array_spec.rb +0 -0
- data/spec/{grammar → parser}/attrasgn_spec.rb +0 -0
- data/spec/{grammar → parser}/begin_spec.rb +0 -0
- data/spec/{grammar → parser}/block_spec.rb +0 -0
- data/spec/{grammar → parser}/break_spec.rb +0 -0
- data/spec/{grammar → parser}/call_spec.rb +0 -0
- data/spec/{grammar → parser}/class_spec.rb +0 -0
- data/spec/{grammar → parser}/const_spec.rb +0 -0
- data/spec/{grammar → parser}/cvar_spec.rb +0 -0
- data/spec/{grammar → parser}/def_spec.rb +0 -0
- data/spec/{grammar → parser}/false_spec.rb +0 -0
- data/spec/{grammar → parser}/file_spec.rb +0 -0
- data/spec/{grammar → parser}/gvar_spec.rb +0 -0
- data/spec/{grammar → parser}/hash_spec.rb +0 -0
- data/spec/{grammar → parser}/iasgn_spec.rb +0 -0
- data/spec/{grammar → parser}/if_spec.rb +0 -0
- data/spec/{grammar → parser}/iter_spec.rb +0 -0
- data/spec/{grammar → parser}/ivar_spec.rb +0 -0
- data/spec/{grammar → parser}/lambda_spec.rb +0 -0
- data/spec/{grammar → parser}/lasgn_spec.rb +0 -0
- data/spec/{grammar → parser}/line_spec.rb +0 -0
- data/spec/{grammar → parser}/lvar_spec.rb +0 -0
- data/spec/{grammar → parser}/masgn_spec.rb +0 -0
- data/spec/{grammar → parser}/module_spec.rb +0 -0
- data/spec/{grammar → parser}/nil_spec.rb +0 -0
- data/spec/{grammar → parser}/not_spec.rb +0 -0
- data/spec/{grammar → parser}/nth_ref_spec.rb +0 -0
- data/spec/{grammar → parser}/op_asgn1_spec.rb +0 -0
- data/spec/{grammar → parser}/op_asgn2_spec.rb +0 -0
- data/spec/{grammar → parser}/or_spec.rb +0 -0
- data/spec/{grammar → parser}/parser_spec.rb +0 -0
- data/spec/{grammar → parser}/return_spec.rb +0 -0
- data/spec/{grammar → parser}/sclass_spec.rb +0 -0
- data/spec/{grammar → parser}/self_spec.rb +0 -0
- data/spec/{grammar → parser}/str_spec.rb +0 -0
- data/spec/{grammar → parser}/string_spec.rb +0 -0
- data/spec/{grammar → parser}/strscan/check_spec.rb +0 -0
- data/spec/{grammar → parser}/strscan/scan_spec.rb +0 -0
- data/spec/{grammar → parser}/super_spec.rb +0 -0
- data/spec/{grammar → parser}/true_spec.rb +0 -0
- data/spec/{grammar → parser}/undef_spec.rb +0 -0
- data/spec/{grammar → parser}/unless_spec.rb +0 -0
- data/spec/{grammar → parser}/while_spec.rb +0 -0
- data/spec/{grammar → parser}/xstr_spec.rb +0 -0
- data/spec/{grammar → parser}/yield_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/allocate_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/append_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/array_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/assoc_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/at_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/choice_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/clear_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/clone_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/collect_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/combination_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/compact_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/comparison_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/concat_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/constructor_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/count_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/delete_at_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/delete_if_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/delete_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/drop_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/drop_while_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/dup_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/each_index_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/each_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/empty_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/eql_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/fetch_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/find_index_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/first_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/fixtures/classes.rb +0 -0
- data/spec/{core → rubyspec/core}/array/flatten_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/frozen_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/include_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/index_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/insert_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/inspect_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/intersection_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/join_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/keep_if_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/last_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/length_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/map_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/minus_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/multiply_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/new_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/ntimes_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/plus_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/pop_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/push_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/rassoc_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/reject_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/replace_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/reverse_each_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/reverse_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/rindex_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/select_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shared/collect.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shared/enumeratorize.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shared/eql.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shared/index.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shared/inspect.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shared/join.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shared/keep_if.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shared/length.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shared/replace.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shared/slice.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shift_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/shuffle_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/size_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/slice_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/sort_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/take_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/take_while_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/to_a_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/to_ary_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/try_convert_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/uniq_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/unshift_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/array/zip_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/class/bridge_class_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/class/extend_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/class/fixtures/classes.rb +0 -0
- data/spec/{core → rubyspec/core}/class/instance_methods_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/class/last_value_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/class/new_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/all_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/any_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/collect_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/count_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/detect_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/drop_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/drop_while_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/each_slice_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/each_with_index_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/each_with_object_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/entries_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/find_all_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/find_index_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/find_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/first_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/fixtures/classes.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/grep_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/group_by_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/select_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/take_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerable/to_a_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerator/each_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerator/new_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerator/next_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/enumerator/rewind_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/false/and_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/false/inspect_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/false/or_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/false/to_s_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/false/xor_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/allocate_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/assoc_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/clear_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/clone_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/constructor_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/default_proc_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/default_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/delete_if_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/delete_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/dup_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/each_key_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/each_pair_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/each_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/each_value_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/element_reference_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/element_set_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/empty_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/fetch_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/flatten_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/has_key_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/has_value_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/include_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/index_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/indexes_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/indices_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/invert_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/keep_if_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/key_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/keys_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/length_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/member_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/merge_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/new_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/rassoc_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/reject_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/replace_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/select_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/shift_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/size_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/to_a_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/to_json_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/to_native_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/update_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/value_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/values_at_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/hash/values_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/json/parse_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/Array_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/block_given.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/class_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/define_singleton_method_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/eql_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/equal_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/equal_value_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/extend_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/format_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/instance_eval_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/instance_variable_get_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/instance_variable_set_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/loop_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/match_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/method_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/methods_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/nil_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/p_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/printf_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/proc_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/rand_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/respond_to_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/send_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/sprintf_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/tap_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/to_json_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/kernel/to_s_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/matchdata/to_a_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/module/alias_method_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/module/ancestors_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/module/append_features_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/module/const_get_spec.rb +0 -0
- data/spec/rubyspec/core/module/const_missing_spec.rb +18 -0
- data/spec/{core → rubyspec/core}/module/const_set_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/module/fixtures/classes.rb +0 -0
- data/spec/{core → rubyspec/core}/module/method_defined_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/module/module_function_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/module/undef_method_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/nil/and_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/nil/dup_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/nil/inspect_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/nil/nil_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/nil/or_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/nil/to_a_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/nil/to_f_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/nil/to_h_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/nil/to_i_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/nil/to_s_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/nil/xor_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/abs_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/bit_and_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/bit_or_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/bit_xor_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/ceil_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/chr_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/comparison_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/complement_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/divide_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/downto_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/eql_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/equal_value_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/even_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/exponent_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/floor_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/gt_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/gte_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/integer_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/left_shift_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/lt_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/lte_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/magnitude_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/minus_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/modulo_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/multiply_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/next_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/odd_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/ord_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/plus_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/pred_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/right_shift_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/succ_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/times_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/to_f_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/to_i_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/to_json_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/to_s_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/uminus_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/upto_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/numeric/zero_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/proc/call_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/proc/element_reference_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/proc/proc_tricks_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/range/begin_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/range/case_compare_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/range/end_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/regexp/match_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/runtime/call_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/runtime/class_hierarchy_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/runtime/def_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/runtime/defined_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/runtime/super_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/capitalize_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/casecmp_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/chomp_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/chop_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/chr_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/comparison_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/demodulize_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/downcase_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/element_reference_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/empty_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/end_with_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/fixtures/classes.rb +0 -0
- data/spec/{core → rubyspec/core}/string/format_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/gsub_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/include_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/intern_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/length_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/lstrip_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/match_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/next_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/ord_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/partition_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/reverse_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/rstrip_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/size_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/slice_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/split_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/start_with_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/strip_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/sub_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/succ_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/sum_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/swapcase_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/to_a_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/to_f_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/to_i_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/to_json_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/to_s_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/to_str_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/to_sym_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/underscore_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/string/upcase_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/symbol/to_proc_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/time/at_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/time/day_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/time/friday_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/time/hour_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/time/min_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/time/monday_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/time/month_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/time/now_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/time/saturday_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/true/and_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/true/inspect_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/true/or_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/true/to_s_spec.rb +0 -0
- data/spec/{core → rubyspec/core}/true/xor_spec.rb +0 -0
- data/spec/rubyspec/filters/bugs/alias.rb +6 -0
- data/spec/{filters → rubyspec/filters/bugs}/ancestors.rb +0 -0
- data/spec/rubyspec/filters/bugs/array.rb +5 -0
- data/spec/{filters → rubyspec/filters/bugs}/array_delete.rb +0 -0
- data/spec/{filters → rubyspec/filters/bugs}/array_fetch.rb +0 -0
- data/spec/{filters → rubyspec/filters/bugs}/array_first.rb +0 -0
- data/spec/{filters → rubyspec/filters/bugs}/array_flatten.rb +0 -0
- data/spec/{filters → rubyspec/filters/bugs}/array_intersection.rb +0 -0
- data/spec/{filters → rubyspec/filters/bugs}/array_join.rb +0 -0
- data/spec/{filters → rubyspec/filters/bugs}/block_args.rb +0 -0
- data/spec/rubyspec/filters/bugs/break.rb +10 -0
- data/spec/rubyspec/filters/bugs/case.rb +8 -0
- data/spec/{filters → rubyspec/filters/bugs}/coerce_integer.rb +0 -0
- data/spec/rubyspec/filters/bugs/kernel/instance_variables.rb +3 -0
- data/spec/rubyspec/filters/bugs/language/class.rb +11 -0
- data/spec/rubyspec/filters/bugs/language/class_variables.rb +12 -0
- data/spec/rubyspec/filters/bugs/module/class_variables.rb +6 -0
- data/spec/rubyspec/filters/bugs/public_methods.rb +3 -0
- data/spec/{filters → rubyspec/filters/mspec}/mocks.rb +0 -0
- data/spec/rubyspec/filters/mspec/ruby_exe.rb +5 -0
- data/spec/{filters → rubyspec/filters/mspec}/should_receive.rb +1 -0
- data/spec/rubyspec/filters/parser/block_args.rb +51 -0
- data/spec/{filters → rubyspec/filters/unsupported}/array_subclasses.rb +0 -0
- data/spec/{filters → rubyspec/filters/unsupported}/frozen.rb +0 -0
- data/spec/{filters → rubyspec/filters/unsupported}/tainted.rb +0 -0
- data/spec/{fixtures → rubyspec/fixtures}/class.rb +0 -0
- data/spec/{fixtures → rubyspec/fixtures}/class_variables.rb +0 -0
- data/spec/rubyspec/fixtures/constants.rb +20 -0
- data/spec/{language → rubyspec/language}/alias_spec.rb +7 -7
- data/spec/{language → rubyspec/language}/and_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/array_spec.rb +3 -3
- data/spec/{language → rubyspec/language}/block_spec.rb +59 -59
- data/spec/{language → rubyspec/language}/break_spec.rb +15 -19
- data/spec/{language → rubyspec/language}/case_spec.rb +6 -6
- data/spec/{language → rubyspec/language}/class_spec.rb +16 -18
- data/spec/{language → rubyspec/language}/class_variable_spec.rb +10 -10
- data/spec/{language → rubyspec/language}/def_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/defined_spec.rb +2 -2
- data/spec/{language → rubyspec/language}/ensure_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/execution_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/array.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/block.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/break.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/ensure.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/literal_lambda.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/metaclass.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/module.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/next.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/return.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/send.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/send_1.9.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/super.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/variables.rb +0 -0
- data/spec/{language → rubyspec/language}/fixtures/yield.rb +0 -0
- data/spec/{language → rubyspec/language}/for_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/hash_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/if_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/literal_lambda_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/loop_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/metaclass_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/module_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/next_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/not_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/numbers_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/or_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/order_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/precedence_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/predefined_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/proc_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/redo_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/regexp_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/rescue_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/retry_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/return_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/send_spec.rb +0 -1
- data/spec/{language → rubyspec/language}/singleton_class_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/string_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/super_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/symbol_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/undef_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/unless_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/until_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/variables_spec.rb +3 -3
- data/spec/{language → rubyspec/language}/versions/array_1.9.rb +0 -0
- data/spec/{language → rubyspec/language}/versions/case_1.9.rb +0 -0
- data/spec/{language → rubyspec/language}/versions/hash_1.9.rb +0 -0
- data/spec/{language → rubyspec/language}/versions/literal_lambda_1.9.rb +0 -0
- data/spec/{language → rubyspec/language}/versions/not_1.9.rb +0 -0
- data/spec/{language → rubyspec/language}/versions/send_1.9.rb +0 -0
- data/spec/{language → rubyspec/language}/versions/symbol_1.9.rb +0 -0
- data/spec/{language → rubyspec/language}/versions/variables_1.9.rb +0 -0
- data/spec/{language → rubyspec/language}/while_spec.rb +0 -0
- data/spec/{language → rubyspec/language}/yield_spec.rb +0 -0
- data/spec/{library → rubyspec/library}/date/new_spec.rb +0 -0
- data/spec/{library → rubyspec/library}/date/to_s_spec.rb +0 -0
- data/spec/{library → rubyspec/library}/date/today_spec.rb +0 -0
- data/spec/rubyspec/library/observer/add_observer_spec.rb +31 -0
- data/spec/rubyspec/library/observer/count_observers_spec.rb +33 -0
- data/spec/rubyspec/library/observer/delete_observer_spec.rb +19 -0
- data/spec/rubyspec/library/observer/delete_observers_spec.rb +19 -0
- data/spec/rubyspec/library/observer/fixtures/classes.rb +25 -0
- data/spec/rubyspec/library/observer/notify_observers_spec.rb +31 -0
- data/spec/rubyspec/spec_helper.rb +59 -0
- data/spec/simple_erb_template.opalerb +1 -0
- data/spec/spec_helper.rb +0 -59
- data/spec/templates/foo/bar.opalerb +1 -0
- data/spec/templates/prefixed.opalerb +1 -0
- metadata +1028 -961
- data/opal/opal/browser_loader.js +0 -57
- data/spec/core_ext/native/fixtures/classes.rb +0 -5
- data/spec/core_ext/native/initialize_spec.rb +0 -8
- data/spec/core_ext/native/method_missing_spec.rb +0 -8
- data/spec/date.rb +0 -0
- data/spec/fixtures/constants.rb +0 -0
- data/spec/ospec/filter.rb +0 -32
- data/spec/ospec/phantom.rb +0 -97
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
opal_filter "break" do
|
|
2
|
+
fails "The break statement in a captured block when the invocation of the scope creating the block is still active raises a LocalJumpError when invoking the block from the scope creating the block"
|
|
3
|
+
fails "The break statement in a captured block when the invocation of the scope creating the block is still active raises a LocalJumpError when invoking the block from a method"
|
|
4
|
+
fails "The break statement in a captured block when the invocation of the scope creating the block is still active raises a LocalJumpError when yielding to the block"
|
|
5
|
+
fails "The break statement in a captured block from a scope that has returned raises a LocalJumpError when calling the block from a method"
|
|
6
|
+
fails "The break statement in a captured block from a scope that has returned raises a LocalJumpError when yielding to the block"
|
|
7
|
+
fails "The break statement in a lambda when the invocation of the scope creating the lambda is still active raises a LocalJumpError when yielding to a lambda passed as a block argument"
|
|
8
|
+
fails "The break statement in a lambda from a scope that has returned raises a LocalJumpError when yielding to a lambda passed as a block argument"
|
|
9
|
+
fails "Executing break from within a block returns from the original invoking method even in case of chained calls"
|
|
10
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
opal_filter "case" do
|
|
2
|
+
fails "The 'case'-construct lets you define a method after the case statement"
|
|
3
|
+
fails "The 'case'-construct with no target expression evaluates the body of the first clause when at least one of its condition expressions is true"
|
|
4
|
+
fails "The 'case'-construct with no target expression evaluates the body of the first when clause that is not false/nil"
|
|
5
|
+
fails "The 'case'-construct with no target expression evaluates the body of the else clause if all when clauses are false/nil"
|
|
6
|
+
fails "The 'case'-construct with no target expression evaluates multiple conditional expressions as a boolean disjunction"
|
|
7
|
+
fails "The 'case'-construct with no target expression evaluates true as only 'true' when true is the first clause"
|
|
8
|
+
end
|
|
File without changes
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
opal_filter "class" do
|
|
2
|
+
fails "A class definition raises TypeError if constant given as class name exists and is not a Module"
|
|
3
|
+
fails "A class definition raises TypeError if the constant qualifying the class is nil"
|
|
4
|
+
fails "A class definition raises TypeError if any constant qualifying the class is not a Module"
|
|
5
|
+
fails "A class definition allows using self as the superclass if self is a class"
|
|
6
|
+
fails "A class definition raises a TypeError if inheriting from a metaclass"
|
|
7
|
+
fails "A class definition extending an object (sclass) raises a TypeError when trying to extend numbers"
|
|
8
|
+
fails "A class definition extending an object (sclass) allows accessing the block of the original scope"
|
|
9
|
+
fails "A class definition extending an object (sclass) can use return to cause the enclosing method to return"
|
|
10
|
+
fails "Reopening a class raises a TypeError when superclasses mismatch"
|
|
11
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
opal_filter "class_variables" do
|
|
2
|
+
fails "A class variable can be accessed from a subclass"
|
|
3
|
+
fails "A class variable is set in the superclass"
|
|
4
|
+
fails "A class variable defined in a module can be accessed from classes that extend the module"
|
|
5
|
+
fails "A class variable defined in a module is not defined in these classes"
|
|
6
|
+
fails "A class variable defined in a module is only updated in the module a method defined in the module is used"
|
|
7
|
+
fails "A class variable defined in a module is updated in the class when a Method defined in the class is used"
|
|
8
|
+
fails "A class variable defined in a module can be accessed inside the class using the module methods"
|
|
9
|
+
fails "A class variable defined in a module can be accessed from modules that extend the module"
|
|
10
|
+
fails "A class variable defined in a module is defined in the extended module"
|
|
11
|
+
fails "A class variable defined in a module is not defined in the extending module"
|
|
12
|
+
end
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
opal_filter "Module#class_variables" do
|
|
2
|
+
fails "A class definition has no class variables"
|
|
3
|
+
fails "A class definition allows the declaration of class variables in the body"
|
|
4
|
+
fails "A class definition allows the declaration of class variables in a class method"
|
|
5
|
+
fails "A class definition allows the declaration of class variables in an instance method"
|
|
6
|
+
end
|
|
File without changes
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
opal_filter "ruby_exe" do
|
|
2
|
+
fails "The break statement in a lambda created at the toplevel returns a value when invoking from the toplevel"
|
|
3
|
+
fails "The break statement in a lambda created at the toplevel returns a value when invoking from a method"
|
|
4
|
+
fails "The break statement in a lambda created at the toplevel returns a value when invoking from a block"
|
|
5
|
+
end
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
opal_filter "should_receive" do
|
|
2
2
|
fails "Array#at tries to convert the passed argument to an Integer using #to_int"
|
|
3
3
|
fails "Array#include? calls == on elements from left to right until success"
|
|
4
|
+
fails "A block taking |a| arguments does not call #to_ary to convert a single yielded object to an Array"
|
|
4
5
|
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
opal_filter "block args" do
|
|
2
|
+
fails "A block allows for a leading space before the arguments"
|
|
3
|
+
fails "A block taking |a, b| arguments assigns 'nil' and 'nil' to the arguments when a single, empty Array is yielded"
|
|
4
|
+
fails "A block taking |a, b| arguments assigns the element of a single element Array to the first argument"
|
|
5
|
+
fails "A block taking |a, b| arguments destructures a single Array value yielded"
|
|
6
|
+
fails "A block taking |a, b| arguments calls #to_ary to convert a single yielded object to an Array"
|
|
7
|
+
fails "A block taking |a, b| arguments does not call #to_ary if the single yielded object is an Array"
|
|
8
|
+
fails "A block taking |a, b| arguments raises an TypeError if #to_ary does not return an Array"
|
|
9
|
+
fails "A block taking |a, *b| arguments assigns 'nil' and '[]' to the arguments when a single, empty Array is yielded"
|
|
10
|
+
fails "A block taking |a, *b| arguments assigns the element of a single element Array to the first argument"
|
|
11
|
+
fails "A block taking |a, *b| arguments destructures a single Array value assigning the remaining values to the rest argument"
|
|
12
|
+
fails "A block taking |a, *b| arguments calls #to_ary to convert a single yielded object to an Array"
|
|
13
|
+
fails "A block taking |a, *b| arguments does not call #to_ary if the single yielded object is an Array"
|
|
14
|
+
fails "A block taking |a, *b| arguments raises an TypeError if #to_ary does not return an Array"
|
|
15
|
+
fails "A block taking |*| arguments does not raise an exception when no values are yielded"
|
|
16
|
+
fails "A block taking |*| arguments does not raise an exception when values are yielded"
|
|
17
|
+
fails "A block taking |*| arguments does not call #to_ary if the single yielded object is an Array"
|
|
18
|
+
fails "A block taking |*| arguments does not call #to_ary if the object does not respond to #to_ary"
|
|
19
|
+
fails "A block taking |*a| arguments does not call #to_ary if the single yielded object is an Array"
|
|
20
|
+
fails "A block taking |a, | arguments assigns nil to the argument when no values are yielded"
|
|
21
|
+
fails "A block taking |a, | arguments assgins the argument a single value yielded"
|
|
22
|
+
fails "A block taking |a, | arguments assigns the argument the first value yielded"
|
|
23
|
+
fails "A block taking |a, | arguments assigns the argument the first of several values yielded when it is an Array"
|
|
24
|
+
fails "A block taking |a, | arguments assigns nil to the argument when passed an empty Array"
|
|
25
|
+
fails "A block taking |a, | arguments assigns the argument the first element of the Array when passed a single Array"
|
|
26
|
+
fails "A block taking |a, | arguments calls #to_ary to convert a single yielded object to an Array"
|
|
27
|
+
fails "A block taking |a, | arguments does not call #to_ary if the single yielded object is an Array"
|
|
28
|
+
fails "A block taking |a, | arguments does not call #to_ary if the object does not respond to #to_ary"
|
|
29
|
+
fails "A block taking |a, | arguments raises an TypeError if #to_ary does not return an Array"
|
|
30
|
+
fails "A block taking |(a, b)| arguments assigns nil to the arguments when yielded no values"
|
|
31
|
+
fails "A block taking |(a, b)| arguments destructures a single Array value yielded"
|
|
32
|
+
fails "A block taking |(a, b)| arguments calls #to_ary to convert a single yielded object to an Array"
|
|
33
|
+
fails "A block taking |(a, b)| arguments does not call #to_ary if the single yielded object is an Array"
|
|
34
|
+
fails "A block taking |(a, b)| arguments does not call #to_ary if the object does not respond to #to_ary"
|
|
35
|
+
fails "A block taking |(a, b)| arguments raises an TypeError if #to_ary does not return an Array"
|
|
36
|
+
fails "A block taking |(a, b), c| arguments assigns nil to the arguments when yielded no values"
|
|
37
|
+
fails "A block taking |(a, b), c| arguments destructures a single one-level Array value yielded"
|
|
38
|
+
fails "A block taking |(a, b), c| arguments destructures a single multi-level Array value yielded"
|
|
39
|
+
fails "A block taking |(a, b), c| arguments calls #to_ary to convert a single yielded object to an Array"
|
|
40
|
+
fails "A block taking |(a, b), c| arguments does not call #to_ary if the single yielded object is an Array"
|
|
41
|
+
fails "A block taking |(a, b), c| arguments does not call #to_ary if the object does not respond to #to_ary"
|
|
42
|
+
fails "A block taking |(a, b), c| arguments raises an TypeError if #to_ary does not return an Array"
|
|
43
|
+
fails "A block taking nested |a, (b, (c, d))| assigns nil to the arguments when yielded no values"
|
|
44
|
+
fails "A block taking nested |a, (b, (c, d))| destructures separate yielded values"
|
|
45
|
+
fails "A block taking nested |a, (b, (c, d))| destructures a single multi-level Array value yielded"
|
|
46
|
+
fails "A block taking nested |a, (b, (c, d))| destructures a single multi-level Array value yielded"
|
|
47
|
+
fails "A block taking nested |a, ((b, c), d)| assigns nil to the arguments when yielded no values"
|
|
48
|
+
fails "A block taking nested |a, ((b, c), d)| destructures separate yielded values"
|
|
49
|
+
fails "A block taking nested |a, ((b, c), d)| destructures a single multi-level Array value yielded"
|
|
50
|
+
fails "A block taking nested |a, ((b, c), d)| destructures a single multi-level Array value yielded"
|
|
51
|
+
end
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module ConstantSpecs
|
|
2
|
+
class ClassA
|
|
3
|
+
CS_CONST10 = :const10_10
|
|
4
|
+
CS_CONST16 = :const16
|
|
5
|
+
CS_CONST17 = :const17_2
|
|
6
|
+
CS_CONST22 = :const22_1
|
|
7
|
+
|
|
8
|
+
def self.const_missing(const)
|
|
9
|
+
const
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def self.constx; CS_CONSTX; end
|
|
13
|
+
def self.const10; CS_CONST10; end
|
|
14
|
+
def self.const16; ParentA.const16; end
|
|
15
|
+
def self.const22; ParentA.const22 { CS_CONST22 }; end
|
|
16
|
+
|
|
17
|
+
def const10; CS_CONST10; end
|
|
18
|
+
def constx; CS_CONSTX; end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -31,7 +31,7 @@ describe "The alias keyword" do
|
|
|
31
31
|
(@obj.methods - original_methods).map {|m| m.to_s }.should == ["__value"]
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
it "adds the new method to the list of public methods" do
|
|
35
35
|
original_methods = @obj.public_methods
|
|
36
36
|
@meta.class_eval do
|
|
37
37
|
alias __value value
|
|
@@ -59,7 +59,7 @@ describe "The alias keyword" do
|
|
|
59
59
|
@obj.value.should == 5
|
|
60
60
|
end
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
it "operates on the object's metaclass when used in instance_eval" do
|
|
63
63
|
@obj.instance_eval do
|
|
64
64
|
alias __value value
|
|
65
65
|
end
|
|
@@ -68,7 +68,7 @@ describe "The alias keyword" do
|
|
|
68
68
|
lambda { AliasObject.new.__value }.should raise_error(NoMethodError)
|
|
69
69
|
end
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
it "operates on methods defined via attr, attr_reader, and attr_accessor" do
|
|
72
72
|
@obj.prep
|
|
73
73
|
@obj.instance_eval do
|
|
74
74
|
alias afoo foo
|
|
@@ -82,7 +82,7 @@ describe "The alias keyword" do
|
|
|
82
82
|
@obj.abaz.should == 5
|
|
83
83
|
end
|
|
84
84
|
|
|
85
|
-
|
|
85
|
+
it "operates on methods with splat arguments" do
|
|
86
86
|
class AliasObject2;end
|
|
87
87
|
AliasObject2.class_eval do
|
|
88
88
|
def test(*args)
|
|
@@ -111,7 +111,7 @@ describe "The alias keyword" do
|
|
|
111
111
|
@obj.test(1,2,3,4,5).should == 4
|
|
112
112
|
end
|
|
113
113
|
|
|
114
|
-
|
|
114
|
+
it "operates on methods with splat arguments defined in a superclass" do
|
|
115
115
|
class AliasObject3;end
|
|
116
116
|
class Sub3 < AliasObject3;end
|
|
117
117
|
AliasObject3.class_eval do
|
|
@@ -129,7 +129,7 @@ describe "The alias keyword" do
|
|
|
129
129
|
Sub3.new.test(1,2,3,4,5).should == 4
|
|
130
130
|
end
|
|
131
131
|
|
|
132
|
-
|
|
132
|
+
it "operates on methods with splat arguments defined in a superclass using text block for class eval" do
|
|
133
133
|
class Sub < AliasObject;end
|
|
134
134
|
AliasObject.class_eval <<-code
|
|
135
135
|
def test(*args)
|
|
@@ -144,7 +144,7 @@ describe "The alias keyword" do
|
|
|
144
144
|
Sub.new.test("testing").should == 4
|
|
145
145
|
end
|
|
146
146
|
|
|
147
|
-
|
|
147
|
+
it "is not allowed against Fixnum or String instances" do
|
|
148
148
|
lambda do
|
|
149
149
|
1.instance_eval do
|
|
150
150
|
alias :foo :to_s
|
|
File without changes
|
|
@@ -67,14 +67,14 @@ describe "The unpacking splat operator (*)" do
|
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
ruby_bug "#5124", "1.9.3.194" do
|
|
70
|
-
|
|
70
|
+
it "returns a new array containing the same values when applied to an array inside an empty array" do
|
|
71
71
|
splatted_array = [3, 4, 5]
|
|
72
72
|
[*splatted_array].should == splatted_array
|
|
73
73
|
[*splatted_array].should_not equal(splatted_array)
|
|
74
74
|
end
|
|
75
75
|
end
|
|
76
76
|
|
|
77
|
-
|
|
77
|
+
it "unpacks the start and count arguments in an array slice assignment" do
|
|
78
78
|
alphabet_1 = ['a'..'z'].to_a
|
|
79
79
|
alphabet_2 = alphabet_1.dup
|
|
80
80
|
start_and_count_args = [1, 10]
|
|
@@ -85,7 +85,7 @@ describe "The unpacking splat operator (*)" do
|
|
|
85
85
|
alphabet_1.should == alphabet_2
|
|
86
86
|
end
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
it "unpacks arguments as if they were listed statically" do
|
|
89
89
|
static = [1,2,3,4]
|
|
90
90
|
receiver = static.dup
|
|
91
91
|
args = [0,1]
|
|
@@ -11,12 +11,12 @@ describe "A block" do
|
|
|
11
11
|
@y.z { var }.should == 1
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
it "allows for a leading space before the arguments" do
|
|
15
15
|
# res = @y.s (:a){ 1 }
|
|
16
16
|
# res.should == 1
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
it "allows to define a block variable with the same name as the enclosing block" do
|
|
20
20
|
o = BlockSpecs::OverwriteBlockVariable.new
|
|
21
21
|
o.z { 1 }.should == 1
|
|
22
22
|
end
|
|
@@ -66,7 +66,7 @@ describe "A block" do
|
|
|
66
66
|
@y.s(1) { |a| a }.should == 1
|
|
67
67
|
end
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
it "does not call #to_ary to convert a single yielded object to an Array" do
|
|
70
70
|
obj = mock("block yield to_ary")
|
|
71
71
|
obj.should_not_receive(:to_ary)
|
|
72
72
|
|
|
@@ -107,17 +107,17 @@ describe "A block" do
|
|
|
107
107
|
@y.m([1, 2], 3, 4) { |a, b| [a, b] }.should == [[1, 2], 3]
|
|
108
108
|
end
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
it "assigns 'nil' and 'nil' to the arguments when a single, empty Array is yielded" do
|
|
111
111
|
@y.s([]) { |a, b| [a, b] }.should == [nil, nil]
|
|
112
112
|
end
|
|
113
113
|
|
|
114
|
-
|
|
114
|
+
it "assigns the element of a single element Array to the first argument" do
|
|
115
115
|
@y.s([1]) { |a, b| [a, b] }.should == [1, nil]
|
|
116
116
|
@y.s([nil]) { |a, b| [a, b] }.should == [nil, nil]
|
|
117
117
|
@y.s([[]]) { |a, b| [a, b] }.should == [[], nil]
|
|
118
118
|
end
|
|
119
119
|
|
|
120
|
-
|
|
120
|
+
it "destructures a single Array value yielded" do
|
|
121
121
|
@y.s([1, 2, 3]) { |a, b| [a, b] }.should == [1, 2]
|
|
122
122
|
end
|
|
123
123
|
|
|
@@ -129,20 +129,20 @@ describe "A block" do
|
|
|
129
129
|
end
|
|
130
130
|
|
|
131
131
|
ruby_version_is "1.9" do
|
|
132
|
-
|
|
132
|
+
it "destructures a splatted Array" do
|
|
133
133
|
@y.r([[]]) { |a, b| [a, b] }.should == [nil, nil]
|
|
134
134
|
@y.r([[1]]) { |a, b| [a, b] }.should == [1, nil]
|
|
135
135
|
end
|
|
136
136
|
end
|
|
137
137
|
|
|
138
|
-
|
|
138
|
+
it "calls #to_ary to convert a single yielded object to an Array" do
|
|
139
139
|
obj = mock("block yield to_ary")
|
|
140
140
|
obj.should_receive(:to_ary).and_return([1, 2])
|
|
141
141
|
|
|
142
142
|
@y.s(obj) { |a, b| [a, b] }.should == [1, 2]
|
|
143
143
|
end
|
|
144
144
|
|
|
145
|
-
|
|
145
|
+
it "does not call #to_ary if the single yielded object is an Array" do
|
|
146
146
|
obj = [1, 2]
|
|
147
147
|
obj.should_not_receive(:to_ary)
|
|
148
148
|
|
|
@@ -155,7 +155,7 @@ describe "A block" do
|
|
|
155
155
|
@y.s(obj) { |a, b| [a, b] }.should == [obj, nil]
|
|
156
156
|
end
|
|
157
157
|
|
|
158
|
-
|
|
158
|
+
it "raises an TypeError if #to_ary does not return an Array" do
|
|
159
159
|
obj = mock("block yield to_ary invalid")
|
|
160
160
|
obj.should_receive(:to_ary).and_return(1)
|
|
161
161
|
|
|
@@ -172,11 +172,11 @@ describe "A block" do
|
|
|
172
172
|
@y.m(1, 2, 3) { |a, *b| [a, b] }.should == [1, [2, 3]]
|
|
173
173
|
end
|
|
174
174
|
|
|
175
|
-
|
|
175
|
+
it "assigns 'nil' and '[]' to the arguments when a single, empty Array is yielded" do
|
|
176
176
|
@y.s([]) { |a, *b| [a, b] }.should == [nil, []]
|
|
177
177
|
end
|
|
178
178
|
|
|
179
|
-
|
|
179
|
+
it "assigns the element of a single element Array to the first argument" do
|
|
180
180
|
@y.s([1]) { |a, *b| [a, b] }.should == [1, []]
|
|
181
181
|
@y.s([nil]) { |a, *b| [a, b] }.should == [nil, []]
|
|
182
182
|
@y.s([[]]) { |a, *b| [a, b] }.should == [[], []]
|
|
@@ -190,24 +190,24 @@ describe "A block" do
|
|
|
190
190
|
end
|
|
191
191
|
|
|
192
192
|
ruby_version_is "1.9" do
|
|
193
|
-
|
|
193
|
+
it "destructures a splatted Array" do
|
|
194
194
|
@y.r([[]]) { |a, *b| [a, b] }.should == [nil, []]
|
|
195
195
|
@y.r([[1]]) { |a, *b| [a, b] }.should == [1, []]
|
|
196
196
|
end
|
|
197
197
|
end
|
|
198
198
|
|
|
199
|
-
|
|
199
|
+
it "destructures a single Array value assigning the remaining values to the rest argument" do
|
|
200
200
|
@y.s([1, 2, 3]) { |a, *b| [a, b] }.should == [1, [2, 3]]
|
|
201
201
|
end
|
|
202
202
|
|
|
203
|
-
|
|
203
|
+
it "calls #to_ary to convert a single yielded object to an Array" do
|
|
204
204
|
obj = mock("block yield to_ary")
|
|
205
205
|
obj.should_receive(:to_ary).and_return([1, 2])
|
|
206
206
|
|
|
207
207
|
@y.s(obj) { |a, *b| [a, b] }.should == [1, [2]]
|
|
208
208
|
end
|
|
209
209
|
|
|
210
|
-
|
|
210
|
+
it "does not call #to_ary if the single yielded object is an Array" do
|
|
211
211
|
obj = [1, 2]
|
|
212
212
|
obj.should_not_receive(:to_ary)
|
|
213
213
|
|
|
@@ -220,7 +220,7 @@ describe "A block" do
|
|
|
220
220
|
@y.s(obj) { |a, *b| [a, b] }.should == [obj, []]
|
|
221
221
|
end
|
|
222
222
|
|
|
223
|
-
|
|
223
|
+
it "raises an TypeError if #to_ary does not return an Array" do
|
|
224
224
|
obj = mock("block yield to_ary invalid")
|
|
225
225
|
obj.should_receive(:to_ary).and_return(1)
|
|
226
226
|
|
|
@@ -229,22 +229,22 @@ describe "A block" do
|
|
|
229
229
|
end
|
|
230
230
|
|
|
231
231
|
describe "taking |*| arguments" do
|
|
232
|
-
|
|
232
|
+
it "does not raise an exception when no values are yielded" do
|
|
233
233
|
# @y.z { |*| 1 }.should == 1
|
|
234
234
|
end
|
|
235
235
|
|
|
236
|
-
|
|
236
|
+
it "does not raise an exception when values are yielded" do
|
|
237
237
|
# @y.s(0) { |*| 1 }.should == 1
|
|
238
238
|
end
|
|
239
239
|
|
|
240
|
-
|
|
240
|
+
it "does not call #to_ary if the single yielded object is an Array" do
|
|
241
241
|
obj = [1, 2]
|
|
242
242
|
obj.should_not_receive(:to_ary)
|
|
243
243
|
|
|
244
244
|
# @y.s(obj) { |*| 1 }.should == 1
|
|
245
245
|
end
|
|
246
246
|
|
|
247
|
-
|
|
247
|
+
it "does not call #to_ary if the object does not respond to #to_ary" do
|
|
248
248
|
obj = mock("block yield no to_ary")
|
|
249
249
|
|
|
250
250
|
# @y.s(obj) { |*| 1 }.should == 1
|
|
@@ -258,14 +258,14 @@ describe "A block" do
|
|
|
258
258
|
# @y.s(obj) { |*| 1 }.should == 1
|
|
259
259
|
end
|
|
260
260
|
|
|
261
|
-
|
|
261
|
+
it "does not raise a TypeError if #to_ary returns nil" do
|
|
262
262
|
obj = mock("block yield to_ary nil")
|
|
263
263
|
obj.should_receive(:to_ary).and_return(nil)
|
|
264
264
|
|
|
265
265
|
# @y.s(obj) { |*o| o }.should == [obj]
|
|
266
266
|
end
|
|
267
267
|
|
|
268
|
-
|
|
268
|
+
it "raises an TypeError if #to_ary does not return an Array" do
|
|
269
269
|
obj = mock("block yield to_ary invalid")
|
|
270
270
|
obj.should_receive(:to_ary).and_return(1)
|
|
271
271
|
|
|
@@ -274,7 +274,7 @@ describe "A block" do
|
|
|
274
274
|
end
|
|
275
275
|
|
|
276
276
|
ruby_version_is "1.9" do
|
|
277
|
-
|
|
277
|
+
it "does not call #to_ary to convert a single yielded object to an Array" do
|
|
278
278
|
obj = mock("block yield to_ary")
|
|
279
279
|
obj.should_not_receive(:to_ary)
|
|
280
280
|
|
|
@@ -304,7 +304,7 @@ describe "A block" do
|
|
|
304
304
|
@y.s([1, 2, 3]) { |*a| a }.should == [[1, 2, 3]]
|
|
305
305
|
end
|
|
306
306
|
|
|
307
|
-
|
|
307
|
+
it "does not call #to_ary if the single yielded object is an Array" do
|
|
308
308
|
obj = [1, 2]
|
|
309
309
|
obj.should_not_receive(:to_ary)
|
|
310
310
|
|
|
@@ -334,7 +334,7 @@ describe "A block" do
|
|
|
334
334
|
end
|
|
335
335
|
|
|
336
336
|
ruby_version_is "1.9" do
|
|
337
|
-
|
|
337
|
+
it "does not call #to_ary to convert a single yielded object to an Array" do
|
|
338
338
|
obj = mock("block yield to_ary")
|
|
339
339
|
obj.should_not_receive(:to_ary)
|
|
340
340
|
|
|
@@ -344,51 +344,51 @@ describe "A block" do
|
|
|
344
344
|
end
|
|
345
345
|
|
|
346
346
|
describe "taking |a, | arguments" do
|
|
347
|
-
|
|
347
|
+
it "assigns nil to the argument when no values are yielded" do
|
|
348
348
|
# @y.z { |a, | a }.should be_nil
|
|
349
349
|
end
|
|
350
350
|
|
|
351
|
-
|
|
351
|
+
it "assgins the argument a single value yielded" do
|
|
352
352
|
# @y.s(1) { |a, | a }.should == 1
|
|
353
353
|
end
|
|
354
354
|
|
|
355
|
-
|
|
355
|
+
it "assigns the argument the first value yielded" do
|
|
356
356
|
# @y.m(1, 2) { |a, | a }.should == 1
|
|
357
357
|
end
|
|
358
358
|
|
|
359
|
-
|
|
359
|
+
it "assigns the argument the first of several values yielded when it is an Array" do
|
|
360
360
|
# @y.m([1, 2], 3) { |a, | a }.should == [1, 2]
|
|
361
361
|
end
|
|
362
362
|
|
|
363
|
-
|
|
363
|
+
it "assigns nil to the argument when passed an empty Array" do
|
|
364
364
|
# @y.s([]) { |a, | a }.should be_nil
|
|
365
365
|
end
|
|
366
366
|
|
|
367
|
-
|
|
367
|
+
it "assigns the argument the first element of the Array when passed a single Array" do
|
|
368
368
|
# @y.s([1, 2]) { |a, | a }.should == 1
|
|
369
369
|
end
|
|
370
370
|
|
|
371
|
-
|
|
371
|
+
it "calls #to_ary to convert a single yielded object to an Array" do
|
|
372
372
|
# obj = mock("block yield to_ary")
|
|
373
373
|
# obj.should_receive(:to_ary).and_return([1, 2])
|
|
374
374
|
|
|
375
375
|
# @y.s(obj) { |a, | a }.should == 1
|
|
376
376
|
end
|
|
377
377
|
|
|
378
|
-
|
|
378
|
+
it "does not call #to_ary if the single yielded object is an Array" do
|
|
379
379
|
# obj = [1, 2]
|
|
380
380
|
# obj.should_not_receive(:to_ary)
|
|
381
381
|
|
|
382
382
|
# @y.s(obj) { |a, | a }.should == 1
|
|
383
383
|
end
|
|
384
384
|
|
|
385
|
-
|
|
385
|
+
it "does not call #to_ary if the object does not respond to #to_ary" do
|
|
386
386
|
# obj = mock("block yield no to_ary")
|
|
387
387
|
|
|
388
388
|
# @y.s(obj) { |a, | a }.should == obj
|
|
389
389
|
end
|
|
390
390
|
|
|
391
|
-
|
|
391
|
+
it "raises an TypeError if #to_ary does not return an Array" do
|
|
392
392
|
# obj = mock("block yield to_ary invalid")
|
|
393
393
|
# obj.should_receive(:to_ary).and_return(1)
|
|
394
394
|
|
|
@@ -397,35 +397,35 @@ describe "A block" do
|
|
|
397
397
|
end
|
|
398
398
|
|
|
399
399
|
describe "taking |(a, b)| arguments" do
|
|
400
|
-
|
|
400
|
+
it "assigns nil to the arguments when yielded no values" do
|
|
401
401
|
# @y.z { |(a, b)| [a, b] }.should == [nil, nil]
|
|
402
402
|
end
|
|
403
403
|
|
|
404
|
-
|
|
404
|
+
it "destructures a single Array value yielded" do
|
|
405
405
|
# @y.s([1, 2]) { |(a, b)| [a, b] }.should == [1, 2]
|
|
406
406
|
end
|
|
407
407
|
|
|
408
|
-
|
|
408
|
+
it "calls #to_ary to convert a single yielded object to an Array" do
|
|
409
409
|
obj = mock("block yield to_ary")
|
|
410
410
|
obj.should_receive(:to_ary).and_return([1, 2])
|
|
411
411
|
|
|
412
412
|
# @y.s(obj) { |(a, b)| [a, b] }.should == [1, 2]
|
|
413
413
|
end
|
|
414
414
|
|
|
415
|
-
|
|
415
|
+
it "does not call #to_ary if the single yielded object is an Array" do
|
|
416
416
|
obj = [1, 2]
|
|
417
417
|
obj.should_not_receive(:to_ary)
|
|
418
418
|
|
|
419
419
|
# @y.s(obj) { |(a, b)| [a, b] }.should == [1, 2]
|
|
420
420
|
end
|
|
421
421
|
|
|
422
|
-
|
|
422
|
+
it "does not call #to_ary if the object does not respond to #to_ary" do
|
|
423
423
|
obj = mock("block yield no to_ary")
|
|
424
424
|
|
|
425
425
|
# @y.s(obj) { |(a, b)| [a, b] }.should == [obj, nil]
|
|
426
426
|
end
|
|
427
427
|
|
|
428
|
-
|
|
428
|
+
it "raises an TypeError if #to_ary does not return an Array" do
|
|
429
429
|
obj = mock("block yield to_ary invalid")
|
|
430
430
|
obj.should_receive(:to_ary).and_return(1)
|
|
431
431
|
|
|
@@ -434,39 +434,39 @@ describe "A block" do
|
|
|
434
434
|
end
|
|
435
435
|
|
|
436
436
|
describe "taking |(a, b), c| arguments" do
|
|
437
|
-
|
|
437
|
+
it "assigns nil to the arguments when yielded no values" do
|
|
438
438
|
# @y.z { |(a, b), c| [a, b, c] }.should == [nil, nil, nil]
|
|
439
439
|
end
|
|
440
440
|
|
|
441
|
-
|
|
441
|
+
it "destructures a single one-level Array value yielded" do
|
|
442
442
|
# @y.s([1, 2]) { |(a, b), c| [a, b, c] }.should == [1, nil, 2]
|
|
443
443
|
end
|
|
444
444
|
|
|
445
|
-
|
|
445
|
+
it "destructures a single multi-level Array value yielded" do
|
|
446
446
|
# @y.s([[1, 2, 3], 4]) { |(a, b), c| [a, b, c] }.should == [1, 2, 4]
|
|
447
447
|
end
|
|
448
448
|
|
|
449
|
-
|
|
449
|
+
it "calls #to_ary to convert a single yielded object to an Array" do
|
|
450
450
|
obj = mock("block yield to_ary")
|
|
451
451
|
obj.should_receive(:to_ary).and_return([1, 2])
|
|
452
452
|
|
|
453
453
|
# @y.s(obj) { |(a, b), c| [a, b, c] }.should == [1, nil, 2]
|
|
454
454
|
end
|
|
455
455
|
|
|
456
|
-
|
|
456
|
+
it "does not call #to_ary if the single yielded object is an Array" do
|
|
457
457
|
obj = [1, 2]
|
|
458
458
|
obj.should_not_receive(:to_ary)
|
|
459
459
|
|
|
460
460
|
# @y.s(obj) { |(a, b), c| [a, b, c] }.should == [1, nil, 2]
|
|
461
461
|
end
|
|
462
462
|
|
|
463
|
-
|
|
463
|
+
it "does not call #to_ary if the object does not respond to #to_ary" do
|
|
464
464
|
obj = mock("block yield no to_ary")
|
|
465
465
|
|
|
466
466
|
# @y.s(obj) { |(a, b), c| [a, b, c] }.should == [obj, nil, nil]
|
|
467
467
|
end
|
|
468
468
|
|
|
469
|
-
|
|
469
|
+
it "raises an TypeError if #to_ary does not return an Array" do
|
|
470
470
|
obj = mock("block yield to_ary invalid")
|
|
471
471
|
obj.should_receive(:to_ary).and_return(1)
|
|
472
472
|
|
|
@@ -475,37 +475,37 @@ describe "A block" do
|
|
|
475
475
|
end
|
|
476
476
|
|
|
477
477
|
describe "taking nested |a, (b, (c, d))|" do
|
|
478
|
-
|
|
478
|
+
it "assigns nil to the arguments when yielded no values" do
|
|
479
479
|
# @y.m { |a, (b, (c, d))| [a, b, c, d] }.should == [nil, nil, nil, nil]
|
|
480
480
|
end
|
|
481
481
|
|
|
482
|
-
|
|
482
|
+
it "destructures separate yielded values" do
|
|
483
483
|
# @y.m(1, 2) { |a, (b, (c, d))| [a, b, c, d] }.should == [1, 2, nil, nil]
|
|
484
484
|
end
|
|
485
485
|
|
|
486
|
-
|
|
486
|
+
it "destructures a single multi-level Array value yielded" do
|
|
487
487
|
# @y.m(1, [2, 3]) { |a, (b, (c, d))| [a, b, c, d] }.should == [1, 2, 3, nil]
|
|
488
488
|
end
|
|
489
489
|
|
|
490
|
-
|
|
490
|
+
it "destructures a single multi-level Array value yielded" do
|
|
491
491
|
# @y.m(1, [2, [3, 4]]) { |a, (b, (c, d))| [a, b, c, d] }.should == [1, 2, 3, 4]
|
|
492
492
|
end
|
|
493
493
|
end
|
|
494
494
|
|
|
495
495
|
describe "taking nested |a, ((b, c), d)|" do
|
|
496
|
-
|
|
496
|
+
it "assigns nil to the arguments when yielded no values" do
|
|
497
497
|
# @y.m { |a, ((b, c), d)| [a, b, c, d] }.should == [nil, nil, nil, nil]
|
|
498
498
|
end
|
|
499
499
|
|
|
500
|
-
|
|
500
|
+
it "destructures separate yielded values" do
|
|
501
501
|
# @y.m(1, 2) { |a, ((b, c), d)| [a, b, c, d] }.should == [1, 2, nil, nil]
|
|
502
502
|
end
|
|
503
503
|
|
|
504
|
-
|
|
504
|
+
it "destructures a single multi-level Array value yielded" do
|
|
505
505
|
# @y.m(1, [2, 3]) { |a, ((b, c), d)| [a, b, c, d] }.should == [1, 2, nil, 3]
|
|
506
506
|
end
|
|
507
507
|
|
|
508
|
-
|
|
508
|
+
it "destructures a single multi-level Array value yielded" do
|
|
509
509
|
# @y.m(1, [[2, 3], 4]) { |a, ((b, c), d)| [a, b, c, d] }.should == [1, 2, 3, 4]
|
|
510
510
|
end
|
|
511
511
|
end
|
|
@@ -523,11 +523,11 @@ describe "A block" do
|
|
|
523
523
|
end
|
|
524
524
|
|
|
525
525
|
ruby_version_is "1.9" do
|
|
526
|
-
|
|
526
|
+
it "extracts arguments with _" do
|
|
527
527
|
# @y.m([[1, 2, 3], 4]) { |(_, a, _), _| a }.should == 2
|
|
528
528
|
end
|
|
529
529
|
|
|
530
|
-
|
|
530
|
+
it "assigns the first variable named" do
|
|
531
531
|
# @y.m(1, 2) { |_, _| _ }.should == 1
|
|
532
532
|
end
|
|
533
533
|
end
|