From 3d94022b54aab83347cfbab26bb5e8e9b3f290b6 Mon Sep 17 00:00:00 2001 From: take_cheeze Date: Thu, 29 May 2014 21:49:49 +0900 Subject: Replace return value result passing with `assert_*` in `Struct` test. --- mrbgems/mruby-struct/test/struct.rb | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'mrbgems/mruby-struct') diff --git a/mrbgems/mruby-struct/test/struct.rb b/mrbgems/mruby-struct/test/struct.rb index 911e657bd..00069b099 100644 --- a/mrbgems/mruby-struct/test/struct.rb +++ b/mrbgems/mruby-struct/test/struct.rb @@ -2,39 +2,41 @@ # 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"] 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"] assert_raise(TypeError) { cc[[]] = 3 } @@ -47,7 +49,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 +59,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 -- cgit v1.2.3 From a2f5840b60ac9acbd50e92310130dbae8d0613f9 Mon Sep 17 00:00:00 2001 From: take_cheeze Date: Thu, 29 May 2014 22:03:19 +0900 Subject: Add tests to `Struct#[]` and `Struct#[]=`. --- mrbgems/mruby-struct/test/struct.rb | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'mrbgems/mruby-struct') diff --git a/mrbgems/mruby-struct/test/struct.rb b/mrbgems/mruby-struct/test/struct.rb index 00069b099..17220b1be 100644 --- a/mrbgems/mruby-struct/test/struct.rb +++ b/mrbgems/mruby-struct/test/struct.rb @@ -30,6 +30,10 @@ assert('Struct#[]', '15.2.18.4.2') do cc = c.new(1,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] } end assert('Struct#[]=', '15.2.18.4.3') do @@ -39,7 +43,12 @@ assert('Struct#[]=', '15.2.18.4.3') do 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 } end assert('Struct#each', '15.2.18.4.4') do -- cgit v1.2.3 From e6a263a16212b3d8c4768c0d3808eaafcb2e7f60 Mon Sep 17 00:00:00 2001 From: take_cheeze Date: Thu, 29 May 2014 22:08:33 +0900 Subject: Raise `NameError` as defined in specification when `Struct` member isn't found. --- mrbgems/mruby-struct/src/struct.c | 8 ++++---- mrbgems/mruby-struct/test/struct.rb | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'mrbgems/mruby-struct') diff --git a/mrbgems/mruby-struct/src/struct.c b/mrbgems/mruby-struct/src/struct.c index 930384806..85e1ce0ee 100644 --- a/mrbgems/mruby-struct/src/struct.c +++ b/mrbgems/mruby-struct/src/struct.c @@ -512,7 +512,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 */ } @@ -560,7 +560,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; } @@ -591,7 +591,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 */ } @@ -630,7 +630,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 17220b1be..172058ecd 100644 --- a/mrbgems/mruby-struct/test/struct.rb +++ b/mrbgems/mruby-struct/test/struct.rb @@ -34,6 +34,7 @@ assert('Struct#[]', '15.2.18.4.2') do 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 @@ -49,6 +50,7 @@ assert('Struct#[]=', '15.2.18.4.3') do 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 -- cgit v1.2.3