summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xmpp/element_buffer_test.go40
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])
+ }
+ }
+ }
+}