test/test_characterizable.rb in characterizable-0.0.15 vs test/test_characterizable.rb in characterizable-0.0.16

- old
+ new

@@ -1,10 +1,9 @@ require 'helper' # just to see if it hurts require 'active_support/json' -require 'to_json_fix' class Characterizable::Characteristic def hidden? !!options[:hidden] end @@ -48,10 +47,20 @@ has :model has :variant, :trumps => :model end end +class Universe + include Characterizable + attr_accessor :matter + attr_accessor :antimatter + characterize do + has :matter, :trumps => :antimatter + has :antimatter, :trumps => :matter + end +end + class TestCharacterizable < Test::Unit::TestCase should "let you define the effective characteristics of a class" do assert_nothing_raised do class OnDemandAutomobile include Characterizable @@ -408,21 +417,33 @@ has :make end end end end - - # this used to cause infinite loops - should 'not let two characteristics trump each other' do - assert_raises ::Characterizable::CyclicalTrumping do - class Universe - include Characterizable - attr_accessor :matter - attr_accessor :antimatter - characterize do - has :matter, :trumps => :antimatter - has :antimatter, :trumps => :matter - end - end - end + + should "have mutual trumping cancel itself out instead of causing an infinite loop" do + a = Universe.new + assert_equal [], a.characteristics.effective.keys + assert_equal [:matter, :antimatter], a.characteristics.potential.keys + assert_equal [], a.characteristics.wasted.keys + assert_equal [], a.characteristics.lacking.keys + assert_equal [], a.characteristics.trumped.keys + a.matter = :foo + assert_equal [:matter], a.characteristics.effective.keys + assert_equal [], a.characteristics.potential.keys + assert_equal [], a.characteristics.wasted.keys + assert_equal [], a.characteristics.lacking.keys + assert_equal [], a.characteristics.trumped.keys + a.antimatter = :bar + assert_equal [:matter, :antimatter], a.characteristics.effective.keys + assert_equal [], a.characteristics.potential.keys + assert_equal [], a.characteristics.wasted.keys + assert_equal [], a.characteristics.lacking.keys + assert_equal [], a.characteristics.trumped.keys + a.matter = nil + assert_equal [:antimatter], a.characteristics.effective.keys + assert_equal [], a.characteristics.potential.keys + assert_equal [], a.characteristics.wasted.keys + assert_equal [], a.characteristics.lacking.keys + assert_equal [], a.characteristics.trumped.keys end end