test/test_characterizable.rb in characterizable-0.0.0 vs test/test_characterizable.rb in characterizable-0.0.1

- old
+ new

@@ -118,6 +118,46 @@ assert !a.visible_unknown_characteristics.map(&:name).include?(:record_creation_date) a.record_creation_date = 'yesterday' assert a.known_characteristics.map(&:name).include?(:record_creation_date) assert !a.visible_known_characteristics.map(&:name).include?(:record_creation_date) end + + should "be able to access values" do + a = Automobile.new + a.make = 'Ford' + b = Automobile.new + b.make = 'Pontiac' + assert_equal 'Ford', Automobile.characteristics[:make].value(a) + assert_equal 'Pontiac', Automobile.characteristics[:make].value(b) + end + + should "give back characteristics with values when accessed from an instance" do + a = Automobile.new + a.make = 'Ford' + assert_equal 'Ford', a.characteristics[:make].value + end + + should "not allow treating [unbound] characteristics like bound ones" do + a = Automobile.new + a.make = 'Ford' + assert_raises(Characterizable::Characteristic::TreatedUnboundAsBound) do + Automobile.characteristics[:make].value + end + end + + should "not allow treating bound characteristics like unbound ones" do + a = Automobile.new + a.make = 'Ford' + b = Automobile.new + b.make = 'Pontiac' + assert_raises(Characterizable::Characteristic::TreatedBoundAsUnbound) do + a.characteristics[:make].value :anything + end + end + + should "eagely populate bound characteristics" do + a = Automobile.new + a.make = 'Ford' + assert_equal ['Ford'], a.known_characteristics.map(&:value) + assert_equal [:make], a.known_characteristics.map(&:name) + end end