Comparison

spec/util_stanza_spec.lua @ 8641:c7734b59506f

util.stanza: tests: Add more invalid data types and update for :text(nil) and :text("")
author Matthew Wild <mwild1@gmail.com>
date Wed, 21 Mar 2018 22:08:54 +0000
parent 8626:20532f191f8d
child 9000:4d64ff0719a6
comparison
equal deleted inserted replaced
8640:8f13ec2ceb06 8641:c7734b59506f
65 it("should work with unicode values", function () 65 it("should work with unicode values", function ()
66 local s = st.stanza("Объект", { xmlns = "myxmlns", ["Объект"] = "&" }); 66 local s = st.stanza("Объект", { xmlns = "myxmlns", ["Объект"] = "&" });
67 assert.are.equal(s.name, "Объект"); 67 assert.are.equal(s.name, "Объект");
68 assert.are.equal(s.attr.xmlns, "myxmlns"); 68 assert.are.equal(s.attr.xmlns, "myxmlns");
69 assert.are.equal(s.attr["Объект"], "&"); 69 assert.are.equal(s.attr["Объект"], "&");
70 end);
71 it("should allow :text() with nil and empty strings", function ()
72 local s_control = st.stanza("foo");
73 assert.same(st.stanza("foo"):text(), s_control);
74 assert.same(st.stanza("foo"):text(nil), s_control);
75 assert.same(st.stanza("foo"):text(""), s_control);
70 end); 76 end);
71 end); 77 end);
72 78
73 describe("#message()", function() 79 describe("#message()", function()
74 it("should work", function() 80 it("should work", function()
170 ["empty string"] = "", ["characters"] = "<>"; 176 ["empty string"] = "", ["characters"] = "<>";
171 } 177 }
172 local invalid_data = { 178 local invalid_data = {
173 ["number"] = 1234, ["table"] = {}; 179 ["number"] = 1234, ["table"] = {};
174 ["utf8"] = string.char(0xF4, 0x90, 0x80, 0x80); 180 ["utf8"] = string.char(0xF4, 0x90, 0x80, 0x80);
181 ["nil"] = "nil"; ["boolean"] = true;
175 }; 182 };
176 183
177 for value_type, value in pairs(invalid_names) do 184 for value_type, value in pairs(invalid_names) do
178 it(value_type.." in tag names", function () 185 it(value_type.." in tag names", function ()
179 assert.error_matches(function () 186 assert.error_matches(function ()
185 st.stanza("valid", { [value] = "valid" }); 192 st.stanza("valid", { [value] = "valid" });
186 end, value_type); 193 end, value_type);
187 end); 194 end);
188 end 195 end
189 for value_type, value in pairs(invalid_data) do 196 for value_type, value in pairs(invalid_data) do
197 if value == "nil" then value = nil; end
190 it(value_type.." in tag names", function () 198 it(value_type.." in tag names", function ()
191 assert.error_matches(function () 199 assert.error_matches(function ()
192 st.stanza(value); 200 st.stanza(value);
193 end, value_type); 201 end, value_type);
194 end); 202 end);
195 it(value_type.." in attribute names", function () 203 it(value_type.." in attribute names", function ()
196 assert.error_matches(function () 204 assert.error_matches(function ()
197 st.stanza("valid", { [value] = "valid" }); 205 st.stanza("valid", { [value] = "valid" });
198 end, value_type); 206 end, value_type);
199 end); 207 end);
200 it(value_type.." in attribute values", function () 208 if value ~= nil then
201 assert.error_matches(function () 209 it(value_type.." in attribute values", function ()
202 st.stanza("valid", { valid = value }); 210 assert.error_matches(function ()
203 end, value_type); 211 st.stanza("valid", { valid = value });
204 end); 212 end, value_type);
205 it(value_type.." in text node", function () 213 end);
206 assert.error_matches(function () 214 it(value_type.." in text node", function ()
207 st.stanza("valid"):text(value); 215 assert.error_matches(function ()
208 end, value_type); 216 st.stanza("valid"):text(value);
209 end); 217 end, value_type);
218 end);
219 end
210 end 220 end
211 end); 221 end);
212 222
213 describe("#is_stanza", function () 223 describe("#is_stanza", function ()
214 -- is_stanza(any) -> boolean 224 -- is_stanza(any) -> boolean