require File.dirname(__FILE__) + '/helper' class TestMetric < Test::Unit::TestCase def setup @metric = Metric.new(stub(:interval => 10), nil) end # watch def test_watch w = stub() m = Metric.new(w, nil) assert_equal w, m.watch end # destination def test_destination d = stub() m = Metric.new(nil, d) assert_equal d, m.destination end # condition def test_condition_should_be_block_optional @metric.condition(:fake_poll_condition) assert_equal 1, @metric.conditions.size end def test_poll_condition_should_inherit_interval_from_watch_if_not_specified @metric.condition(:fake_poll_condition) assert_equal 10, @metric.conditions.first.interval end def test_poll_condition_should_abort_if_no_interval_and_no_watch_interval metric = Metric.new(stub(:name => 'foo', :interval => nil), nil) assert_abort do metric.condition(:fake_poll_condition) end end def test_condition_should_allow_generation_of_subclasses_of_poll_or_event metric = Metric.new(stub(:name => 'foo', :interval => 10), nil) assert_nothing_raised do metric.condition(:fake_poll_condition) metric.condition(:fake_event_condition) end end def test_condition_should_abort_if_not_subclass_of_poll_or_event metric = Metric.new(stub(:name => 'foo', :interval => 10), nil) assert_abort do metric.condition(:fake_condition) { |c| } end end def test_condition_should_abort_on_invalid_condition assert_abort do @metric.condition(:fake_poll_condition) { |c| c.stubs(:valid?).returns(false) } end end def test_condition_should_abort_on_no_such_condition assert_abort do @metric.condition(:invalid) { } end end end