github.com/keysonZZZ/kmg@v0.0.0-20151121023212-05317bfd7d39/typeTransform/Transform_test.go (about) 1 package typeTransform 2 3 import "testing" 4 import ( 5 "reflect" 6 7 "github.com/bronze1man/kmg/kmgTest" 8 ) 9 10 func TestManager(ot *testing.T) { 11 Int := 0 12 ArrMapStringInt := []map[string]int{} 13 type T1 struct { 14 A int 15 B string 16 } 17 ArrStruct := []T1{} 18 StringSlice := []string{} 19 mapStringString := map[string]string{} 20 testCaseTable := []struct { 21 in interface{} 22 out interface{} 23 exp interface{} 24 }{ 25 {1, &Int, 1}, //0 26 {int64(1), &Int, 1}, 27 { //2 28 []map[string]string{ 29 { 30 "a": "1", 31 }, 32 { 33 "b": "1", 34 }, 35 }, 36 &ArrMapStringInt, 37 []map[string]int{ 38 { 39 "a": 1, 40 }, 41 { 42 "b": 1, 43 }, 44 }, 45 }, 46 { //3 47 []map[string]string{ 48 { 49 "A": "1", 50 "B": "abc", 51 "C": "abd", 52 }, 53 { 54 "A": "", 55 "B": "", 56 "C": "abd", 57 }, 58 }, 59 &ArrStruct, 60 []T1{ 61 { 62 A: 1, 63 B: "abc", 64 }, 65 { 66 A: 0, 67 B: "", 68 }, 69 }, 70 }, 71 { //4 72 []interface{}{ 73 "1", 74 "2", 75 }, 76 &StringSlice, 77 []string{ 78 "1", 79 "2", 80 }, 81 }, 82 { // 5 83 struct { 84 A int 85 a int 86 }{ 87 A: 1, 88 a: 1, 89 }, 90 &mapStringString, 91 map[string]string{ 92 "A": "1", 93 }, 94 }, 95 } 96 for i, testCase := range testCaseTable { 97 err := Transform(testCase.in, testCase.out) 98 kmgTest.Equal(err, nil, "fail at %d", i) 99 kmgTest.Equal(reflect.ValueOf(testCase.out).Elem().Interface(), testCase.exp, "fail at %d", i) 100 } 101 102 }