summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorntalbott <ntalbott@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-09-25 00:03:11 +0000
committerntalbott <ntalbott@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-09-25 00:03:11 +0000
commitfb1f07049fc74830e3e3965de1ce61f010acb266 (patch)
treea816c4fde331cf2c974eab3f3aba93d4a81085b5
parent94bfebb3fad44c5418de4ef20493e314344b64c6 (diff)
* lib/ostruct.rb: Added OpenStruct#==.
* test/ostruct/test_ostruct.rb: Added. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4596 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog6
-rw-r--r--lib/ostruct.rb8
-rw-r--r--test/ostruct/test_ostruct.rb23
3 files changed, 37 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 38d1d8b..69d7c9b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Thu Sep 25 09:00:00 2003 Nathaniel Talbott <ntalbott@ruby-lang.org>
+
+ * lib/ostruct.rb: Added OpenStruct#==.
+
+ * test/ostruct/test_ostruct.rb: Added.
+
Thu Sep 25 07:55:26 2003 Nobuyoshi Nakada <nobu@ruby-lang.org>
* ext/win32ole/win32ole.c, ext/openssl/ossl_pkey_dsa.c,
diff --git a/lib/ostruct.rb b/lib/ostruct.rb
index b1ae641..eea7132 100644
--- a/lib/ostruct.rb
+++ b/lib/ostruct.rb
@@ -48,4 +48,12 @@ class OpenStruct
end
str << ">"
end
+
+ attr_reader :table
+ protected :table
+
+ def ==(other)
+ return false unless(other.kind_of?(OpenStruct))
+ return @table == other.table
+ end
end
diff --git a/test/ostruct/test_ostruct.rb b/test/ostruct/test_ostruct.rb
new file mode 100644
index 0000000..24ed17f
--- /dev/null
+++ b/test/ostruct/test_ostruct.rb
@@ -0,0 +1,23 @@
+require 'test/unit'
+require 'ostruct'
+
+class TC_OpenStruct < Test::Unit::TestCase
+ def test_equality
+ o1 = OpenStruct.new
+ o2 = OpenStruct.new
+ assert_equal(o1, o2)
+
+ o1.a = 'a'
+ assert_not_equal(o1, o2)
+
+ o2.a = 'a'
+ assert_equal(o1, o2)
+
+ o1.a = 'b'
+ assert_not_equal(o1, o2)
+
+ o2 = Object.new
+ o2.instance_eval{@table = {:a => 'b'}}
+ assert_not_equal(o1, o2)
+ end
+end