From 36fc42e7dbb8511efe316647dbbbdc822a929425 Mon Sep 17 00:00:00 2001 From: Akira Yumiyama Date: Tue, 25 Jun 2013 20:16:41 +0900 Subject: add nil.to_a, nil.to_f, nil.to_i methods --- test/t/nil.rb | 1 - 1 file changed, 1 deletion(-) (limited to 'test') diff --git a/test/t/nil.rb b/test/t/nil.rb index 99b1215e9..08d2acdf1 100644 --- a/test/t/nil.rb +++ b/test/t/nil.rb @@ -27,4 +27,3 @@ end assert('NilClass#to_s', '15.2.4.3.5') do assert_equal nil.to_s, '' end - -- cgit v1.2.3 From 57b629a988be7a39140744cd2dfc0da0e7a6a257 Mon Sep 17 00:00:00 2001 From: Jun Hiroe Date: Sun, 30 Jun 2013 22:41:37 +0900 Subject: Add Range#eql? method test. --- test/t/range.rb | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'test') diff --git a/test/t/range.rb b/test/t/range.rb index fdf6b415c..4d0d4cddd 100644 --- a/test/t/range.rb +++ b/test/t/range.rb @@ -72,3 +72,9 @@ assert('Range#member?', '15.2.14.4.11') do assert_true a.member?(5) assert_false a.member?(20) end + +assert('Range#eql?', '15.2.14.4.14') do + assert_true (1..10).eql? (1..10) + assert_false (1..10).eql? (1..100) + assert_false (1..10).eql? "1..10" +end -- cgit v1.2.3 From db0eaa6352da470fdeb735403b858738897e3871 Mon Sep 17 00:00:00 2001 From: h2so5 Date: Sun, 30 Jun 2013 23:40:53 +0900 Subject: Fix Range#== --- src/range.c | 4 ++-- test/t/range.rb | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/src/range.c b/src/range.c index 43de0e799..7dd16ad5f 100644 --- a/src/range.c +++ b/src/range.c @@ -162,8 +162,8 @@ mrb_range_eq(mrb_state *mrb, mrb_value range) rr = mrb_range_ptr(range); ro = mrb_range_ptr(obj); - if (!mrb_obj_equal(mrb, rr->edges->beg, ro->edges->beg) || - !mrb_obj_equal(mrb, rr->edges->end, ro->edges->end) || + if (!mrb_bool(mrb_funcall(mrb, rr->edges->beg, "==", 1, ro->edges->beg)) || + !mrb_bool(mrb_funcall(mrb, rr->edges->end, "==", 1, ro->edges->end)) || rr->excl != ro->excl) { return mrb_false_value(); } diff --git a/test/t/range.rb b/test/t/range.rb index fdf6b415c..e8f57ecd5 100644 --- a/test/t/range.rb +++ b/test/t/range.rb @@ -12,6 +12,7 @@ end assert('Range#==', '15.2.14.4.1') do assert_true (1..10) == (1..10) assert_false (1..10) == (1..100) + assert_true (1..10) == Range.new(1.0, 10.0) end assert('Range#===', '15.2.14.4.2') do -- cgit v1.2.3 From 2e9b2ccf84e578b368d9f5ff06c4f22309987182 Mon Sep 17 00:00:00 2001 From: Jun Hiroe Date: Mon, 1 Jul 2013 22:20:32 +0900 Subject: Add Range#eql? test case. --- test/t/range.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'test') diff --git a/test/t/range.rb b/test/t/range.rb index aa414d386..da25abc0e 100644 --- a/test/t/range.rb +++ b/test/t/range.rb @@ -77,5 +77,6 @@ end assert('Range#eql?', '15.2.14.4.14') do assert_true (1..10).eql? (1..10) assert_false (1..10).eql? (1..100) + assert_false (1..10).eql? (Range.new(1.0, 10.0)) assert_false (1..10).eql? "1..10" end -- cgit v1.2.3 From 1d27d4e03f1957e78c10a088ccf0f16268baaa91 Mon Sep 17 00:00:00 2001 From: Carson McDonald Date: Sat, 6 Jul 2013 08:53:40 -0400 Subject: Add a few more shift tests --- test/t/integer.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'test') diff --git a/test/t/integer.rb b/test/t/integer.rb index 46011f94a..9b19216d9 100644 --- a/test/t/integer.rb +++ b/test/t/integer.rb @@ -104,6 +104,14 @@ assert('Integer#<<', '15.2.8.3.12') do # 00010111 (23) # = 00101110 (46) assert_equal 23 << 1, 46 + + # Left Shift by a negative is Right Shift + assert_equal 46 << -1, 23 + + # Raise when shift is too large + assert_raise(RangeError) do + 2 << 128 + end end assert('Integer#>>', '15.2.8.3.13') do @@ -111,6 +119,17 @@ assert('Integer#>>', '15.2.8.3.13') do # 00101110 (46) # = 00010111 (23) assert_equal 46 >> 1, 23 + + # Right Shift by a negative is Left Shift + assert_equal 23 >> -1, 46 + + # Don't raise on large Right Shift + assert_equal 23 >> 128, 0 + + # Raise when shift is too large + assert_raise(RangeError) do + 2 >> -128 + end end assert('Integer#ceil', '15.2.8.3.14') do -- cgit v1.2.3 From 7be117df4c0e9470e2c806e6132d57e98fbbc27b Mon Sep 17 00:00:00 2001 From: Carson McDonald Date: Wed, 17 Jul 2013 09:42:48 -0400 Subject: Fix string test for so that it works for int16 --- test/t/string.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'test') diff --git a/test/t/string.rb b/test/t/string.rb index ddae92d4a..c208835b4 100644 --- a/test/t/string.rb +++ b/test/t/string.rb @@ -399,12 +399,12 @@ end assert('String#to_i', '15.2.10.5.38') do a = ''.to_i - b = '123456789'.to_i + b = '32143'.to_i c = 'a'.to_i(16) d = '100'.to_i(2) assert_equal a, 0 - assert_equal b, 123456789 + assert_equal b, 32143 assert_equal c, 10 assert_equal d, 4 end -- cgit v1.2.3 From fe5324bd17d1716592b244762173e7478ebf7853 Mon Sep 17 00:00:00 2001 From: Ryan Scott Date: Fri, 19 Jul 2013 22:39:54 +1000 Subject: Wrote tests around attr, attr_reader, attr_writer, attr_accessor --- mrblib/class.rb | 20 ++++--- test/t/module.rb | 180 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 193 insertions(+), 7 deletions(-) (limited to 'test') diff --git a/mrblib/class.rb b/mrblib/class.rb index 4f268b6c8..0678d943d 100644 --- a/mrblib/class.rb +++ b/mrblib/class.rb @@ -1,18 +1,24 @@ class Module # 15.2.2.4.13 def attr_reader(*names) - names.each{|name| - name2 = ('@'+name.to_s).intern + names.each do |name| + name = name.to_s + raise(NameError, "#{name.inspect} is not allowed as an instance variable name") if name.include?('@') || name.include?('?') || name.include?('$') + + name2 = ('@'+name).intern define_method(name){self.instance_variable_get(name2)} - } + end end # 15.2.2.4.14 def attr_writer(*names) - names.each{|name| - name2 = ('@'+name.to_s).intern - name = (name.to_s+"=").intern + names.each do |name| + name = name.to_s + raise(NameError, "#{name.inspect} is not allowed as an instance variable name") if name.include?('@') || name.include?('?') || name.include?('$') + + name2 = ('@'+name).intern + name = (name+"=").intern define_method(name){|v|self.instance_variable_set(name2,v)} - } + end end # 15.2.2.4.12 def attr_accessor(*names) diff --git a/test/t/module.rb b/test/t/module.rb index 9d735f5da..a03511b09 100644 --- a/test/t/module.rb +++ b/test/t/module.rb @@ -37,6 +37,186 @@ assert('Module#append_features', '15.2.2.4.10') do assert_equal Test4AppendFeatures2.const_get(:Const4AppendFeatures2), Test4AppendFeatures2 end +assert('Module#attr', '15.2.2.4.11') do + %w[ + foo? + @foo + @@foo + $foo + ].each do |name| + assert_raise(NameError) do + module NameTest; end + NameTest.module_eval { attr_reader name.to_sym } + end + end + + class AttrTest + class << self + attr :cattr + def cattr_val + @cattr + end + def cattr_val=(val) + @cattr = val + end + end + attr :iattr + + def iattr_val + @iattr + end + def iattr_val=(val) + @iattr = val + end + end + + test = AttrTest.new + assert_true AttrTest.respond_to?(:cattr) + assert_true test.respond_to?(:iattr) + + assert_false AttrTest.respond_to?(:vattr=) + assert_false test.respond_to?(:iattr=) + + test.iattr_val = 'test' + assert_equal 'test', test.iattr + + AttrTest.cattr_val = 'test' + assert_equal 'test', AttrTest.cattr +end + +assert('Module#attr_accessor', '15.2.2.4.12') do + %w[ + foo? + @foo + @@foo + $foo + ].each do |name| + assert_raise(NameError) do + module NameTest; end + NameTest.module_eval { attr_reader name.to_sym } + end + end + + class AttrTestAccessor + class << self + attr_accessor :cattr + end + attr_accessor :iattr, 'iattr2' + end + + attr_instance = AttrTestAccessor.new + assert_true AttrTestAccessor.respond_to?(:cattr=) + assert_true attr_instance.respond_to?(:iattr=) + assert_true attr_instance.respond_to?(:iattr2=) + assert_true AttrTestAccessor.respond_to?(:cattr) + assert_true attr_instance.respond_to?(:iattr) + assert_true attr_instance.respond_to?(:iattr2) + + attr_instance.iattr = 'test' + assert_equal 'test', attr_instance.iattr + + AttrTestAccessor.cattr = 'test' + assert_equal 'test', AttrTestAccessor.cattr +end + +assert('Module#attr_reader', '15.2.2.4.13') do + %w[ + foo? + @foo + @@foo + $foo + ].each do |name| + assert_raise(NameError) do + module NameTest; end + NameTest.module_eval { attr_reader name.to_sym } + end + end + + class AttrTestReader + class << self + attr_reader :cattr + def cattr_val + @cattr + end + def cattr_val=(val) + @cattr = val + end + end + attr_reader :iattr, 'iattr2' + + def iattr_val + @iattr + end + def iattr_val=(val) + @iattr = val + end + end + + attr_instance = AttrTestReader.new + assert_true AttrTestReader.respond_to?(:cattr) + assert_true attr_instance.respond_to?(:iattr) + assert_true attr_instance.respond_to?(:iattr2) + + assert_false AttrTestReader.respond_to?(:cattr=) + assert_false attr_instance.respond_to?(:iattr=) + assert_false attr_instance.respond_to?(:iattr2=) + + attr_instance.iattr_val = 'test' + assert_equal 'test', attr_instance.iattr + + AttrTestReader.cattr_val = 'test' + assert_equal 'test', AttrTestReader.cattr +end + +assert('Module#attr_writer', '15.2.2.4.14') do + %w[ + foo? + @foo + @@foo + $foo + ].each do |name| + assert_raise(NameError) do + module NameTest; end + NameTest.module_eval { attr_reader name.to_sym } + end + end + + class AttrTestWriter + class << self + attr_writer :cattr + def cattr_val + @cattr + end + def cattr_val=(val) + @cattr = val + end + end + attr_writer :iattr, 'iattr2' + + def iattr_val + @iattr + end + def iattr_val=(val) + @iattr = val + end + end + + attr_instance = AttrTestWriter.new + assert_true AttrTestWriter.respond_to?(:cattr=) + assert_true attr_instance.respond_to?(:iattr=) + assert_true attr_instance.respond_to?(:iattr2=) + + assert_false AttrTestWriter.respond_to?(:cattr) + assert_false attr_instance.respond_to?(:iattr) + assert_false attr_instance.respond_to?(:iattr2) + + attr_instance.iattr = 'test' + assert_equal 'test', attr_instance.iattr_val + + AttrTestWriter.cattr = 'test' + assert_equal 'test', AttrTestWriter.cattr_val +end + assert('Module#class_eval', '15.2.2.4.15') do class Test4ClassEval @a = 11 -- cgit v1.2.3 From ab787ab9683b8295ab2cb03d94dbbad1ebfe5db7 Mon Sep 17 00:00:00 2001 From: Ryan Scott Date: Sun, 21 Jul 2013 18:43:00 +1000 Subject: Cleaned up some of the Module#attr tests --- test/t/module.rb | 77 +++++++++++++------------------------------------------- 1 file changed, 18 insertions(+), 59 deletions(-) (limited to 'test') diff --git a/test/t/module.rb b/test/t/module.rb index a03511b09..618b57f06 100644 --- a/test/t/module.rb +++ b/test/t/module.rb @@ -37,34 +37,43 @@ assert('Module#append_features', '15.2.2.4.10') do assert_equal Test4AppendFeatures2.const_get(:Const4AppendFeatures2), Test4AppendFeatures2 end -assert('Module#attr', '15.2.2.4.11') do +assert('Module#attr NameError') do %w[ foo? @foo @@foo $foo ].each do |name| + module NameTest; end + assert_raise(NameError) do - module NameTest; end NameTest.module_eval { attr_reader name.to_sym } end + + assert_raise(NameError) do + NameTest.module_eval { attr_writer name.to_sym } + end + + assert_raise(NameError) do + NameTest.module_eval { attr name.to_sym } + end + + assert_raise(NameError) do + NameTest.module_eval { attr_accessor name.to_sym } + end end +end + +assert('Module#attr', '15.2.2.4.11') do class AttrTest class << self attr :cattr - def cattr_val - @cattr - end def cattr_val=(val) @cattr = val end end attr :iattr - - def iattr_val - @iattr - end def iattr_val=(val) @iattr = val end @@ -85,18 +94,6 @@ assert('Module#attr', '15.2.2.4.11') do end assert('Module#attr_accessor', '15.2.2.4.12') do - %w[ - foo? - @foo - @@foo - $foo - ].each do |name| - assert_raise(NameError) do - module NameTest; end - NameTest.module_eval { attr_reader name.to_sym } - end - end - class AttrTestAccessor class << self attr_accessor :cattr @@ -120,33 +117,14 @@ assert('Module#attr_accessor', '15.2.2.4.12') do end assert('Module#attr_reader', '15.2.2.4.13') do - %w[ - foo? - @foo - @@foo - $foo - ].each do |name| - assert_raise(NameError) do - module NameTest; end - NameTest.module_eval { attr_reader name.to_sym } - end - end - class AttrTestReader class << self attr_reader :cattr - def cattr_val - @cattr - end def cattr_val=(val) @cattr = val end end attr_reader :iattr, 'iattr2' - - def iattr_val - @iattr - end def iattr_val=(val) @iattr = val end @@ -169,36 +147,17 @@ assert('Module#attr_reader', '15.2.2.4.13') do end assert('Module#attr_writer', '15.2.2.4.14') do - %w[ - foo? - @foo - @@foo - $foo - ].each do |name| - assert_raise(NameError) do - module NameTest; end - NameTest.module_eval { attr_reader name.to_sym } - end - end - class AttrTestWriter class << self attr_writer :cattr def cattr_val @cattr end - def cattr_val=(val) - @cattr = val - end end attr_writer :iattr, 'iattr2' - def iattr_val @iattr end - def iattr_val=(val) - @iattr = val - end end attr_instance = AttrTestWriter.new -- cgit v1.2.3