1// attrprefix_test.go - change attrPrefix var
2
3package mxj
4
5import (
6	"fmt"
7	"testing"
8)
9
10var data = []byte(`
11<doc>
12	<elem1 attr1="this" attr2="is">a test</elem1>
13	<elem2 attr1="this" attr2="is not">a test</elem2>
14</doc>
15`)
16
17func TestPrefixDefault(t *testing.T) {
18	fmt.Println("----------------- TestPrefixDefault ...")
19	m, err := NewMapXml(data)
20	if err != nil {
21		t.Fatal(err)
22	}
23	vals, err := m.ValuesForKey("-attr1")
24	if err != nil {
25		t.Fatal(err)
26	}
27	if len(vals) != 2 {
28		t.Fatal("didn't get 2 -attr1 vals", len(vals))
29	}
30	vals, err = m.ValuesForKey("-attr2")
31	if err != nil {
32		t.Fatal(err)
33	}
34	if len(vals) != 2 {
35		t.Fatal("didn't get 2 -attr2 vals", len(vals))
36	}
37}
38
39func TestPrefixNoHyphen(t *testing.T) {
40	fmt.Println("----------------- TestPrefixNoHyphen ...")
41	PrependAttrWithHyphen(false)
42	m, err := NewMapXml(data)
43	if err != nil {
44		t.Fatal(err)
45	}
46	vals, err := m.ValuesForKey("attr1")
47	if err != nil {
48		t.Fatal(err)
49	}
50	if len(vals) != 2 {
51		t.Fatal("didn't get 2 attr1 vals", len(vals))
52	}
53	vals, err = m.ValuesForKey("attr2")
54	if err != nil {
55		t.Fatal(err)
56	}
57	if len(vals) != 2 {
58		t.Fatal("didn't get 2 attr2 vals", len(vals))
59	}
60}
61
62func TestPrefixUnderscore(t *testing.T) {
63	fmt.Println("----------------- TestPrefixUnderscore ...")
64	SetAttrPrefix("_")
65	m, err := NewMapXml(data)
66	if err != nil {
67		t.Fatal(err)
68	}
69	vals, err := m.ValuesForKey("_attr1")
70	if err != nil {
71		t.Fatal(err)
72	}
73	if len(vals) != 2 {
74		t.Fatal("didn't get 2 _attr1 vals", len(vals))
75	}
76	vals, err = m.ValuesForKey("_attr2")
77	if err != nil {
78		t.Fatal(err)
79	}
80	if len(vals) != 2 {
81		t.Fatal("didn't get 2 _attr2 vals", len(vals))
82	}
83}
84
85func TestPrefixAt(t *testing.T) {
86	fmt.Println("----------------- TestPrefixAt ...")
87	SetAttrPrefix("@")
88	m, err := NewMapXml(data)
89	if err != nil {
90		t.Fatal(err)
91	}
92	vals, err := m.ValuesForKey("@attr1")
93	if err != nil {
94		t.Fatal(err)
95	}
96	if len(vals) != 2 {
97		t.Fatal("didn't get 2 @attr1 vals", len(vals))
98	}
99	vals, err = m.ValuesForKey("@attr2")
100	if err != nil {
101		t.Fatal(err)
102	}
103	if len(vals) != 2 {
104		t.Fatal("didn't get 2 @attr2 vals", len(vals))
105	}
106}
107
108func TestMarshalPrefixDefault(t *testing.T) {
109	fmt.Println("----------------- TestMarshalPrefixDefault ...")
110	m, err := NewMapXml(data)
111	if err != nil {
112		t.Fatal(err)
113	}
114	x, err := m.XmlIndent("", "  ")
115	if err != nil {
116		t.Fatal(err)
117	}
118	fmt.Println(string(x))
119}
120
121func TestMarshalPrefixNoHyphen(t *testing.T) {
122	fmt.Println("----------------- TestMarshalPrefixNoHyphen ...")
123	PrependAttrWithHyphen(false)
124	m, err := NewMapXml(data)
125	if err != nil {
126		t.Fatal(err)
127	}
128	_, err = m.XmlIndent("", "  ")
129	if err == nil {
130		t.Fatal("error not reported for invalid key label")
131	}
132	fmt.Println("err ok:", err)
133}
134
135func TestMarshalPrefixUnderscore(t *testing.T) {
136	fmt.Println("----------------- TestMarshalPrefixUnderscore ...")
137	SetAttrPrefix("_")
138	m, err := NewMapXml(data)
139	if err != nil {
140		t.Fatal(err)
141	}
142	x, err := m.XmlIndent("", "  ")
143	if err != nil {
144		t.Fatal(err)
145	}
146	fmt.Println(string(x))
147}
148
149