diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2015-12-26 15:46:49 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2015-12-26 15:46:49 +0900 |
| commit | d3c6fafaf3fe61961a46338f4ced4d99918a8f35 (patch) | |
| tree | 855a9852647c2fc6facda2a5f39b289d90cfdf53 /mrbgems/mruby-struct | |
| parent | 825ced12ded147fabff1b9abd624ed9fad1c4d2b (diff) | |
| parent | e6a263a16212b3d8c4768c0d3808eaafcb2e7f60 (diff) | |
| download | mruby-d3c6fafaf3fe61961a46338f4ced4d99918a8f35.tar.gz mruby-d3c6fafaf3fe61961a46338f4ced4d99918a8f35.zip | |
Merge pull request #2331 from take-cheeze/struct_test
Improve `Struct` test.
Diffstat (limited to 'mrbgems/mruby-struct')
| -rw-r--r-- | mrbgems/mruby-struct/src/struct.c | 8 | ||||
| -rw-r--r-- | mrbgems/mruby-struct/test/struct.rb | 37 |
2 files changed, 28 insertions, 17 deletions
diff --git a/mrbgems/mruby-struct/src/struct.c b/mrbgems/mruby-struct/src/struct.c index 17455c155..ea91a0436 100644 --- a/mrbgems/mruby-struct/src/struct.c +++ b/mrbgems/mruby-struct/src/struct.c @@ -455,7 +455,7 @@ struct_aref_sym(mrb_state *mrb, mrb_value s, mrb_sym id) return ptr[i]; } } - mrb_raisef(mrb, E_INDEX_ERROR, "no member '%S' in struct", mrb_sym2str(mrb, id)); + mrb_name_error(mrb, id, "no member '%S' in struct", mrb_sym2str(mrb, id)); return mrb_nil_value(); /* not reached */ } @@ -503,7 +503,7 @@ mrb_struct_aref(mrb_state *mrb, mrb_value s) mrb_value sym = mrb_check_intern_str(mrb, idx); if (mrb_nil_p(sym)) { - mrb_raisef(mrb, E_INDEX_ERROR, "no member '%S' in struct", idx); + mrb_name_error(mrb, mrb_intern_str(mrb, idx), "no member '%S' in struct", idx); } idx = sym; } @@ -535,7 +535,7 @@ mrb_struct_aset_sym(mrb_state *mrb, mrb_value s, mrb_sym id, mrb_value val) return val; } } - mrb_raisef(mrb, E_INDEX_ERROR, "no member '%S' in struct", mrb_sym2str(mrb, id)); + mrb_name_error(mrb, id, "no member '%S' in struct", mrb_sym2str(mrb, id)); return val; /* not reach */ } @@ -574,7 +574,7 @@ mrb_struct_aset(mrb_state *mrb, mrb_value s) mrb_value sym = mrb_check_intern_str(mrb, idx); if (mrb_nil_p(sym)) { - mrb_raisef(mrb, E_INDEX_ERROR, "no member '%S' in struct", idx); + mrb_name_error(mrb, mrb_intern_str(mrb, idx), "no member '%S' in struct", idx); } idx = sym; } diff --git a/mrbgems/mruby-struct/test/struct.rb b/mrbgems/mruby-struct/test/struct.rb index 2db8f5d32..0307bb1db 100644 --- a/mrbgems/mruby-struct/test/struct.rb +++ b/mrbgems/mruby-struct/test/struct.rb @@ -2,42 +2,55 @@ # Struct ISO Test assert('Struct', '15.2.18') do - Struct.class == Class + assert_equal Class, Struct.class end assert('Struct.new', '15.2.18.3.1') do c = Struct.new(:m1, :m2) - c.superclass == Struct and - c.members == [:m1,:m2] + assert_equal Struct, c.superclass + assert_equal [:m1, :m2], c.members end # Check crash bug with Struc.new and no params. assert('Struct.new', '15.2.18.3.1') do c = Struct.new() - c.superclass == Struct and c.members == [] + assert_equal Struct, c.superclass + assert_equal [], c.members end assert('Struct#==', '15.2.18.4.1') do c = Struct.new(:m1, :m2) cc1 = c.new(1,2) cc2 = c.new(1,2) - cc1 == cc2 + assert_true cc1 == cc2 end assert('Struct#[]', '15.2.18.4.2') do c = Struct.new(:m1, :m2) cc = c.new(1,2) - cc[:m1] == 1 and cc["m2"] == 2 + assert_equal 1, cc[:m1] + assert_equal 2, cc["m2"] + assert_equal 1, cc[0] + assert_equal 2, cc[-1] + assert_raise(TypeError) { cc[[]] } + assert_raise(IndexError) { cc[2] } + assert_raise(NameError) { cc['tama'] } end assert('Struct#[]=', '15.2.18.4.3') do c = Struct.new(:m1, :m2) cc = c.new(1,2) cc[:m1] = 3 - cc[:m1] == 3 + assert_equal 3, cc[:m1] cc["m2"] = 3 assert_equal 3, cc["m2"] + cc[0] = 4 + assert_equal 4, cc[0] + cc[-1] = 5 + assert_equal 5, cc[-1] assert_raise(TypeError) { cc[[]] = 3 } + assert_raise(IndexError) { cc[2] = 7 } + assert_raise(NameError) { cc['pochi'] = 8 } end assert('Struct#each', '15.2.18.4.4') do @@ -47,7 +60,7 @@ assert('Struct#each', '15.2.18.4.4') do cc.each{|x| a << x } - a[0] == 1 and a[1] == 2 + assert_equal [1, 2], a end assert('Struct#each_pair', '15.2.18.4.5') do @@ -57,19 +70,17 @@ assert('Struct#each_pair', '15.2.18.4.5') do cc.each_pair{|k,v| a << [k,v] } - a[0] == [:m1, 1] and a[1] == [:m2, 2] + assert_equal [[:m1, 1], [:m2, 2]], a end assert('Struct#members', '15.2.18.4.6') do c = Struct.new(:m1, :m2) - cc = c.new(1,2) - cc.members == [:m1,:m2] + assert_equal [:m1, :m2], c.new(1,2).members end assert('Struct#select', '15.2.18.4.7') do c = Struct.new(:m1, :m2) - cc = c.new(1,2) - cc.select{|v| v % 2 == 0} == [2] + assert_equal([2]) { c.new(1,2).select{|v| v % 2 == 0} } end assert('large struct') do |
