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