Home | History | Annotate | Download | only in testprotos
      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