[前][次][番号順一覧][スレッド一覧]

ruby-changes:14119

From: yugui <ko1@a...>
Date: Thu, 26 Nov 2009 21:18:02 +0900 (JST)
Subject: [ruby-changes:14119] Ruby:r25933 (trunk): * test/ruby/test_range.rb (TestRange#test_comparison_when_recursive):

yugui	2009-11-26 21:17:47 +0900 (Thu, 26 Nov 2009)

  New Revision: 25933

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=25933

  Log:
    * test/ruby/test_range.rb (TestRange#test_comparison_when_recursive):
      test for r25010.
    
    * test/ruby/test_struct.rb (TestStruct#test_comparison_when_recursive):
      ditto.

  Modified files:
    trunk/ChangeLog
    trunk/test/ruby/test_range.rb
    trunk/test/ruby/test_struct.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 25932)
+++ ChangeLog	(revision 25933)
@@ -1,3 +1,11 @@
+Thu Nov 26 21:08:54 2009  Yuki Sonoda (Yugui)  <yugui@y...>
+
+	* test/ruby/test_range.rb (TestRange#test_comparison_when_recursive):
+	  test for r25010.
+
+	* test/ruby/test_struct.rb (TestStruct#test_comparison_when_recursive):
+	  ditto.
+
 Thu Nov 26 20:18:02 2009  NARUSE, Yui  <naruse@r...>
 
 	* gem_prelude.rb (Gem.set_home): must dup before force_encoding
Index: test/ruby/test_struct.rb
===================================================================
--- test/ruby/test_struct.rb	(revision 25932)
+++ test/ruby/test_struct.rb	(revision 25933)
@@ -1,4 +1,5 @@
 require 'test/unit'
+require 'timeout'
 
 class TestStruct < Test::Unit::TestCase
   def test_struct
@@ -219,4 +220,33 @@
     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
Index: test/ruby/test_range.rb
===================================================================
--- test/ruby/test_range.rb	(revision 25932)
+++ test/ruby/test_range.rb	(revision 25933)
@@ -1,5 +1,6 @@
 require 'test/unit'
 require 'delegate'
+require 'timeout'
 
 class TestRange < Test::Unit::TestCase
   def test_range_string
@@ -294,4 +295,37 @@
     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

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]