summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authoryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-11-26 12:17:47 +0000
committeryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-11-26 12:17:47 +0000
commita1044c674a4d5c605ae0956755bdb9e73f227d5f (patch)
tree396c0b74a3e49e3f5000b3bfb8a404d08e15c2d1 /test
parentbae947b2a805177b109b31993747b7ed02c69bcf (diff)
downloadruby-a1044c674a4d5c605ae0956755bdb9e73f227d5f.tar.gz
ruby-a1044c674a4d5c605ae0956755bdb9e73f227d5f.tar.xz
ruby-a1044c674a4d5c605ae0956755bdb9e73f227d5f.zip
* test/ruby/test_range.rb (TestRange#test_comparison_when_recursive):
test for r25010. * test/ruby/test_struct.rb (TestStruct#test_comparison_when_recursive): ditto. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25933 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_range.rb34
-rw-r--r--test/ruby/test_struct.rb30
2 files changed, 64 insertions, 0 deletions
diff --git a/test/ruby/test_range.rb b/test/ruby/test_range.rb
index 5ad2638d4..e0ff27383 100644
--- a/test/ruby/test_range.rb
+++ b/test/ruby/test_range.rb
@@ -1,5 +1,6 @@
require 'test/unit'
require 'delegate'
+require 'timeout'
class TestRange < Test::Unit::TestCase
def test_range_string
@@ -294,4 +295,37 @@ class TestRange < Test::Unit::TestCase
o.instance_eval { initialize(o, 1) }
assert_equal("(... .. ...)..1", o.inspect)
end
+
+ def test_comparison_when_recursive
+ x = CyclicRange.allocate; x.send(:initialize, x, 1)
+ y = CyclicRange.allocate; y.send(:initialize, y, 1)
+ Timeout.timeout(1) {
+ assert x == y
+ assert x.eql? y
+ }
+
+ z = CyclicRange.allocate; z.send(:initialize, z, :another)
+ Timeout.timeout(1) {
+ assert x != z
+ assert !x.eql?(z)
+ }
+
+ x = CyclicRange.allocate
+ y = CyclicRange.allocate
+ x.send(:initialize, y, 1)
+ y.send(:initialize, x, 1)
+ Timeout.timeout(1) {
+ assert x == y
+ assert x.eql?(y)
+ }
+
+ x = CyclicRange.allocate
+ z = CyclicRange.allocate
+ x.send(:initialize, z, 1)
+ z.send(:initialize, x, :other)
+ Timeout.timeout(1) {
+ assert x != z
+ assert !x.eql?(z)
+ }
+ end
end
diff --git a/test/ruby/test_struct.rb b/test/ruby/test_struct.rb
index b6a77a9fb..49dcdb45b 100644
--- a/test/ruby/test_struct.rb
+++ b/test/ruby/test_struct.rb
@@ -1,4 +1,5 @@
require 'test/unit'
+require 'timeout'
class TestStruct < Test::Unit::TestCase
def test_struct
@@ -219,4 +220,33 @@ class TestStruct < Test::Unit::TestCase
a = struct_test.new(42)
assert_equal("#<struct Struct::R\u{e9}sum\u{e9} r\u{e9}sum\u{e9}=42>", a.inspect, '[ruby-core:24849]')
end
+
+ def test_comparison_when_recursive
+ klass1 = Struct.new(:a, :b, :c)
+
+ x = klass1.new(1, 2, nil); x.c = x
+ y = klass1.new(1, 2, nil); y.c = y
+ Timeout.timeout(1) {
+ assert x == y
+ assert x.eql? y
+ }
+
+ z = klass1.new(:something, :other, nil); z.c = z
+ Timeout.timeout(1) {
+ assert x != z
+ assert !x.eql?(z)
+ }
+
+ x.c = y; y.c = x
+ Timeout.timeout(1) {
+ assert x == y
+ assert x.eql?(y)
+ }
+
+ x.c = z; z.c = x
+ Timeout.timeout(1) {
+ assert x != z
+ assert !x.eql?(z)
+ }
+ end
end