|
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); |