...

Source file src/github.com/gogo/protobuf/test/merge/merge_test.go

Documentation: github.com/gogo/protobuf/test/merge

     1  package merge
     2  
     3  import (
     4  	"fmt"
     5  	"reflect"
     6  	"testing"
     7  
     8  	"github.com/gogo/protobuf/proto"
     9  )
    10  
    11  func TestClone1(t *testing.T) {
    12  	f1 := &A{}
    13  	proto.Clone(f1)
    14  }
    15  
    16  func TestClone2(t *testing.T) {
    17  	f1 := &A{C: []C{{D: 1}, {D: 2}}}
    18  	f2 := proto.Clone(f1).(*A)
    19  	if !reflect.DeepEqual(f1.C, f2.C) {
    20  		t.Fatalf("got %v want %v", f2, f1)
    21  	}
    22  	if fmt.Sprintf("%p", f1.C) == fmt.Sprintf("%p", f2.C) {
    23  		t.Fatalf("slice is not deep copied")
    24  	}
    25  }
    26  
    27  func TestMerge1(t *testing.T) {
    28  	f1 := &A{}
    29  	f2 := &A{}
    30  	proto.Merge(f1, f2)
    31  }
    32  
    33  func TestMerge2(t *testing.T) {
    34  	f1 := &A{B: B{C: 1}}
    35  	f2 := &A{}
    36  	proto.Merge(f1, f2)
    37  	if f1.B.C != 1 {
    38  		t.Fatalf("got %d want %d", f1.B.C, 1)
    39  	}
    40  }
    41  
    42  func TestMerge3(t *testing.T) {
    43  	f1 := &A{}
    44  	f2 := &A{B: B{C: 1}}
    45  	proto.Merge(f1, f2)
    46  	if f1.B.C != 1 {
    47  		t.Fatalf("got %d want %d", f1.B.C, 1)
    48  	}
    49  }
    50  
    51  func TestMerge4(t *testing.T) {
    52  	f1 := &A{}
    53  	f2 := &A{C: []C{}}
    54  	proto.Merge(f1, f2)
    55  	if f1.C == nil {
    56  		t.Fatalf("got %v want %v", f1, []C{})
    57  	}
    58  }
    59  
    60  func TestMerge5(t *testing.T) {
    61  	f1 := &A{C: []C{{D: 1}, {D: 2}}}
    62  	f2 := &A{C: []C{{D: 3}, {D: 4}}}
    63  	f3 := &A{C: []C{{D: 1}, {D: 2}, {D: 3}, {D: 4}}}
    64  	proto.Merge(f1, f2)
    65  	if !reflect.DeepEqual(f1, f3) {
    66  		t.Fatalf("got %v want %v", f1, f3)
    67  	}
    68  }
    69  

View as plain text