From 7e3e87cd745b90e01b630bf072f4868a1255dda7 Mon Sep 17 00:00:00 2001 From: Nathan Wenneker Date: Thu, 11 Feb 2016 13:16:29 -0700 Subject: [PATCH] define equality --- lib/strict_open_struct.rb | 4 ++++ strict_open_struct.gemspec | 2 +- test/basic_test.rb | 13 +++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/strict_open_struct.rb b/lib/strict_open_struct.rb index c37d17d..07dd092 100644 --- a/lib/strict_open_struct.rb +++ b/lib/strict_open_struct.rb @@ -15,4 +15,8 @@ def method_missing(method_name, *args, &block) fail NoMethodError, "undefined method `#{method_name}' for #{self}" end end + + def ==(other) + @open_struct == other.instance_variable_get("@open_struct") + end end diff --git a/strict_open_struct.gemspec b/strict_open_struct.gemspec index 840f7d8..3b97f77 100644 --- a/strict_open_struct.gemspec +++ b/strict_open_struct.gemspec @@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) Gem::Specification.new do |spec| spec.name = "strict_open_struct" - spec.version = "0.0.1" + spec.version = "0.0.1.1" spec.authors = ["Nathan Wenneker"] spec.email = ["nathan@preferral.com"] spec.summary = %q{Thin layer on top of OpenStruct to raise exceptions for undefined keys.} diff --git a/test/basic_test.rb b/test/basic_test.rb index 52291a1..aee7ca4 100644 --- a/test/basic_test.rb +++ b/test/basic_test.rb @@ -33,5 +33,18 @@ def first_name end end + describe "#==" do + specify "equal if insantiated with same data" do + assert_equal StrictOpenStruct.new(a: 'a'), StrictOpenStruct.new(a: 'a') + end + + specify "equal if has same data" do + sos1 = StrictOpenStruct.new + sos1.a = 'a' + sos2 = StrictOpenStruct.new(a: 'a') + assert_equal sos1, sos2 + end + end + end