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  }