package populate
import "github.com/gogo/protobuf/plugin/populate"
The populate plugin generates a NewPopulated function. This function returns a newly populated structure.
It is enabled by the following extensions:
- populate
- populate_all
Let us look at:
github.com/gogo/protobuf/test/example/example.proto
Btw all the output can be seen at:
github.com/gogo/protobuf/test/example/*
The following message:
option (gogoproto.populate_all) = true; message B { optional A A = 1 [(gogoproto.nullable) = false, (gogoproto.embed) = true]; repeated bytes G = 2 [(gogoproto.customtype) = "github.com/gogo/protobuf/test/custom.Uint128", (gogoproto.nullable) = false]; }
given to the populate plugin, will generate code the following code:
func NewPopulatedB(r randyExample, easy bool) *B { this := &B{} v2 := NewPopulatedA(r, easy) this.A = *v2 if r.Intn(10) != 0 { v3 := r.Intn(10) this.G = make([]github_com_gogo_protobuf_test_custom.Uint128, v3) for i := 0; i < v3; i++ { v4 := github_com_gogo_protobuf_test_custom.NewPopulatedUint128(r) this.G[i] = *v4 } } if !easy && r.Intn(10) != 0 { this.XXX_unrecognized = randUnrecognizedExample(r, 3) } return this }
The idea that is useful for testing. Most of the other plugins' generated test code uses it. You will still be able to use the generated test code of other packages if you turn off the popluate plugin and write your own custom NewPopulated function.
If the easy flag is not set the XXX_unrecognized and XXX_extensions fields are also populated. These have caused problems with JSON marshalling and unmarshalling tests.
Index ¶
Functions ¶
func NewPlugin ¶
func NewPlugin() *plugin
Types ¶
type VarGen ¶
func NewVarGen ¶
func NewVarGen() VarGen
Source Files ¶
- Version
- v1.2.0
- Published
- Dec 11, 2018
- Platform
- js/wasm
- Imports
- 9 packages
- Last checked
- 2 days ago –
Tools for package owners.