1// keystolower_test.go
2
3package mxj
4
5import (
6	"fmt"
7	"testing"
8)
9
10var tolowerdata1 = []byte(`
11	<doc>
12		<element attr="attrValue">value</element>
13	</doc>
14`)
15
16var tolowerdata2 = []byte(`
17	<DOC>
18		<Element attR="attrValue">value</Element>
19	</DOC>
20`)
21
22func TestToLower(t *testing.T) {
23	fmt.Println("\n-------------- keystolower_test.go")
24	fmt.Println("\nTestToLower ...")
25
26	CoerceKeysToLower()
27	defer CoerceKeysToLower()
28
29	m1, err := NewMapXml(tolowerdata1)
30	if err != nil {
31		t.Fatal(err)
32	}
33	m2, err := NewMapXml(tolowerdata2)
34	if err != nil {
35		t.Fatal(err)
36	}
37
38	v1, err := m1.ValuesForPath("doc.element")
39	if err != nil {
40		t.Fatal(err)
41	}
42	v2, err := m2.ValuesForPath("doc.element")
43	if err != nil {
44		t.Fatal(err)
45	}
46
47	if len(v1) != len(v2) {
48		t.Fatal(err, len(v1), len(v2))
49	}
50
51	m := v1[0].(map[string]interface{})
52	mm := v2[0].(map[string]interface{})
53	for k, v := range m {
54		if vv, ok := mm[k]; !ok {
55			t.Fatal("key:", k, "not in mm")
56		} else if v.(string) != vv.(string) {
57			t.Fatal(v.(string), "not in v2:", vv.(string))
58		}
59	}
60}
61