github.com/integration-system/go-cmp@v0.0.0-20190131081942-ac5582987a2f/cmp/internal/testprotos/protos.go (about)

     1  // Copyright 2017, The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE.md file.
     4  
     5  package testprotos
     6  
     7  func Equal(x, y Message) bool {
     8  	if x == nil || y == nil {
     9  		return x == nil && y == nil
    10  	}
    11  	return x.String() == y.String()
    12  }
    13  
    14  type Message interface {
    15  	Proto()
    16  	String() string
    17  }
    18  
    19  type proto interface {
    20  	Proto()
    21  }
    22  
    23  type notComparable struct {
    24  	unexportedField func()
    25  }
    26  
    27  type Stringer struct{ X string }
    28  
    29  func (s *Stringer) String() string { return s.X }
    30  
    31  // Project1 protocol buffers
    32  type (
    33  	Eagle_States         int
    34  	Eagle_MissingCalls   int
    35  	Dreamer_States       int
    36  	Dreamer_MissingCalls int
    37  	Slap_States          int
    38  	Goat_States          int
    39  	Donkey_States        int
    40  	SummerType           int
    41  
    42  	Eagle struct {
    43  		proto
    44  		notComparable
    45  		Stringer
    46  	}
    47  	Dreamer struct {
    48  		proto
    49  		notComparable
    50  		Stringer
    51  	}
    52  	Slap struct {
    53  		proto
    54  		notComparable
    55  		Stringer
    56  	}
    57  	Goat struct {
    58  		proto
    59  		notComparable
    60  		Stringer
    61  	}
    62  	Donkey struct {
    63  		proto
    64  		notComparable
    65  		Stringer
    66  	}
    67  )
    68  
    69  // Project2 protocol buffers
    70  type (
    71  	Germ struct {
    72  		proto
    73  		notComparable
    74  		Stringer
    75  	}
    76  	Dish struct {
    77  		proto
    78  		notComparable
    79  		Stringer
    80  	}
    81  )
    82  
    83  // Project3 protocol buffers
    84  type (
    85  	Dirt struct {
    86  		proto
    87  		notComparable
    88  		Stringer
    89  	}
    90  	Wizard struct {
    91  		proto
    92  		notComparable
    93  		Stringer
    94  	}
    95  	Sadistic struct {
    96  		proto
    97  		notComparable
    98  		Stringer
    99  	}
   100  )
   101  
   102  // Project4 protocol buffers
   103  type (
   104  	HoneyStatus int
   105  	PoisonType  int
   106  	MetaData    struct {
   107  		proto
   108  		notComparable
   109  		Stringer
   110  	}
   111  	Restrictions struct {
   112  		proto
   113  		notComparable
   114  		Stringer
   115  	}
   116  )