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 { |