Class ObservablePoolTest
In: lib/observable_pool.rb
Parent: Test::Unit::TestCase

Methods

Classes and Modules

Class ObservablePoolTest::Notifier
Class ObservablePoolTest::NotifierPool
Class ObservablePoolTest::Obsv

Public Instance methods

[Source]

# File lib/observable_pool.rb, line 253
  def test_global_observer
    n1 = Notifier.new
    n2 = Notifier.new
    n3 = Notifier.new
    o1 = Obsv.new
    o2 = Obsv.new
    o3 = Obsv.new
    op = NotifierPool.new
    assert_equal(0, op.count_global_observers)
    assert_equal([], op.list_global_observers)
    op.add_observables(n1)
    op.add_observable(n2)
    op.observable(n1).add_observers(o1)
    op.observable(n2).add_observers(o2)
    op.add_global_observers(o3)
    [o1, o3].each do |x|
      assert(n1.list_observers[0].list_observers.include?(x),
             "#{x} not observer")
    end
    [o2, o3].each do |x|
      assert(n2.list_observers[0].list_observers.include?(x),
             "#{x} not observer")
    end
    assert_equal([o3], op.list_global_observers)
    op.add_observable(n3)
    assert([o3], n3.list_observers[0].list_observers)
    op.delete_global_observers
    assert_equal([], op.list_global_observers)
    assert([], n3.list_observers[0].list_observers)
    assert([o2], n2.list_observers[0].list_observers)
    assert([o1], n1.list_observers[0].list_observers)
  end

[Source]

# File lib/observable_pool.rb, line 211
  def test_simple
    n1 = Notifier.new
    n2 = Notifier.new
    o1 = Obsv.new
    o2 = Obsv.new
    o3 = Obsv.new
    op = NotifierPool.new
    assert_equal(0, op.count_observables)
    assert_equal([], op.list_observables)
    op.add_observables(n1)
    op.add_observable(n2)
    op.observable(n2).add_observers(o1, o3)
    assert_equal(2, op.count_observables)
    [ n1, n2 ].each { |x| assert(op.list_observables.include?(x)) }
    assert_equal(1, n1.count_observers)
    assert_equal([], n1.list_observers[0].list_observers)
    assert_equal(1, n2.count_observers)
    assert_equal(2, n2.list_observers[0].count_observers)
    [o1, o3].each do |x|
      assert(n2.list_observers[0].list_observers.include?(x),
             "#{x} not observer")
    end
    op.observable(n1).add_observers(o2, o3)
    assert_equal(2, op.observable(n1).count_observers)
    [o1, o2, o3].each do |x|
      assert(op.list_all_observers.include?(x), "#{x} not observer")
    end
    n2.changed
    n2.notify_observers('msg2')
    assert_equal([ n2, 'msg2'], o1.last_msg)
    assert_nil(o2.last_msg)
    assert_equal([ n2, 'msg2'], o3.last_msg)
    n1.changed
    n1.notify_observers('msg1')
    assert_equal([n2, 'msg2'], o1.last_msg)
    assert_equal([n1, 'msg1'], o2.last_msg)
    assert_equal([n1, 'msg1'], o3.last_msg)
    [n1, n2].each do |x|
      assert(op.list_observables_observed(o3).include?(x), "#{x} not observer")
    end
  end

[Validate]