Tue, 10 Jul 2018 11:08:59 +0100
Add tests for stanzacmp
93 | 1 | local stanzacmp = require "scansion.stanzacmp"; |
2 | local verse = require "verse"; | |
3 | local st = require "util.stanza"; | |
4 | ||
5 | local function yes(s1, s2) | |
6 | if not stanzacmp.stanzas_match(s1, s2) then | |
7 | print("s1", s1) | |
8 | print("s2", s2) | |
9 | print("literal", tostring(s1) == tostring(s2)); | |
10 | assert(false, "No match, but they should."); | |
11 | end | |
12 | end | |
13 | ||
14 | local function no(s1, s2) | |
15 | if stanzacmp.stanzas_match(s1, s2) then | |
16 | print("s1", s1) | |
17 | print("s2", s2) | |
18 | assert(false, "Match, but they should not."); | |
19 | end | |
20 | end | |
21 | ||
22 | describe("stanzacmp", function () | |
23 | it("should work", function () | |
24 | local s1 = st.message({ to = "foo", from = "bar"}); | |
25 | local s2 = st.message({ to = "foo", from = "bar"}); | |
26 | ||
27 | yes(s1, s2); | |
28 | yes(s2, s1); | |
29 | ||
30 | s1.attr.to = nil; | |
31 | ||
32 | yes(s1, s2); | |
33 | no(s2, s1); | |
34 | ||
35 | s1.attr.to = "foo"; | |
36 | yes(s1, s2); | |
37 | ||
38 | s2:tag("blah", { xmlns = "foobar" }); | |
39 | ||
40 | yes(s1, s2); | |
41 | no(s2, s1); | |
42 | ||
43 | s1:tag("blah", { xmlns = "foobar" }); | |
44 | yes(s1, s2); | |
45 | yes(s2, s1); | |
46 | ||
47 | s1:tag("a"); | |
48 | no(s1, s2); | |
49 | s2:tag("a"); | |
50 | yes(s1, s2); | |
51 | s2:up():up(); | |
52 | s2:tag("extension", { xmlns = "blah" }); | |
53 | yes(s1, s2); | |
54 | s2:tag("b"); | |
55 | yes(s1, s2); | |
56 | s1:up():up(); | |
57 | s1:tag("extension", { xmlns = "blah" }); | |
58 | no(s1, s2); | |
59 | s1:tag("b"); | |
60 | yes(s1, s2); | |
61 | s1:tag("c", { n = "1" }); | |
62 | no(s1, s2); | |
63 | end); | |
64 | end); |