github.com/keysonzzz/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgType/type_test.go (about) 1 package kmgType 2 3 import ( 4 "testing" 5 6 "github.com/bronze1man/kmg/kmgTest" 7 ) 8 9 type T struct { 10 String1 string 11 Map1 map[string]string 12 Map2 map[string]*string 13 Map3 map[string]T2 14 Map4 map[string]map[string]string 15 Map5 map[string][]string 16 Slice1 []string 17 Ptr1 *string 18 Ptr2 *T2 19 Array1 [5]string 20 } 21 22 type T2 struct { 23 A string 24 B string 25 } 26 27 func TestPtrType(ot *testing.T) { 28 var data **string 29 data = new(*string) 30 m, err := NewContext(data) 31 kmgTest.Equal(err, nil) 32 33 err = m.SaveByPath(Path{"ptr", "ptr"}, "") 34 kmgTest.Equal(err, nil) 35 kmgTest.Ok(data != nil) 36 kmgTest.Ok(*data != nil) 37 kmgTest.Equal(**data, "") 38 } 39 40 func TestStringType(ot *testing.T) { 41 var data *string 42 data = new(string) 43 m, err := NewContext(data) 44 kmgTest.Equal(err, nil) 45 46 err = m.SaveByPath(Path{"ptr"}, "123") 47 kmgTest.Equal(err, nil) 48 kmgTest.Ok(data != nil) 49 kmgTest.Equal(*data, "123") 50 } 51 52 func TestStructType(ot *testing.T) { 53 data := &struct { 54 A string 55 }{} 56 m, err := NewContext(data) 57 kmgTest.Equal(err, nil) 58 59 err = m.SaveByPath(Path{"ptr", "A"}, "123") 60 kmgTest.Equal(err, nil) 61 kmgTest.Ok(data != nil) 62 kmgTest.Equal(data.A, "123") 63 } 64 65 func TestType(ot *testing.T) { 66 data := &T{} 67 m, err := NewContext(data) 68 kmgTest.Equal(err, nil) 69 70 err = m.SaveByPath(Path{"ptr", "String1"}, "B") 71 kmgTest.Equal(err, nil) 72 kmgTest.Equal(data.String1, "B") 73 74 m.SaveByPath(Path{"ptr", "Map1", "A"}, "1123") 75 _, ok := data.Map1["A"] 76 kmgTest.Equal(ok, true) 77 kmgTest.Equal(data.Map1["A"], "1123") 78 79 err = m.SaveByPath(Path{"ptr", "Map1", "A"}, "1124") 80 kmgTest.Equal(err, nil) 81 kmgTest.Equal(data.Map1["A"], "1124") 82 83 err = m.DeleteByPath(Path{"ptr", "Map1", "A"}) 84 kmgTest.Equal(err, nil) 85 _, ok = data.Map1["A"] 86 kmgTest.Equal(ok, false) 87 88 err = m.SaveByPath(Path{"ptr", "Map2", "B", "ptr"}, "1") 89 kmgTest.Equal(err, nil) 90 rpString, ok := data.Map2["B"] 91 kmgTest.Equal(ok, true) 92 kmgTest.Equal(*rpString, "1") 93 94 err = m.SaveByPath(Path{"ptr", "Map2", "B", "ptr"}, "2") 95 kmgTest.Equal(err, nil) 96 kmgTest.Equal(*rpString, "2") 97 98 err = m.DeleteByPath(Path{"ptr", "Map2", "B", "ptr"}) 99 kmgTest.Equal(err, nil) 100 _, ok = data.Map2["B"] 101 kmgTest.Equal(ok, true) 102 kmgTest.Equal(data.Map2["B"], nil) 103 104 err = m.DeleteByPath(Path{"ptr", "Map2", "B"}) 105 kmgTest.Equal(err, nil) 106 _, ok = data.Map2["B"] 107 kmgTest.Equal(ok, false) 108 109 err = m.SaveByPath(Path{"ptr", "Map3", "C", "A"}, "1") 110 kmgTest.Equal(err, nil) 111 kmgTest.Equal(data.Map3["C"].A, "1") 112 113 err = m.DeleteByPath(Path{"ptr", "Map3", "C"}) 114 kmgTest.Equal(err, nil) 115 kmgTest.Ok(data.Map3 != nil) 116 _, ok = data.Map3["C"] 117 kmgTest.Equal(ok, false) 118 119 err = m.SaveByPath(Path{"ptr", "Map4", "D", "F"}, "1234") 120 kmgTest.Equal(err, nil) 121 kmgTest.Equal(data.Map4["D"]["F"], "1234") 122 123 err = m.SaveByPath(Path{"ptr", "Map4", "D", "H"}, "12345") 124 kmgTest.Equal(err, nil) 125 kmgTest.Equal(data.Map4["D"]["H"], "12345") 126 127 err = m.SaveByPath(Path{"ptr", "Map4", "D", "H"}, "12346") 128 kmgTest.Equal(err, nil) 129 kmgTest.Equal(data.Map4["D"]["H"], "12346") 130 131 err = m.DeleteByPath(Path{"ptr", "Map4", "D", "F"}) 132 kmgTest.Equal(err, nil) 133 kmgTest.Ok(data.Map4["D"] != nil) 134 _, ok = data.Map4["D"]["F"] 135 kmgTest.Equal(ok, false) 136 137 _, ok = data.Map4["D"]["H"] 138 kmgTest.Equal(ok, true) 139 140 err = m.SaveByPath(Path{"ptr", "Map5", "D", ""}, "1234") 141 kmgTest.Equal(err, nil) 142 kmgTest.Equal(len(data.Map5["D"]), 1) 143 kmgTest.Equal(data.Map5["D"][0], "1234") 144 145 err = m.DeleteByPath(Path{"ptr", "Map5", "D", "0"}) 146 kmgTest.Equal(err, nil) 147 kmgTest.Equal(len(data.Map5["D"]), 0) 148 149 err = m.SaveByPath(Path{"ptr", "Slice1", ""}, "1234") 150 kmgTest.Equal(err, nil) 151 kmgTest.Equal(len(data.Slice1), 1) 152 kmgTest.Equal(data.Slice1[0], "1234") 153 154 err = m.SaveByPath(Path{"ptr", "Slice1", ""}, "12345") 155 kmgTest.Equal(err, nil) 156 kmgTest.Equal(data.Slice1[1], "12345") 157 kmgTest.Equal(len(data.Slice1), 2) 158 159 err = m.DeleteByPath(Path{"ptr", "Slice1", "0"}) 160 kmgTest.Equal(err, nil) 161 kmgTest.Equal(len(data.Slice1), 1) 162 kmgTest.Equal(data.Slice1[0], "12345") 163 164 err = m.SaveByPath(Path{"ptr", "Ptr1", "ptr"}, "12345") 165 kmgTest.Equal(err, nil) 166 kmgTest.Equal(*data.Ptr1, "12345") 167 168 err = m.SaveByPath(Path{"ptr", "Ptr2", "ptr"}, "") 169 kmgTest.Equal(err, nil) 170 kmgTest.Equal(data.Ptr2.A, "") 171 172 err = m.SaveByPath(Path{"ptr", "Array1", "1"}, "12345") 173 kmgTest.Equal(err, nil) 174 kmgTest.Equal(data.Array1[1], "12345") 175 }