aboutsummaryrefslogtreecommitdiff
path: root/xmpp-vala/tests
diff options
context:
space:
mode:
Diffstat (limited to 'xmpp-vala/tests')
-rw-r--r--xmpp-vala/tests/color.vala20
-rw-r--r--xmpp-vala/tests/common.vala13
-rw-r--r--xmpp-vala/tests/stanza.vala48
-rw-r--r--xmpp-vala/tests/testcase.vala13
-rw-r--r--xmpp-vala/tests/weak_map.vala95
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();
+// }
+ }
+
+}