github.com/cosmos/cosmos-sdk@v0.50.10/testutil/testdata/animal.go (about) 1 package testdata 2 3 // nolint 4 5 import ( 6 "fmt" 7 8 "github.com/cosmos/gogoproto/proto" 9 10 "github.com/cosmos/cosmos-sdk/codec/types" 11 ) 12 13 type Animal interface { 14 proto.Message 15 16 Greet() string 17 } 18 19 type Cartoon interface { 20 proto.Message 21 22 Identify() string 23 } 24 25 func (c *Cat) Greet() string { 26 return fmt.Sprintf("Meow, my name is %s", c.Moniker) 27 } 28 29 func (c *Bird) Identify() string { 30 return "This is Tweety." 31 } 32 33 func (d Dog) Greet() string { 34 return fmt.Sprintf("Roof, my name is %s", d.Name) 35 } 36 37 var _ types.UnpackInterfacesMessage = HasAnimal{} 38 39 func (m HasAnimal) UnpackInterfaces(unpacker types.AnyUnpacker) error { 40 var animal Animal 41 return unpacker.UnpackAny(m.Animal, &animal) 42 } 43 44 type HasAnimalI interface { 45 TheAnimal() Animal 46 } 47 48 var _ HasAnimalI = &HasAnimal{} 49 50 func (m HasAnimal) TheAnimal() Animal { 51 return m.Animal.GetCachedValue().(Animal) 52 } 53 54 type HasHasAnimalI interface { 55 TheHasAnimal() HasAnimalI 56 } 57 58 var _ HasHasAnimalI = &HasHasAnimal{} 59 60 func (m HasHasAnimal) TheHasAnimal() HasAnimalI { 61 return m.HasAnimal.GetCachedValue().(HasAnimalI) 62 } 63 64 var _ types.UnpackInterfacesMessage = HasHasAnimal{} 65 66 func (m HasHasAnimal) UnpackInterfaces(unpacker types.AnyUnpacker) error { 67 var animal HasAnimalI 68 return unpacker.UnpackAny(m.HasAnimal, &animal) 69 } 70 71 type HasHasHasAnimalI interface { 72 TheHasHasAnimal() HasHasAnimalI 73 } 74 75 var _ HasHasAnimalI = &HasHasAnimal{} 76 77 func (m HasHasHasAnimal) TheHasHasAnimal() HasHasAnimalI { 78 return m.HasHasAnimal.GetCachedValue().(HasHasAnimalI) 79 } 80 81 var _ types.UnpackInterfacesMessage = HasHasHasAnimal{} 82 83 func (m HasHasHasAnimal) UnpackInterfaces(unpacker types.AnyUnpacker) error { 84 var animal HasHasAnimalI 85 return unpacker.UnpackAny(m.HasHasAnimal, &animal) 86 }