1 // keystolower_test.go 2 3 package mxj 4 5 import ( 6 "fmt" 7 "testing" 8 ) 9 10 var tolowerdata1 = []byte(` 11 <doc> 12 <element attr="attrValue">value</element> 13 </doc> 14 `) 15 16 var tolowerdata2 = []byte(` 17 <DOC> 18 <Element attR="attrValue">value</Element> 19 </DOC> 20 `) 21 22 func 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