diff options
Diffstat (limited to 'xmpp-vala')
| -rw-r--r-- | xmpp-vala/src/core/stanza_node.vala | 6 | ||||
| -rw-r--r-- | xmpp-vala/tests/common.vala | 4 | ||||
| -rw-r--r-- | xmpp-vala/tests/stanza.vala | 20 |
3 files changed, 19 insertions, 11 deletions
diff --git a/xmpp-vala/src/core/stanza_node.vala b/xmpp-vala/src/core/stanza_node.vala index 54c14956..6911b4b2 100644 --- a/xmpp-vala/src/core/stanza_node.vala +++ b/xmpp-vala/src/core/stanza_node.vala @@ -102,7 +102,7 @@ public class StanzaNode : StanzaEntry { if (attribute_str == null) return def; int res = def; - bool parse_success = int.try_parse(attribute_str, out res); + bool parse_success = int.try_parse(attribute_str, out res, null, 10); if (!parse_success) { info("Could not parse int attribute %s: %s", name, attribute_str); return def; @@ -112,10 +112,10 @@ public class StanzaNode : StanzaEntry { public uint get_attribute_uint(string name, uint def = 0, string? ns_uri = null) { string? attribute_str = get_attribute(name, ns_uri); - if (attribute_str == null) return def; + if (attribute_str == null || attribute_str.strip().has_prefix("-")) return def; uint res = def; - bool parse_success = uint.try_parse(attribute_str, out res); + bool parse_success = uint.try_parse(attribute_str, out res, null, 10); if (!parse_success) { info("Could not parse uint attribute %s: %s", name, attribute_str); return def; diff --git a/xmpp-vala/tests/common.vala b/xmpp-vala/tests/common.vala index dc1c8e50..5bd7bbb6 100644 --- a/xmpp-vala/tests/common.vala +++ b/xmpp-vala/tests/common.vala @@ -69,6 +69,10 @@ bool fail_if_not_eq_int(int left, int right, string? reason = null) { return fail_if_not(left == right, @"$(reason + ": " ?? "")$left != $right"); } +bool fail_if_not_eq_uint(uint left, uint right, string? reason = null) { + return fail_if_not(left == right, @"$(reason + ": " ?? "")$left != $right"); +} + private float float_to_accuracy(float f, float accuracy) { return (float) (Math.round(f * Math.pow(10, accuracy)) / Math.pow(10, accuracy)); } diff --git a/xmpp-vala/tests/stanza.vala b/xmpp-vala/tests/stanza.vala index fa1ccb41..7326a668 100644 --- a/xmpp-vala/tests/stanza.vala +++ b/xmpp-vala/tests/stanza.vala @@ -115,20 +115,24 @@ class StanzaTest : Gee.TestCase { private void test_get_attribute_int() { var stanza_node = new StanzaNode.build("test", "ns").add_self_xmlns().put_attribute("bar", "42"); - assert(stanza_node.get_attribute_int("bar", -2) == 42); - assert(stanza_node.get_attribute_uint("bar", 3) == 42); + fail_if_not_eq_int(stanza_node.get_attribute_int("bar", -2), 42); + fail_if_not_eq_uint(stanza_node.get_attribute_uint("bar", 3), 42); stanza_node = new StanzaNode.build("test", "ns").add_self_xmlns().put_attribute("bar", "-42"); - assert(stanza_node.get_attribute_int("bar", -2) == -42); - assert(stanza_node.get_attribute_uint("bar", 3) == 3); + fail_if_not_eq_int(stanza_node.get_attribute_int("bar", -2), -42); + fail_if_not_eq_uint(stanza_node.get_attribute_uint("bar", 3), 3); stanza_node = new StanzaNode.build("test", "ns").add_self_xmlns(); - assert(stanza_node.get_attribute_int("bar", -2) == -2); - assert(stanza_node.get_attribute_uint("bar", 3) == 3); + fail_if_not_eq_int(stanza_node.get_attribute_int("bar", -2), -2); + fail_if_not_eq_uint(stanza_node.get_attribute_uint("bar", 3), 3); + + stanza_node = new StanzaNode.build("test", "ns").add_self_xmlns().put_attribute("bar", "0x42"); + fail_if_not_eq_int(stanza_node.get_attribute_int("bar", -2), -2); + fail_if_not_eq_uint(stanza_node.get_attribute_uint("bar", 3), 3); stanza_node = new StanzaNode.build("test", "ns").add_self_xmlns().put_attribute("bar", "str"); - assert(stanza_node.get_attribute_int("bar", -2) == -2); - assert(stanza_node.get_attribute_uint("bar", 3) == 3); + fail_if_not_eq_int(stanza_node.get_attribute_int("bar", -2), -2); + fail_if_not_eq_uint(stanza_node.get_attribute_uint("bar", 3), 3); } |
