diff options
author | ntalbott <ntalbott@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-09-25 00:03:11 +0000 |
---|---|---|
committer | ntalbott <ntalbott@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-09-25 00:03:11 +0000 |
commit | fb1f07049fc74830e3e3965de1ce61f010acb266 (patch) | |
tree | a816c4fde331cf2c974eab3f3aba93d4a81085b5 | |
parent | 94bfebb3fad44c5418de4ef20493e314344b64c6 (diff) | |
download | ruby-fb1f07049fc74830e3e3965de1ce61f010acb266.tar.gz |
* 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-- | ChangeLog | 6 | ||||
-rw-r--r-- | lib/ostruct.rb | 8 | ||||
-rw-r--r-- | test/ostruct/test_ostruct.rb | 23 |
3 files changed, 37 insertions, 0 deletions
@@ -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 b1ae641dcb..eea7132ca0 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 0000000000..24ed17f800 --- /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 |