diff --git a/lib/instancevalue.rb b/lib/instancevalue.rb index ad11b11..c8c1e08 100644 --- a/lib/instancevalue.rb +++ b/lib/instancevalue.rb @@ -22,7 +22,7 @@ # person.age #=> age at runtime # person.instance_eval{val :birthday, Time.now} #=> Exception module InstanceValue - VERSION = '0.0.2'.freeze + VERSION = '0.0.3'.freeze module Eigen private @@ -73,6 +73,11 @@ def instance_values private + def initialize_copy(original) + singleton_class.const_set :VALUES, + original.singleton_class::VALUES.dup + end + def remove_instance_value(name) if instance_value_defined? name singleton_class::VALUES.delete name.to_sym diff --git a/test/test_instancevalue.rb b/test/test_instancevalue.rb index ac40041..a099ad3 100644 --- a/test/test_instancevalue.rb +++ b/test/test_instancevalue.rb @@ -40,4 +40,26 @@ def test_normaly person.name end end + + def test_dup + person = Person.new Time.now + person2 = person.dup + + assert_equal person.instance_values, person2.instance_values + + person2.instance_value_set :newer, 123 + + assert_same false, (person.instance_values == person2.instance_values) + end + + def test_clone + person = Person.new Time.now + person2 = person.clone + + assert_equal person.instance_values, person2.instance_values + + person2.instance_value_set :newer, 123 + + assert_same false, (person.instance_values == person2.instance_values) + end end