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  }