(imports generator.PluginImports, file *generator.FileDescriptor)
| 43 | } |
| 44 | |
| 45 | func (p *test) Generate(imports generator.PluginImports, file *generator.FileDescriptor) bool { |
| 46 | used := false |
| 47 | randPkg := imports.NewImport("math/rand") |
| 48 | timePkg := imports.NewImport("time") |
| 49 | testingPkg := imports.NewImport("testing") |
| 50 | for _, message := range file.Messages() { |
| 51 | if !gogoproto.IsUnion(file.FileDescriptorProto, message.DescriptorProto) || |
| 52 | !gogoproto.HasTestGen(file.FileDescriptorProto, message.DescriptorProto) { |
| 53 | continue |
| 54 | } |
| 55 | if message.DescriptorProto.GetOptions().GetMapEntry() { |
| 56 | continue |
| 57 | } |
| 58 | used = true |
| 59 | ccTypeName := generator.CamelCaseSlice(message.TypeName()) |
| 60 | |
| 61 | p.P(`func Test`, ccTypeName, `OnlyOne(t *`, testingPkg.Use(), `.T) {`) |
| 62 | p.In() |
| 63 | p.P(`popr := `, randPkg.Use(), `.New(`, randPkg.Use(), `.NewSource(`, timePkg.Use(), `.Now().UnixNano()))`) |
| 64 | p.P(`p := NewPopulated`, ccTypeName, `(popr, true)`) |
| 65 | p.P(`v := p.GetValue()`) |
| 66 | p.P(`msg := &`, ccTypeName, `{}`) |
| 67 | p.P(`if !msg.SetValue(v) {`) |
| 68 | p.In() |
| 69 | p.P(`t.Fatalf("OnlyOne: Could not set Value")`) |
| 70 | p.Out() |
| 71 | p.P(`}`) |
| 72 | p.P(`if !p.Equal(msg) {`) |
| 73 | p.In() |
| 74 | p.P(`t.Fatalf("%#v !OnlyOne Equal %#v", msg, p)`) |
| 75 | p.Out() |
| 76 | p.P(`}`) |
| 77 | p.Out() |
| 78 | p.P(`}`) |
| 79 | |
| 80 | } |
| 81 | return used |
| 82 | } |
| 83 | |
| 84 | func init() { |
| 85 | testgen.RegisterTestPlugin(NewTest) |
nothing calls this directly
no test coverage detected