#!/usr/bin/ruby $:.unshift '../lib' require 'test/unit' require 'xmpp4r/callbacks' include Jabber class CallbacksTest < Test::Unit::TestCase def test_test1 called = 0 cb = Callback.new(5, "toto", Proc.new { called += 1 }) assert_equal(5, cb.priority) assert_equal("toto", cb.ref) cb.block.call assert_equal(1, called) cb.block.call assert_equal(2, called) end def test_callbacklist1 cbl = CallbackList.new called1 = false called2 = false called3 = false called4 = false cbl.add(5, "ref1") { called1 = true ; true } cbl.add(7, "ref1") { |e| called2 = true ; false} cbl.add(9, "ref1") { called3 = true ;false } cbl.add(11, "ref1") { called4 = true ; false } o = "aaaa" assert(cbl.process(o)) assert(called1) assert(called2) assert(called3) assert(called4) end def test_callbacklist2 cbl = CallbackList.new assert(0, cbl.length) cbl.add(5, "ref1") { called1 = true } assert(1, cbl.length) cbl.add(7, "ref2") { |e| called2 = true ; e.consume } assert(2, cbl.length) cbl.delete("ref2") assert(1, cbl.length) cbl.add(9, "ref3") { called3 = true } assert(2, cbl.length) end def test_callbacklist4 cbl = CallbackList.new cbl.add(5, "ref1") { false } cbl.add(7, "ref1") { false } o = "o" assert(!cbl.process(o)) end def test_callbacklist5 cbl = CallbackList.new cbl.add(5, "ref1") { true } cbl.add(7, "ref1") { false } o = "o" assert(cbl.process(o)) end def test_callbacklist6 cbl = CallbackList.new ok = false c = 'a' d = 'b' cbl.add(5, "ref1") { |a, b| if a == 'a' and b == 'b' ok = true end false } assert(!cbl.process(c, d)) assert(ok) end def test_callbacklist7 cbl = CallbackList.new called1 = false called2 = false called3 = false called4 = false cbl.add(3, "ref1") { called4 = true ; true } cbl.add(5, "ref1") { called1 = true ; true } cbl.add(7, "ref1") { called2 = true ; 'a'} cbl.add(9, "ref1") { called3 = true ;1 } o = "aaaa" assert(cbl.process(o)) assert(called1) assert(called2) assert(called3) assert(!called4) end def test_nested cbl = CallbackList.new called_outer = 0 called_inner = 0 cbl.add(100, nil) { called_outer += 1 if called_outer == 1 cbl.add(200, nil) { called_inner += 1 } end } assert_equal(0, called_inner) assert_equal(0, called_outer) cbl.process assert_equal(0, called_inner) assert_equal(1, called_outer) cbl.process assert_equal(1, called_inner) assert_equal(2, called_outer) end end