# Code Generated by ZenTest v. 2.3.0
# classname: asrt / meth = ratio%
# Publisher: 8 / 4 = 200.00%
unless defined? $ZENTEST and $ZENTEST
require 'test/unit'
require 'utility/publisher'
end
class TestPublisher < Test::Unit::TestCase
class A
include Publisher
end
class B
attr :msg
def update(msg)
@msg = msg
end
end
def setup
@obj1 = A.new
@obj2 = B.new
@obj3 = B.new
end
def test_publish
assert(@obj1.subscribe(@obj2))
assert(@obj1.subscribe(@obj3))
assert(@obj1.publish("foo"))
assert_equal("foo", @obj2.msg)
assert_equal("foo", @obj3.msg)
end
def test_subscribe
assert(@obj1.subscribe(@obj2))
assert(@obj1.subscribe(@obj3))
assert_equal(2, @obj1.subscriber_count)
end
def test_unsubscribe
assert(@obj1.subscribe(@obj2))
assert_equal(1, @obj1.subscriber_count)
assert(@obj1.unsubscribe(@obj2))
assert_equal(0, @obj1.subscriber_count)
end
def test_subscriber_count
assert_equal(0, @obj1.subscriber_count)
assert(@obj1.subscribe(@obj2))
assert_equal(1, @obj1.subscriber_count)
end
def test_unsubscribe_all
assert(@obj1.subscribe(@obj2))
assert(@obj1.subscribe(@obj3))
assert_equal(2, @obj1.subscriber_count)
assert(@obj1.unsubscribe_all)
assert_equal(0, @obj1.subscriber_count)
end
end