diff options
author | xengineering <me@xengineering.eu> | 2023-06-28 17:43:38 +0200 |
---|---|---|
committer | xengineering <me@xengineering.eu> | 2023-06-29 19:34:52 +0200 |
commit | 64d71d587eb618cb4490e51d4af48e9f374f7f8d (patch) | |
tree | a7d22d3a88057a594fcf21c217038e9492941532 | |
parent | d170626154a4853be386c7180050afe09be3ca0b (diff) | |
download | limox-64d71d587eb618cb4490e51d4af48e9f374f7f8d.tar limox-64d71d587eb618cb4490e51d4af48e9f374f7f8d.tar.zst limox-64d71d587eb618cb4490e51d4af48e9f374f7f8d.zip |
xmpp: Add indent level test for elementBuffer
This tests if the indent level is correctly detected. This basic test
can be extended to support invalid XML elements which should be refused
to add to the element buffer.
-rw-r--r-- | xmpp/element_buffer_test.go | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/xmpp/element_buffer_test.go b/xmpp/element_buffer_test.go new file mode 100644 index 0000000..3d03f0b --- /dev/null +++ b/xmpp/element_buffer_test.go @@ -0,0 +1,40 @@ +package xmpp + +import ( + "encoding/xml" + "strings" + "testing" +) + +type bufTest struct { + xml string + levels []int +} + +func TestElementBuffer(t *testing.T) { + var tests = []bufTest{ + bufTest{`<stream></stream>`, []int{1, 0}}, + bufTest{`<a><b>testing</b></a>`, []int{1, 2, 2, 1, 0}}, + bufTest{`<a><!-- comment --><b>testing</b></a>`, []int{1, 1, 2, 2, 1, 0}}, + } + + for _, v := range tests { + r := strings.NewReader(v.xml) + d := xml.NewDecoder(r) + b := newElementBuffer() + + for i, _ := range v.levels { + token, err := d.Token() + if err != nil { + break + } + err = b.add(token) + if err != nil { + t.Fatalf("xmpp.elementBuffer.add() returned error: `%v`!\n", err) + } + if b.level != v.levels[i] { + t.Fatalf("Indent level of xmpp.elementBuffer %d does not match value given by test data %d!\n", b.level, v.levels[i]) + } + } + } +} |