Comparison

tests/test_util_stanza.lua @ 7256:9fbb9fbf7e52

Merge 0.10->trunk
author Matthew Wild <mwild1@gmail.com>
date Wed, 09 Mar 2016 13:19:38 +0000
parent 7254:8aaae816cc7e
child 7503:1810f1a4ff05
comparison
equal deleted inserted replaced
7255:3da7c334f034 7256:9fbb9fbf7e52
23 assert_is(stanza2 and stanza.name, "deserialize returns a stanza"); 23 assert_is(stanza2 and stanza.name, "deserialize returns a stanza");
24 assert_table(stanza2.attr, "Deserialized stanza has attributes"); 24 assert_table(stanza2.attr, "Deserialized stanza has attributes");
25 assert_equal(stanza2.attr.a, "a", "Deserialized stanza retains attributes"); 25 assert_equal(stanza2.attr.a, "a", "Deserialized stanza retains attributes");
26 assert_table(getmetatable(stanza2), "Deserialized stanza has metatable"); 26 assert_table(getmetatable(stanza2), "Deserialized stanza has metatable");
27 end 27 end
28
29 function stanza(stanza)
30 local s = stanza("foo", { xmlns = "myxmlns", a = "attr-a" });
31 assert_equal(s.name, "foo");
32 assert_equal(s.attr.xmlns, "myxmlns");
33 assert_equal(s.attr.a, "attr-a");
34
35 local s1 = stanza("s1");
36 assert_equal(s1.name, "s1");
37 assert_equal(s1.attr.xmlns, nil);
38 assert_equal(#s1, 0);
39 assert_equal(#s1.tags, 0);
40
41 s1:tag("child1");
42 assert_equal(#s1.tags, 1);
43 assert_equal(s1.tags[1].name, "child1");
44
45 s1:tag("grandchild1"):up();
46 assert_equal(#s1.tags, 1);
47 assert_equal(s1.tags[1].name, "child1");
48 assert_equal(#s1.tags[1], 1);
49 assert_equal(s1.tags[1][1].name, "grandchild1");
50
51 s1:up():tag("child2");
52 assert_equal(#s1.tags, 2, tostring(s1));
53 assert_equal(s1.tags[1].name, "child1");
54 assert_equal(s1.tags[2].name, "child2");
55 assert_equal(#s1.tags[1], 1);
56 assert_equal(s1.tags[1][1].name, "grandchild1");
57
58 s1:up():text("Hello world");
59 assert_equal(#s1.tags, 2);
60 assert_equal(#s1, 3);
61 assert_equal(s1.tags[1].name, "child1");
62 assert_equal(s1.tags[2].name, "child2");
63 assert_equal(#s1.tags[1], 1);
64 assert_equal(s1.tags[1][1].name, "grandchild1");
65 end
66
67 function message(message)
68 local m = message();
69 assert_equal(m.name, "message");
70 end
71
72 function iq(iq)
73 local i = iq();
74 assert_equal(i.name, "iq");
75 end
76
77 function presence(presence)
78 local p = presence();
79 assert_equal(p.name, "presence");
80 end
81
82 function reply(reply, _M)
83 -- Test stanza
84 local s = _M.stanza("s", { to = "touser", from = "fromuser", id = "123" })
85 :tag("child1");
86 -- Make reply stanza
87 local r = reply(s);
88 assert_equal(r.name, s.name);
89 assert_equal(r.id, s.id);
90 assert_equal(r.attr.to, s.attr.from);
91 assert_equal(r.attr.from, s.attr.to);
92 assert_equal(#r.tags, 0, "A reply should not include children of the original stanza");
93
94 -- Test stanza
95 local s = _M.stanza("iq", { to = "touser", from = "fromuser", id = "123", type = "get" })
96 :tag("child1");
97 -- Make reply stanza
98 local r = reply(s);
99 assert_equal(r.name, s.name);
100 assert_equal(r.id, s.id);
101 assert_equal(r.attr.to, s.attr.from);
102 assert_equal(r.attr.from, s.attr.to);
103 assert_equal(r.attr.type, "result");
104 assert_equal(#r.tags, 0, "A reply should not include children of the original stanza");
105
106 -- Test stanza
107 local s = _M.stanza("iq", { to = "touser", from = "fromuser", id = "123", type = "set" })
108 :tag("child1");
109 -- Make reply stanza
110 local r = reply(s);
111 assert_equal(r.name, s.name);
112 assert_equal(r.id, s.id);
113 assert_equal(r.attr.to, s.attr.from);
114 assert_equal(r.attr.from, s.attr.to);
115 assert_equal(r.attr.type, "result");
116 assert_equal(#r.tags, 0, "A reply should not include children of the original stanza");
117 end
118
119 function error_reply(error_reply, _M)
120 -- Test stanza
121 local s = _M.stanza("s", { to = "touser", from = "fromuser", id = "123" })
122 :tag("child1");
123 -- Make reply stanza
124 local r = error_reply(s);
125 assert_equal(r.name, s.name);
126 assert_equal(r.id, s.id);
127 assert_equal(r.attr.to, s.attr.from);
128 assert_equal(r.attr.from, s.attr.to);
129 assert_equal(#r.tags, 1);
130
131 -- Test stanza
132 local s = _M.stanza("iq", { to = "touser", from = "fromuser", id = "123", type = "get" })
133 :tag("child1");
134 -- Make reply stanza
135 local r = error_reply(s);
136 assert_equal(r.name, s.name);
137 assert_equal(r.id, s.id);
138 assert_equal(r.attr.to, s.attr.from);
139 assert_equal(r.attr.from, s.attr.to);
140 assert_equal(r.attr.type, "error");
141 assert_equal(#r.tags, 1);
142 end