roster_test.go
changeset 61 16513974d273
parent 42 f6bb47ca12f2
child 72 53f15893a1a7
equal deleted inserted replaced
60:6d4f43f7dc19 61:16513974d273
    12 )
    12 )
    13 
    13 
    14 // This is mostly just tests of the roster data structures.
    14 // This is mostly just tests of the roster data structures.
    15 
    15 
    16 func TestRosterIqMarshal(t *testing.T) {
    16 func TestRosterIqMarshal(t *testing.T) {
    17 	iq := &Iq{From: "from", Lang: "en", Nested: RosterQuery{}}
    17 	iq := &Iq{From: "from", Lang: "en", Nested:
       
    18 		[]interface{}{RosterQuery{}}}
    18 	exp := `<iq from="from" xml:lang="en"><query xmlns="` +
    19 	exp := `<iq from="from" xml:lang="en"><query xmlns="` +
    19 		NsRoster + `"></query></iq>`
    20 		NsRoster + `"></query></iq>`
    20 	assertMarshal(t, exp, iq)
    21 	assertMarshal(t, exp, iq)
    21 }
    22 }
    22 
    23 
    24 	str := `<iq from="from" xml:lang="en"><query xmlns="` +
    25 	str := `<iq from="from" xml:lang="en"><query xmlns="` +
    25 		NsRoster + `"><item jid="a@b.c"/></query></iq>`
    26 		NsRoster + `"><item jid="a@b.c"/></query></iq>`
    26 	r := strings.NewReader(str)
    27 	r := strings.NewReader(str)
    27 	var st Stanza = &Iq{}
    28 	var st Stanza = &Iq{}
    28 	xml.Unmarshal(r, st)
    29 	xml.Unmarshal(r, st)
    29 	err := parseExtended(st, newRosterQuery)
    30 	m := map[string] func(*xml.Name) interface{}{NsRoster: newRosterQuery}
       
    31 	err := parseExtended(st, m)
    30 	if err != nil {
    32 	if err != nil {
    31 		t.Fatalf("parseExtended: %v", err)
    33 		t.Fatalf("parseExtended: %v", err)
    32 	}
    34 	}
    33 	assertEquals(t, "iq", st.GetName())
    35 	assertEquals(t, "iq", st.GetName())
    34 	assertEquals(t, "from", st.GetFrom())
    36 	assertEquals(t, "from", st.GetFrom())
    35 	assertEquals(t, "en", st.GetLang())
    37 	assertEquals(t, "en", st.GetLang())
    36 	nested := st.GetNested()
    38 	nested := st.GetNested()
    37 	if nested == nil {
    39 	if nested == nil {
    38 		t.Fatalf("nested nil")
    40 		t.Fatalf("nested nil")
    39 	}
    41 	}
    40 	rq, ok := nested.(*RosterQuery)
    42 	if len(nested) != 1 {
       
    43 		t.Fatalf("wrong size nested(%d): %v", len(nested),
       
    44 			nested)
       
    45 	}
       
    46 	var rq *RosterQuery
       
    47 	rq, ok := nested[0].(*RosterQuery)
    41 	if !ok {
    48 	if !ok {
    42 		t.Fatalf("nested not RosterQuery: %v",
    49 		t.Fatalf("nested not RosterQuery: %v",
    43 			reflect.TypeOf(nested))
    50 			reflect.TypeOf(nested))
    44 	}
    51 	}
    45 	if len(rq.Item) != 1 {
    52 	if len(rq.Item) != 1 {