diff options
Diffstat (limited to 'xmpp-vala/tests')
| -rw-r--r-- | xmpp-vala/tests/color.vala | 20 | ||||
| -rw-r--r-- | xmpp-vala/tests/common.vala | 13 | ||||
| -rw-r--r-- | xmpp-vala/tests/stanza.vala | 48 | ||||
| -rw-r--r-- | xmpp-vala/tests/testcase.vala | 13 | ||||
| -rw-r--r-- | xmpp-vala/tests/weak_map.vala | 95 |
5 files changed, 152 insertions, 37 deletions
diff --git a/xmpp-vala/tests/color.vala b/xmpp-vala/tests/color.vala index ded67d53..b76e9cbb 100644 --- a/xmpp-vala/tests/color.vala +++ b/xmpp-vala/tests/color.vala @@ -9,7 +9,7 @@ class ColorTest : Gee.TestCase { add_test("xep-vectors-angle", () => { text_xep_vectors_angle(); }); add_test("xep-vectors-rgbf", () => { test_xep_vectors_rgbf(); }); - add_test("rgb-to-angle", () => { test_rgb_to_angle(); }); +// add_test("rgb-to-angle", () => { test_rgb_to_angle(); }); } public void text_xep_vectors_angle() { @@ -36,15 +36,15 @@ class ColorTest : Gee.TestCase { fail_if_not_eq_rgbf(ConsistentColor.string_to_rgbf("Board"), {0.000f,0.527f,0.457f}); } - public void test_rgb_to_angle() { - string[] colors = {"e57373", "f06292", "ba68c8", "9575cd", "7986cb", "64b5f6", "4fc3f7", "4dd0e1", "4db6ac", "81c784", "aed581", "dce775", "fff176", "ffd54f", "ffb74d", "ff8a65"}; - foreach(string hex_color in colors) { - uint8 r = (uint8) ((double) hex_color.substring(0, 2).to_long(null, 16)); - uint8 g = (uint8) ((double) hex_color.substring(2, 2).to_long(null, 16)); - uint8 b = (uint8) ((double) hex_color.substring(4, 2).to_long(null, 16)); - //print(@"$hex_color, $r, $g, $b, $(ConsistentColor.rgb_to_angle(r, g, b))\n"); - } - } +// public void test_rgb_to_angle() { +// string[] colors = {"e57373", "f06292", "ba68c8", "9575cd", "7986cb", "64b5f6", "4fc3f7", "4dd0e1", "4db6ac", "81c784", "aed581", "dce775", "fff176", "ffd54f", "ffb74d", "ff8a65"}; +// foreach(string hex_color in colors) { +// uint8 r = (uint8) ((double) long.parse(hex_color.substring(0, 2), 16)); +// uint8 g = (uint8) ((double) long.parse(hex_color.substring(2, 2), 16)); +// uint8 b = (uint8) ((double) long.parse(hex_color.substring(4, 2), 16)); +// print(@"$hex_color, $r, $g, $b, $(ConsistentColor.rgb_to_angle(r, g, b))\n"); +// } +// } } }
\ No newline at end of file diff --git a/xmpp-vala/tests/common.vala b/xmpp-vala/tests/common.vala index 5bd7bbb6..978bca62 100644 --- a/xmpp-vala/tests/common.vala +++ b/xmpp-vala/tests/common.vala @@ -7,6 +7,7 @@ int main(string[] args) { TestSuite.get_root().add_suite(new Xmpp.Test.UtilTest().get_suite()); TestSuite.get_root().add_suite(new Xmpp.Test.JidTest().get_suite()); TestSuite.get_root().add_suite(new Xmpp.Test.ColorTest().get_suite()); + TestSuite.get_root().add_suite(new Xmpp.Test.WeakMapTest().get_suite()); return GLib.Test.run(); } @@ -23,9 +24,9 @@ void fail_if_reached(string? reason = null) { fail_if(true, reason); } -delegate void ErrorFunc() throws Error; +public delegate void ErrorFunc() throws Error; -void fail_if_not_error_code(ErrorFunc func, int expectedCode, string? reason = null) { +public void fail_if_not_error_code(ErrorFunc func, int expectedCode, string? reason = null) { try { func(); fail_if_reached(@"$(reason + ": " ?? "")no error thrown"); @@ -103,20 +104,20 @@ bool fail_if_eq_str(string? left, string? right, string? reason = null) { return fail_if(!nullcheck && left == right, @"$(reason + ": " ?? "")'$left' == '$right'"); } -bool fail_if_not_eq_uint8_arr(uint8[] left, uint8[] right, string? reason = null) { +public bool fail_if_not_eq_uint8_arr(uint8[] left, uint8[] right, string? reason = null) { if (fail_if_not_eq_int(left.length, right.length, @"$(reason + ": " ?? "")array length not equal")) return true; return fail_if_not_eq_str(Base64.encode(left), Base64.encode(right), reason); } -bool fail_if_not_zero_int(int zero, string? reason = null) { +public bool fail_if_not_zero_int(int zero, string? reason = null) { return fail_if_not_eq_int(zero, 0, reason); } -bool fail_if_zero_int(int zero, string? reason = null) { +public bool fail_if_zero_int(int zero, string? reason = null) { return fail_if_eq_int(zero, 0, reason); } -bool fail_if_null(void* what, string? reason = null) { +public bool fail_if_null(void* what, string? reason = null) { return fail_if(what == null || (size_t)what == 0, reason); } diff --git a/xmpp-vala/tests/stanza.vala b/xmpp-vala/tests/stanza.vala index 42e19f9a..b573995f 100644 --- a/xmpp-vala/tests/stanza.vala +++ b/xmpp-vala/tests/stanza.vala @@ -21,11 +21,15 @@ class StanzaTest : Gee.TestCase { .put_node(new StanzaNode.build("testbb", "ns3_uri") .add_self_xmlns()); - var xml1 = node1.to_xml(); - var node2 = yield new StanzaReader.for_string(xml1).read_node(); - fail_if_not(node1.equals(node2)); - fail_if_not_eq_str(node1.to_string(), node2.to_string()); - cb(); + try { + var xml1 = node1.to_xml(); + var node2 = yield new StanzaReader.for_string(xml1).read_node(); + fail_if_not(node1.equals(node2)); + fail_if_not_eq_str(node1.to_string(), node2.to_string()); + cb(); + } catch (GLib.Error e) { + cb(e); + } } private async void test_typical_stream(Gee.TestFinishedCallback cb) { @@ -55,12 +59,16 @@ class StanzaTest : Gee.TestCase { .put_node(new StanzaNode.build("body") .put_node(new StanzaNode.text(" I'll send a friar with speed, to Mantua, with my letters to thy lord."))); - var reader = new StanzaReader.for_string(stream); - fail_if_not_eq_node(root_node_cmp, yield reader.read_root_node()); - fail_if_not_eq_node(node_cmp, yield reader.read_node()); - yield reader.read_node(); - yield fail_if_not_end_of_stream(reader); - cb(); + try { + var reader = new StanzaReader.for_string(stream); + fail_if_not_eq_node(root_node_cmp, yield reader.read_root_node()); + fail_if_not_eq_node(node_cmp, yield reader.read_node()); + yield reader.read_node(); + yield fail_if_not_end_of_stream(reader); + cb(); + } catch (GLib.Error e) { + cb(e); + } } private async void fail_if_not_end_of_stream(StanzaReader reader) { @@ -105,13 +113,17 @@ class StanzaTest : Gee.TestCase { .put_node(new StanzaNode.build("required", "urn:ietf:params:xml:ns:xmpp-bind"))); var node2_cmp = new StanzaNode.build("r", "http://jabber.org/protocol/ack"); - var reader = new StanzaReader.for_string(stream); - fail_if_not_eq_node(root_node_cmp, yield reader.read_root_node()); - fail_if_not_eq_node(node_cmp, yield reader.read_node()); - fail_if_not_eq_node(node2_cmp, yield reader.read_node()); - yield reader.read_node(); - yield fail_if_not_end_of_stream(reader); - cb(); + try { + var reader = new StanzaReader.for_string(stream); + fail_if_not_eq_node(root_node_cmp, yield reader.read_root_node()); + fail_if_not_eq_node(node_cmp, yield reader.read_node()); + fail_if_not_eq_node(node2_cmp, yield reader.read_node()); + yield reader.read_node(); + yield fail_if_not_end_of_stream(reader); + cb(); + } catch (GLib.Error e) { + cb(e); + } } private void test_encoded_val() { diff --git a/xmpp-vala/tests/testcase.vala b/xmpp-vala/tests/testcase.vala index 178b6353..10da78f6 100644 --- a/xmpp-vala/tests/testcase.vala +++ b/xmpp-vala/tests/testcase.vala @@ -62,7 +62,7 @@ public abstract class Gee.TestCase : Object { namespace Gee { public delegate void TestMethod (); - public delegate void TestFinishedCallback (); + public delegate void TestFinishedCallback (GLib.Error? error = null); public delegate void AsyncTestMethod (TestFinishedCallback cb); } @@ -128,8 +128,15 @@ private class Gee.TestAsyncAdaptor : Object, TestAdaptor { main_loop.run (); } - public void finish () { - Idle.add (() => { main_loop.quit (); return false; }); + public void finish (GLib.Error? error = null) { + Idle.add(() => { + main_loop.quit(); + if (error != null) { + Test.fail(); + Test.message("Error: %s", error.message); + } + return false; + }); } public bool finish_timeout () { diff --git a/xmpp-vala/tests/weak_map.vala b/xmpp-vala/tests/weak_map.vala new file mode 100644 index 00000000..ee4a8b02 --- /dev/null +++ b/xmpp-vala/tests/weak_map.vala @@ -0,0 +1,95 @@ +namespace Xmpp.Test { + + class WeakMapTest : Gee.TestCase { + + public WeakMapTest() { + base("WeakMapTest"); + add_test("set", test_set); + add_test("set2", test_set2); + add_test("set3", test_set3); + add_test("set4", test_unset); + add_test("remove_when_out_of_scope", test_remove_when_out_of_scope); +// add_test("non_object_construction", test_non_object_construction); + } + + private void test_set() { + WeakMap<int, Object> map = new WeakMap<int, Object>(); + var o = new Object(); + map[1] = o; + + assert(map.size == 1); + assert(map.has_key(1)); + assert(map[1] == o); + } + + private void test_set2() { + WeakMap<int, Object> map = new WeakMap<int, Object>(); + var o = new Object(); + var o2 = new Object(); + map[1] = o; + map[1] = o2; + + assert(map.size == 1); + assert(map.has_key(1)); + assert(map[1] == o2); + } + + private void test_set3() { + WeakMap<int, Object> map = new WeakMap<int, Object>(); + + var o1 = new Object(); + var o2 = new Object(); + + map[0] = o1; + map[3] = o2; + + { + var o3 = new Object(); + var o4 = new Object(); + map[7] = o3; + map[50] = o4; + } + + var o5 = new Object(); + map[5] = o5; + + assert(map.size == 3); + + assert(map.has_key(0)); + assert(map.has_key(3)); + assert(map.has_key(5)); + + assert(map[0] == o1); + assert(map[3] == o2); + assert(map[5] == o5); + } + + private void test_unset() { + WeakMap<int, Object> map = new WeakMap<int, Object>(); + var o1 = new Object(); + map[7] = o1; + map.unset(7); + + assert_true(map.size == 0); + assert_true(map.is_empty); + assert_false(map.has_key(7)); + + } + + private void test_remove_when_out_of_scope() { + WeakMap<int, Object> map = new WeakMap<int, Object>(); + + { + map[0] = new Object(); + } + + assert_false(map.has_key(0)); + } + +// private void test_non_object_construction() { +// WeakMap<int, int> map = new WeakMap<int, int>(); +// assert_not_reached(); +// } + } + +} |
