| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | 
							- package cputil
 
- import (
 
- 	"testing"
 
- 	"github.com/google/go-cmp/cmp"
 
- 	"github.com/stretchr/testify/require"
 
- )
 
- type Dummy struct {
 
- 	A1 int
 
- 	A2 int
 
- 	B1 bool
 
- 	B2 bool
 
- 	C1 map[string]interface{}
 
- 	D1 []int
 
- }
 
- func TestShallowCopy(t *testing.T) {
 
- 	d1 := &Dummy{
 
- 		A1: 0,
 
- 		A2: 1,
 
- 		B1: false,
 
- 		B2: true,
 
- 		C1: map[string]interface{}{
 
- 			"a": 1,
 
- 		},
 
- 		D1: []int{0, 1},
 
- 	}
 
- 	d2 := &Dummy{}
 
- 	_ = ShallowCopy(&d2, d1)
 
- 	require.Empty(t, cmp.Diff(d1, d2))
 
- 	// case: 浅拷贝会互相影响
 
- 	d1.C1["a"] = 2
 
- 	require.Equal(t, d2.C1["a"], d1.C1["a"])
 
- }
 
- func TestDeepCopy(t *testing.T) {
 
- 	d1 := &Dummy{
 
- 		A1: 0,
 
- 		A2: 1,
 
- 		B1: false,
 
- 		B2: true,
 
- 		C1: map[string]interface{}{
 
- 			"a": 1,
 
- 		},
 
- 		D1: []int{0, 1},
 
- 	}
 
- 	d2 := &Dummy{}
 
- 	_ = DeepCopy(&d2, d1)
 
- 	require.Empty(t, cmp.Diff(d1, d2))
 
- 	// case: 深拷贝不会互相影响
 
- 	d1.C1["a"] = 2
 
- 	require.NotEqual(t, d2.C1["a"], d1.C1["a"])
 
- }
 
 
  |