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