gitee.com/zhongguo168a/gocodes@v0.0.0-20230609140523-e1828349603f/datax/coderx/MapToRef_test.go (about) 1 package coderx 2 3 import ( 4 "fmt" 5 "gitee.com/zhongguo168a/gocodes/datax/generate/schema_go/sample" 6 esample "gitee.com/zhongguo168a/gocodes/datax/generate/schema_go/sample/enums" 7 "github.com/stretchr/testify/assert" 8 "testing" 9 ) 10 11 func TestRef_DecodeBasic(t *testing.T) { 12 Load() 13 14 var classMap = M{ 15 "Bool": true, 16 "String": "a", 17 "int32": 100, 18 "Float32": 100.0, 19 "Class1": M{"Int": 100, "String": "class1"}, 20 "Enum": esample.Enum1_C, 21 "Enum2": esample.Enum2_B, 22 "Any": map[string]interface{}{"a": 1}, 23 } 24 mapToRef := NewMapToRef() 25 obj := &sample.SampleClass{} 26 err := mapToRef.SetSource(classMap).Write(obj) 27 28 assert.Equal(t, true, err == nil, err) 29 assert.Equal(t, true, obj.Bool) 30 assert.Equal(t, "a", obj.String) 31 assert.Equal(t, 100, obj.Int32) 32 assert.Equal(t, 100.0, obj.Float32) 33 assert.Equal(t, true, obj.Class1 != nil) 34 assert.Equal(t, 100, obj.Class1.Int) 35 assert.Equal(t, "class1", obj.Class1.String) 36 assert.Equal(t, esample.Enum1_C, obj.Enum) 37 assert.Equal(t, esample.Enum2_B, obj.Enum2) 38 assert.Equal(t, map[string]interface{}{"a": 1}, obj.Any) 39 } 40 41 func TestRef_DecodeMap(t *testing.T) { 42 Load() 43 44 var classMap = M{ 45 "Map": M{"key1": 1, "key2": "2", "key3": 3.0}, 46 "MapSt": M{ 47 "key1": M{"String": "ArraySt1", "Int": 100}, 48 "key2": M{"String": "ArraySt2", "Int": 100}, 49 }, 50 } 51 mapToRef := NewMapToRef() 52 obj := &sample.SampleClass{} 53 err := mapToRef.SetSource(classMap).Write(obj) 54 55 assert.Equal(t, true, err == nil, err) 56 assert.Equal(t, 3, len(obj.Map)) 57 assert.Equal(t, `map[key1:1 key2:2 key3:3]`, fmt.Sprintf("%+v", obj.Map)) 58 assert.Equal(t, 2, len(obj.MapSt)) 59 assert.Equal(t, `&{Int:100 String:ArraySt1 Enum3:0}`, fmt.Sprintf("%+v", obj.MapSt["key1"])) 60 assert.Equal(t, `&{Int:100 String:ArraySt2 Enum3:0}`, fmt.Sprintf("%+v", obj.MapSt["key2"])) 61 } 62 63 func TestRef_DecodeArray(t *testing.T) { 64 Load() 65 66 var classMap = M{ 67 "Array": []interface{}{"1", "2", true}, 68 "ArraySt": []interface{}{ 69 M{"Map": M{"key1": 1, "key2": "2"}, "Bool": true, "Array": A{"1", true}}, 70 M{"Map": M{"key1": true, "key2": 4.0}, "Bool": false}, 71 }, 72 } 73 mapToRef := NewMapToRef() 74 obj := &sample.SampleClass{} 75 err := mapToRef.SetSource(classMap).Write(obj) 76 77 assert.Equal(t, true, err == nil, err) 78 assert.Equal(t, 3, len(obj.Array)) 79 assert.Equal(t, `[1 2 1]`, fmt.Sprintf("%+v", obj.Array)) 80 assert.Equal(t, 2, len(obj.ArraySt)) 81 assert.Equal(t, `&{Sub1:{Map:map[key1:1 key2:2] Array:[1 1]} Bool:true}`, fmt.Sprintf("%+v", obj.ArraySt[0])) 82 assert.Equal(t, `&{Sub1:{Map:map[key1:1 key2:4] Array:[]} Bool:false}`, fmt.Sprintf("%+v", obj.ArraySt[1])) 83 }