structs_test.go
changeset 26 4d0a369079ce
parent 25 7437d6eed227
child 31 1dc47df5c99f
equal deleted inserted replaced
25:7437d6eed227 26:4d0a369079ce
    87 			xml.Name{Space: nsBind, Local: "bind"}}}
    87 			xml.Name{Space: nsBind, Local: "bind"}}}
    88 	exp := `<iq id="3" type="set"><bind xmlns="` + nsBind +
    88 	exp := `<iq id="3" type="set"><bind xmlns="` + nsBind +
    89 		`"></bind></iq>`
    89 		`"></bind></iq>`
    90 	assertMarshal(t, exp, iq)
    90 	assertMarshal(t, exp, iq)
    91 }
    91 }
       
    92 
       
    93 func TestParseStanza(t *testing.T) {
       
    94 	str := `<iq to="alice" from="bob" id="1" type="A"` +
       
    95 		` xml:lang="en"><foo>text</foo></iq>`
       
    96 	st, err := ParseStanza(str)
       
    97 	if err != nil {
       
    98 		t.Fatalf("iq: %v", err)
       
    99 	}
       
   100 	assertEquals(t, "iq", st.XName())
       
   101 	assertEquals(t, "alice", st.XTo())
       
   102 	assertEquals(t, "bob", st.XFrom())
       
   103 	assertEquals(t, "1", st.XId())
       
   104 	assertEquals(t, "A", st.XType())
       
   105 	assertEquals(t, "en", st.XLang())
       
   106 	if st.XError() != nil {
       
   107 		t.Errorf("iq: error %v", st.XError())
       
   108 	}
       
   109 	if st.XChild() == nil {
       
   110 		t.Errorf("iq: nil child")
       
   111 	}
       
   112 	assertEquals(t, "foo", st.XChild().XMLName.Local)
       
   113 	assertEquals(t, "text", st.XChild().Chardata)
       
   114 
       
   115 	str = `<message to="alice" from="bob"/>`
       
   116 	st, err = ParseStanza(str)
       
   117 	if err != nil {
       
   118 		t.Fatalf("message: %v", err)
       
   119 	}
       
   120 	assertEquals(t, "message", st.XName())
       
   121 	assertEquals(t, "alice", st.XTo())
       
   122 	assertEquals(t, "bob", st.XFrom())
       
   123 	assertEquals(t, "", st.XId())
       
   124 	assertEquals(t, "", st.XLang())
       
   125 	if st.XError() != nil {
       
   126 		t.Errorf("message: error %v", st.XError())
       
   127 	}
       
   128 	if st.XChild() != nil {
       
   129 		t.Errorf("message: child %v", st.XChild())
       
   130 	}
       
   131 
       
   132 	str = `<presence/>`
       
   133 	st, err = ParseStanza(str)
       
   134 	if err != nil {
       
   135 		t.Fatalf("presence: %v", err)
       
   136 	}
       
   137 	assertEquals(t, "presence", st.XName())
       
   138 }