| /* |
| Copyright The containerd Authors. |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| */ |
| |
| package util |
| |
| import ( |
| "testing" |
| |
| "github.com/stretchr/testify/assert" |
| ) |
| |
| type A struct { |
| String string |
| Int int |
| Strings []string |
| Ints map[string]int |
| As map[string]*A |
| } |
| |
| func TestCopy(t *testing.T) { |
| src := &A{ |
| String: "Hello World", |
| Int: 5, |
| Strings: []string{"A", "B"}, |
| Ints: map[string]int{"A": 1, "B": 2, "C": 4}, |
| As: map[string]*A{ |
| "One": {String: "2"}, |
| "Two": {String: "3"}, |
| }, |
| } |
| dst := &A{ |
| Strings: []string{"C"}, |
| Ints: map[string]int{"B": 3, "C": 4}, |
| As: map[string]*A{"One": {String: "1", Int: 5}}, |
| } |
| expected := &A{ |
| String: "Hello World", |
| Int: 5, |
| Strings: []string{"A", "B"}, |
| Ints: map[string]int{"A": 1, "B": 2, "C": 4}, |
| As: map[string]*A{ |
| "One": {String: "2"}, |
| "Two": {String: "3"}, |
| }, |
| } |
| assert.NotEqual(t, expected, dst) |
| err := DeepCopy(dst, src) |
| assert.NoError(t, err) |
| assert.Equal(t, expected, dst) |
| } |