indexing description: "Tests the endpoint message" license: "MIT license (see ../../license.txt)" author: "Beat Strasser " date: "$Date$" revision: "$Revision$" deferred class TEST_MESSAGE inherit TS_TEST_CASE feature -- Tests test_empty is -- Test an empty message local msg: P2P_MESSAGE do create msg.make assert_equal ("all_elements.count", 0, msg.all_elements.count) assert_equal ("all_elements_of_namespace.count", 0, msg.all_elements_of_namespace (msg.namespace_jxta).count) assert_equal ("namespace_jxta", "jxta", msg.namespace_jxta) assert_equal ("namespace_jxta", "", msg.namespace_user) assert_equal ("special_namespaces count", 0, msg.special_namespaces.count) assert_true ("uses_namespace jxta", msg.uses_namespace (msg.namespace_jxta)) assert_true ("uses_namespace user", msg.uses_namespace (msg.namespace_user)) end test_extend_and_remove is -- Test to extend several message elements local msg: P2P_MESSAGE el: P2P_MESSAGE_ELEMENT i: INTEGER elcursor: DS_LIST_CURSOR [P2P_MESSAGE_ELEMENT] do -- create message create msg.make -- extend 23 elements, and add 7 elements with replace from i := 0 until i = 30 loop create el.make ("tnamespace" + (i \\ 3).out, "tname" + i.out, "ttype" + i.out, Void, "tcontent" + i.out) if i < 22 then mtest_extend (msg, el) else mtest_replace (msg, el) end i := i + 1 end -- replace 30 elements with replace from i := 0 until i = 30 loop create el.make ("tnamespace" + (i \\ 3).out, "tname" + i.out, "ttype_rep" + i.out, Void, "tcontent_rep" + i.out) mtest_replace (msg, el) i := i + 1 end -- remove 20 elements from elcursor := msg.all_elements.new_cursor elcursor.start i := 1 until elcursor.after or i > 20 loop mtest_remove (msg, elcursor.item) elcursor.forth end msg.clear_all assert_equal ("all_elements.count", 0, msg.all_elements.count) assert_equal ("all_elements_of_namespace.count", 0, msg.all_elements_of_namespace (msg.namespace_jxta).count) assert_equal ("namespace_jxta", "jxta", msg.namespace_jxta) assert_equal ("namespace_jxta", "", msg.namespace_user) assert_equal ("special_namespaces count", 0, msg.special_namespaces.count) assert_true ("uses_namespace jxta", msg.uses_namespace (msg.namespace_jxta)) assert_true ("uses_namespace user", msg.uses_namespace (msg.namespace_user)) end mtest_extend (msg: P2P_MESSAGE; el: P2P_MESSAGE_ELEMENT) is -- Test to extend a message element local allcount, speccount, allspeccount: INTEGER do allcount := msg.all_elements.count + 1 speccount := msg.all_elements_of_namespace (el.namespace).count + 1 if msg.special_namespaces.has (el.namespace) then allspeccount := msg.special_namespaces.count else allspeccount := msg.special_namespaces.count + 1 end assert_false ("extend all_elements.has 1", msg.all_elements.has (el)) assert_false ("extend all_elements_of_namespace.has 1", msg.all_elements_of_namespace (el.namespace).has (el)) assert_same ("extend element_by_name 1", Void, msg.element_by_name (el.name)) assert_same ("extend element_by_namespace_and_name 1", Void, msg.element_by_namespace_and_name (el.namespace, el.name)) msg.extend (el) assert_equal ("extend all_elements.count", allcount, msg.all_elements.count) assert_true ("extend all_elements.has 2", msg.all_elements.has (el)) assert_equal ("extend all_elements_of_namespace.count", speccount, msg.all_elements_of_namespace (el.namespace).count) assert_true ("extend all_elements_of_namespace.has 2", msg.all_elements_of_namespace (el.namespace).has (el)) assert_equal ("extend element_by_name 2", el, msg.element_by_name (el.name)) assert_equal ("extend element_by_namespace_and_name 2", el, msg.element_by_namespace_and_name (el.namespace, el.name)) assert_equal ("extend special_namespaces.count 2", allspeccount, msg.special_namespaces.count) assert_true ("extend special_namespaces.has 2", msg.special_namespaces.has (el.namespace)) assert_true ("extend uses_namespace 2", msg.uses_namespace (el.namespace)) end mtest_remove (msg: P2P_MESSAGE; el: P2P_MESSAGE_ELEMENT) is -- Test to remove a message element local allcount, speccount, allspeccount: INTEGER do allcount := msg.all_elements.count - 1 speccount := msg.all_elements_of_namespace (el.namespace).count - 1 if speccount = 0 then allspeccount := msg.special_namespaces.count - 1 else allspeccount := msg.special_namespaces.count end assert_true ("remove all_elements.has 1", msg.all_elements.has (el)) assert_true ("remove all_elements_of_namespace.has 1", msg.all_elements_of_namespace (el.namespace).has (el)) assert_equal ("remove element_by_name 1", el, msg.element_by_name (el.name)) assert_equal ("remove element_by_namespace_and_name 1", el, msg.element_by_namespace_and_name (el.namespace, el.name)) assert_true ("remove special_namespaces.has 1", msg.special_namespaces.has (el.namespace)) assert_true ("remove uses_namespace 1", msg.uses_namespace (el.namespace)) msg.remove (el) assert_equal ("remove all_elements.count", allcount, msg.all_elements.count) assert_equal ("remove all_elements_of_namespace.count", speccount, msg.all_elements_of_namespace (el.namespace).count) assert_equal ("remove special_namespaces.count", allspeccount, msg.special_namespaces.count) assert_false ("remove all_elements.has 2", msg.all_elements.has (el)) assert_false ("remove all_elements_of_namespace.has 2", msg.all_elements_of_namespace (el.namespace).has (el)) assert_same ("remove element_by_name 2", Void, msg.element_by_name (el.name)) assert_same ("remove element_by_namespace_and_name 2", Void, msg.element_by_namespace_and_name (el.namespace, el.name)) end mtest_replace (msg: P2P_MESSAGE; el: P2P_MESSAGE_ELEMENT) is -- Test to replace a message element local allcount, speccount, allspeccount: INTEGER do if msg.element_by_namespace_and_name (el.namespace, el.name) /= Void then allcount := msg.all_elements.count speccount := msg.all_elements_of_namespace (el.namespace).count allspeccount := msg.special_namespaces.count else allcount := msg.all_elements.count + 1 speccount := msg.all_elements_of_namespace (el.namespace).count + 1 if msg.special_namespaces.has (el.namespace) then allspeccount := msg.special_namespaces.count else allspeccount := msg.special_namespaces.count + 1 end end msg.replace (el) assert_equal ("replace all_elements.count", allcount, msg.all_elements.count) assert_true ("replace all_elements.has", msg.all_elements.has (el)) assert_equal ("replace all_elements_of_namespace.count", speccount, msg.all_elements_of_namespace (el.namespace).count) assert_true ("replace all_elements_of_namespace.has", msg.all_elements_of_namespace (el.namespace).has (el)) assert_equal ("replace element_by_name", el, msg.element_by_name (el.name)) assert_equal ("replace element_by_namespace_and_name", el, msg.element_by_namespace_and_name (el.namespace, el.name)) assert_equal ("replace special_namespaces.count", allspeccount, msg.special_namespaces.count) assert_true ("replace special_namespaces.has", msg.special_namespaces.has (el.namespace)) assert_true ("replace uses_namespace", msg.uses_namespace (el.namespace)) end end