From 24a9e6824a0c617a477b57c3d96dbd1114c4bf9b Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sun, 16 Jun 2024 16:54:20 +0200 Subject: [PATCH] Added tests for the last fix. --- src/gsi/gsi_test/gsiTest.cc | 12 ++--- testdata/ruby/basic_testcore.rb | 84 +++++++++++++++++++++++---------- 2 files changed, 64 insertions(+), 32 deletions(-) diff --git a/src/gsi/gsi_test/gsiTest.cc b/src/gsi/gsi_test/gsiTest.cc index 04b5dbaca..bfc60b9fb 100644 --- a/src/gsi/gsi_test/gsiTest.cc +++ b/src/gsi/gsi_test/gsiTest.cc @@ -1297,10 +1297,10 @@ static gsi::Class decl_b ("", "B", gsi::method ("an_cref", &B::an_cref) + // implemented by extension below: // gsi::iterator_ext ("b10", &b10b_ext, &b10e_ext) + - gsi::iterator ("b10_nc", &B::b10b_nc, &B::b10e_nc) + - gsi::iterator ("b11", &B::b11b, &B::b11e) + - gsi::iterator ("b12", &B::b12b, &B::b12e) + - gsi::iterator ("b13", &B::b13b, &B::b13e) + + gsi::iterator ("b10_nc|each_a_be_nc", &B::b10b_nc, &B::b10e_nc) + + gsi::iterator ("b11|each_a_be_v", &B::b11b, &B::b11e) + + gsi::iterator ("b12|each_a_be_p", &B::b12b, &B::b12e) + + gsi::iterator ("b13|each_a_be_cp", &B::b13b, &B::b13e) + gsi::method ("amember_or_nil_alt|amember_or_nil", &B::amember_or_nil) + gsi::method ("amember_ptr_alt|amember_ptr", &B::amember_ptr) + gsi::method ("xxx|amember_cptr", &B::amember_cptr) + @@ -1444,8 +1444,8 @@ static gsi::Class decl_b ("", "B", // extending B static gsi::ClassExt b_ext ( - gsi::iterator_ext ("b10", &b10b_ext, &b10e_ext) + - gsi::iterator_ext ("b10p", &b10bp_ext, &b10ep_ext) + gsi::iterator_ext ("b10|each_a_be", &b10b_ext, &b10e_ext) + + gsi::iterator_ext ("b10p|each_a_be_pp", &b10bp_ext, &b10ep_ext) ); CopyDetector *new_cd (int x) diff --git a/testdata/ruby/basic_testcore.rb b/testdata/ruby/basic_testcore.rb index 2cbfce073..6183a77d4 100644 --- a/testdata/ruby/basic_testcore.rb +++ b/testdata/ruby/basic_testcore.rb @@ -665,7 +665,7 @@ class Basic_TestClass < TestBase if !$leak_check begin - b.b10 { |a| arr.push(a.get_n) } # b10 is a const iterator - cannot call a1 on it + b.each_a_be { |a| arr.push(a.get_n) } # b10 is a const iterator - cannot call a1 on it rescue err_caught = true end @@ -679,7 +679,7 @@ class Basic_TestClass < TestBase if !$leak_check begin - b.b10p { |a| arr.push(a.get_n) } # b10p is a const iterator - cannot call a1 on it + b.each_a_be_pp { |a| arr.push(a.get_n) } # b10p is a const iterator - cannot call a1 on it rescue err_caught = true end @@ -689,85 +689,85 @@ class Basic_TestClass < TestBase end arr = [] - b.b10 { |a| arr.push(a.dup.get_n) } + b.each_a_be { |a| arr.push(a.dup.get_n) } assert_equal(arr, [100, 121, 144]) arr = [] - b.dup.b10 { |a| arr.push(a.dup.get_n) } + b.dup.each_a_be { |a| arr.push(a.dup.get_n) } assert_equal(arr, [100, 121, 144]) arr = [] - b.b10 { |a| arr.push(a.get_n_const) } + b.each_a_be { |a| arr.push(a.get_n_const) } assert_equal(arr, [100, 121, 144]) arr = [] - b.b10p { |a| arr.push(a.dup.get_n) } + b.each_a_be_pp { |a| arr.push(a.dup.get_n) } assert_equal(arr, [100, 121, 144]) arr = [] - b.dup.b10p { |a| arr.push(a.dup.get_n) } + b.dup.each_a_be_pp { |a| arr.push(a.dup.get_n) } assert_equal(arr, [100, 121, 144]) arr = [] - b.b10p { |a| arr.push(a.get_n_const) } + b.each_a_be_pp { |a| arr.push(a.get_n_const) } assert_equal(arr, [100, 121, 144]) arr = [] - b.b11 { |a| arr.push(a.get_n) } + b.each_a_be_v { |a| arr.push(a.get_n) } assert_equal(arr, [100, 121, 144]) arr = [] - b.dup.b11 { |a| arr.push(a.get_n) } + b.dup.each_a_be_v { |a| arr.push(a.get_n) } assert_equal(arr, [100, 121, 144]) arr = [] - b.b12 { |a| arr.push(a.get_n) } + b.each_a_be_p { |a| arr.push(a.get_n) } assert_equal(arr, [7100, 7121, 7144, 7169]) arr = [] - b.dup.b12 { |a| arr.push(a.get_n) } + b.dup.each_a_be_p { |a| arr.push(a.get_n) } assert_equal(arr, [7100, 7121, 7144, 7169]) - aarr = b.b16a + aarr = b.av arr = [] aarr.each { |a| arr.push(a.get_n) } assert_equal(arr, [100, 121, 144]) - aarr = b.b16b + aarr = b.av_cref arr = [] aarr.each { |a| arr.push(a.get_n) } assert_equal(arr, [100, 121, 144]) - aarr = b.b16c + aarr = b.av_ref arr = [] aarr.each { |a| arr.push(a.get_n) } assert_equal(arr, [100, 121, 144]) - b.b17a( [ RBA::A.new_a( 101 ), RBA::A.new_a( -122 ) ] ) + b.av_cref = [ RBA::A.new_a( 101 ), RBA::A.new_a( -122 ) ] arr = [] - b.b11 { |a| arr.push(a.get_n) } + b.each_a_be_v { |a| arr.push(a.get_n) } assert_equal(arr, [101, -122]) - b.b17a( [] ) + b.av_cref = [] arr = [] - b.b11 { |a| arr.push(a.get_n) } + b.each_a_be_v { |a| arr.push(a.get_n) } assert_equal(arr, []) - b.b17b( [ RBA::A.new_a( 102 ), RBA::A.new_a( -123 ) ] ) + b.av_ref = [ RBA::A.new_a( 102 ), RBA::A.new_a( -123 ) ] arr = [] - b.b11 { |a| arr.push(a.get_n) } + b.each_a_be_v { |a| arr.push(a.get_n) } assert_equal(arr, [102, -123]) - b.b17c( [ RBA::A.new_a( 100 ), RBA::A.new_a( 121 ), RBA::A.new_a( 144 ) ] ) + b.av = [ RBA::A.new_a( 100 ), RBA::A.new_a( 121 ), RBA::A.new_a( 144 ) ] arr = [] - b.b11 { |a| arr.push(a.get_n) } + b.each_a_be_v { |a| arr.push(a.get_n) } assert_equal(arr, [100, 121, 144]) if !$leak_check arr = [] begin - b.b13 { |a| arr.push(a.get_n) } + b.each_a_be_cp { |a| arr.push(a.get_n) } rescue err_caught = true end @@ -777,11 +777,11 @@ class Basic_TestClass < TestBase end arr = [] - b.b13 { |a| arr.push(a.get_n_const) } + b.each_a_be_cp { |a| arr.push(a.get_n_const) } assert_equal(arr, [-3100, -3121]) arr = [] - b.dup.b13 { |a| arr.push(a.get_n_const) } + b.dup.each_a_be_cp { |a| arr.push(a.get_n_const) } assert_equal(arr, [-3100, -3121]) arr = [] @@ -938,6 +938,38 @@ class Basic_TestClass < TestBase end + def _iter_find(b, find) + b.each_a_be do |a| + if a.get_n_const == find + return true + end + end + return false + end + + # Iterator break, return, continue + def test_13c + + b = RBA::B.new + + arr = [] + b.each_a_be { |a| arr.push(a.get_n_const) } + assert_equal(arr, [100, 121, 144]) + + arr = [] + b.each_a_be do |a| + if a.get_n_const == 121 + next + end + arr.push(a.get_n_const) + end + assert_equal(arr, [100, 144]) + + assert_equal(_iter_find(b, 121), true) + assert_equal(_iter_find(b, 122), false) + + end + def test_14 a = RBA::A.new