structs_test.go
changeset 98 c9cc4eda6dce
parent 72 53f15893a1a7
child 110 7696e6a01709
--- a/structs_test.go	Mon Jan 23 21:54:41 2012 -0700
+++ b/structs_test.go	Sun Dec 16 13:03:03 2012 -0700
@@ -6,8 +6,8 @@
 
 import (
 	"bytes"
+	"encoding/xml"
 	"testing"
-	"xml"
 )
 
 func assertEquals(t *testing.T, expected, observed string) {
@@ -20,8 +20,8 @@
 func TestJid(t *testing.T) {
 	str := "user@domain/res"
 	jid := &JID{}
-	if !jid.Set(str) {
-		t.Errorf("Set(%s) failed\n", str)
+	if err := jid.Set(str); err != nil {
+		t.Errorf("Set(%s) failed: %s", str, err)
 	}
 	assertEquals(t, "user", jid.Node)
 	assertEquals(t, "domain", jid.Domain)
@@ -29,8 +29,8 @@
 	assertEquals(t, str, jid.String())
 
 	str = "domain.tld"
-	if !jid.Set(str) {
-		t.Errorf("Set(%s) failed\n", str)
+	if err := jid.Set(str); err != nil {
+		t.Errorf("Set(%s) failed: %s", str, err)
 	}
 	if jid.Node != "" {
 		t.Errorf("Node: %v\n", jid.Node)
@@ -43,28 +43,34 @@
 }
 
 func assertMarshal(t *testing.T, expected string, marshal interface{}) {
-	buf := bytes.NewBuffer(nil)
-	xml.Marshal(buf, marshal)
-	observed := string(buf.Bytes())
+	var buf bytes.Buffer
+	enc := xml.NewEncoder(&buf)
+	enc.Context.Map[NsClient] = ""
+	enc.Context.Map[NsStream] = "stream"
+	err := enc.Encode(marshal)
+	if err != nil {
+		t.Errorf("Marshal error for %s: %s", marshal, err)
+	}
+	observed := buf.String()
 	assertEquals(t, expected, observed)
 }
 
 func TestStreamMarshal(t *testing.T) {
 	s := &stream{To: "bob"}
-	exp := `<stream:stream xmlns="jabber:client"` +
-		` xmlns:stream="` + NsStream + `" to="bob">`
-	assertMarshal(t, exp, s)
+	exp := `<stream:stream xmlns="` + NsClient +
+		`" xmlns:stream="` + NsStream + `" to="bob">`
+	assertEquals(t, exp, s.String())
 
 	s = &stream{To: "bob", From: "alice", Id: "#3", Version: "5.3"}
-	exp = `<stream:stream xmlns="jabber:client"` +
-		` xmlns:stream="` + NsStream + `" to="bob" from="alice"` +
+	exp = `<stream:stream xmlns="` + NsClient +
+		`" xmlns:stream="` + NsStream + `" to="bob" from="alice"` +
 		` id="#3" version="5.3">`
-	assertMarshal(t, exp, s)
+	assertEquals(t, exp, s.String())
 
 	s = &stream{Lang: "en_US"}
-	exp = `<stream:stream xmlns="jabber:client"` +
-		` xmlns:stream="` + NsStream + `" xml:lang="en_US">`
-	assertMarshal(t, exp, s)
+	exp = `<stream:stream xmlns="` + NsClient +
+		`" xmlns:stream="` + NsStream + `" xml:lang="en_US">`
+	assertEquals(t, exp, s.String())
 }
 
 func TestStreamErrorMarshal(t *testing.T) {
@@ -97,32 +103,41 @@
 	if err != nil {
 		t.Fatalf("iq: %v", err)
 	}
-	assertEquals(t, "iq", st.GetName())
-	assertEquals(t, "alice", st.GetTo())
-	assertEquals(t, "bob", st.GetFrom())
-	assertEquals(t, "1", st.GetId())
-	assertEquals(t, "A", st.GetType())
-	assertEquals(t, "en", st.GetLang())
-	if st.GetError() != nil {
-		t.Errorf("iq: error %v", st.GetError())
+	iq, ok := st.(*Iq)
+	if !ok {
+		t.Fatalf("not iq: %v", st)
+	}
+	assertEquals(t, "iq", iq.XMLName.Local)
+	assertEquals(t, "alice", iq.To)
+	assertEquals(t, "bob", iq.From)
+	assertEquals(t, "1", iq.Id)
+	assertEquals(t, "A", iq.Type)
+	assertEquals(t, "en", iq.Lang)
+	if iq.Error != nil {
+		t.Errorf("iq: error %v", iq.Error)
 	}
 	if st.innerxml() == "" {
 		t.Errorf("iq: empty child")
 	}
 	assertEquals(t, "<foo>text</foo>", st.innerxml())
+	assertEquals(t, st.innerxml(), iq.Innerxml)
 
 	str = `<message to="alice" from="bob"/>`
 	st, err = ParseStanza(str)
 	if err != nil {
 		t.Fatalf("message: %v", err)
 	}
-	assertEquals(t, "message", st.GetName())
-	assertEquals(t, "alice", st.GetTo())
-	assertEquals(t, "bob", st.GetFrom())
-	assertEquals(t, "", st.GetId())
-	assertEquals(t, "", st.GetLang())
-	if st.GetError() != nil {
-		t.Errorf("message: error %v", st.GetError())
+	m, ok := st.(*Message)
+	if !ok {
+		t.Fatalf("not message: %v", st)
+	}
+	assertEquals(t, "message", m.XMLName.Local)
+	assertEquals(t, "alice", m.To)
+	assertEquals(t, "bob", m.From)
+	assertEquals(t, "", m.Id)
+	assertEquals(t, "", m.Lang)
+	if m.Error != nil {
+		t.Errorf("message: error %v", m.Error)
 	}
 	if st.innerxml() != "" {
 		t.Errorf("message: child %v", st.innerxml())
@@ -133,7 +148,10 @@
 	if err != nil {
 		t.Fatalf("presence: %v", err)
 	}
-	assertEquals(t, "presence", st.GetName())
+	_, ok = st.(*Presence)
+	if !ok {
+		t.Fatalf("not presence: %v", st)
+	}
 }
 
 func TestMarshalEscaping(t *testing.T) {