// Copyright 2011 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.packagexmppimport("reflect""strings""testing""xml")// This is mostly just tests of the roster data structures.funcTestRosterIqMarshal(t*testing.T){iq:=&Iq{From:"from",Lang:"en",Nested:RosterQuery{}}exp:=`<iq from="from" xml:lang="en"><query xmlns="`+NsRoster+`"></query></iq>`assertMarshal(t,exp,iq)}funcTestRosterIqUnmarshal(t*testing.T){str:=`<iq from="from" xml:lang="en"><query xmlns="`+NsRoster+`"><item jid="a@b.c"/></query></iq>`r:=strings.NewReader(str)varstStanza=&Iq{}xml.Unmarshal(r,st)err:=parseExtended(st,newRosterQuery)iferr!=nil{t.Fatalf("parseExtended: %v",err)}assertEquals(t,"iq",st.XName())assertEquals(t,"from",st.XFrom())assertEquals(t,"en",st.XLang())nested:=st.XNested()ifnested==nil{t.Fatalf("nested nil")}rq,ok:=nested.(*RosterQuery)if!ok{t.Fatalf("nested not RosterQuery: %v",reflect.TypeOf(nested))}iflen(rq.Item)!=1{t.Fatalf("Wrong # items: %v",rq.Item)}item:=rq.Item[0]assertEquals(t,"a@b.c",item.Jid)}