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