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 ) 117