• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Golang generator.PluginImports类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Golang中github.com/dropbox/goprotoc/protoc-gen-dgo/generator.PluginImports的典型用法代码示例。如果您正苦于以下问题:Golang PluginImports类的具体用法?Golang PluginImports怎么用?Golang PluginImports使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了PluginImports类的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。

示例1: Generate

func (p *test) Generate(imports generator.PluginImports, file *generator.FileDescriptor) bool {
	used := false
	randPkg := imports.NewImport("math/rand")
	timePkg := imports.NewImport("time")
	testingPkg := imports.NewImport("testing")
	fmtPkg := imports.NewImport("fmt")
	for _, message := range file.Messages() {
		ccTypeName := generator.CamelCaseSlice(message.TypeName())
		if !gogoproto.IsStringer(file.FileDescriptorProto, message.DescriptorProto) {
			continue
		}

		if gogoproto.HasTestGen(file.FileDescriptorProto, message.DescriptorProto) {
			used = true
			p.P(`func Test`, ccTypeName, `Stringer(t *`, testingPkg.Use(), `.T) {`)
			p.In()
			p.P(`popr := `, randPkg.Use(), `.New(`, randPkg.Use(), `.NewSource(`, timePkg.Use(), `.Now().UnixNano()))`)
			p.P(`p := NewPopulated`, ccTypeName, `(popr, false)`)
			p.P(`s1 := p.String()`)
			p.P(`s2 := `, fmtPkg.Use(), `.Sprintf("%v", p)`)
			p.P(`if s1 != s2 {`)
			p.In()
			p.P(`t.Fatalf("String want %v got %v", s1, s2)`)
			p.Out()
			p.P(`}`)
			p.Out()
			p.P(`}`)
		}

	}
	return used
}
开发者ID:dropbox,项目名称:goprotoc,代码行数:32,代码来源:stringertest.go


示例2: Generate

func (p *test) Generate(imports generator.PluginImports, file *generator.FileDescriptor) bool {
	used := false
	randPkg := imports.NewImport("math/rand")
	timePkg := imports.NewImport("time")
	testingPkg := imports.NewImport("testing")
	for _, message := range file.Messages() {
		if !gogoproto.IsUnion(file.FileDescriptorProto, message.DescriptorProto) ||
			!gogoproto.HasTestGen(file.FileDescriptorProto, message.DescriptorProto) {
			continue
		}
		used = true
		ccTypeName := generator.CamelCaseSlice(message.TypeName())

		p.P(`func Test`, ccTypeName, `OnlyOne(t *`, testingPkg.Use(), `.T) {`)
		p.In()
		p.P(`popr := `, randPkg.Use(), `.New(`, randPkg.Use(), `.NewSource(`, timePkg.Use(), `.Now().UnixNano()))`)
		p.P(`p := NewPopulated`, ccTypeName, `(popr, true)`)
		p.P(`v := p.GetValue()`)
		p.P(`msg := &`, ccTypeName, `{}`)
		p.P(`if !msg.SetValue(v) {`)
		p.In()
		p.P(`t.Fatalf("OnlyOne: Could not set Value")`)
		p.Out()
		p.P(`}`)
		p.P(`if !p.Equal(msg) {`)
		p.In()
		p.P(`t.Fatalf("%#v !OnlyOne Equal %#v", msg, p)`)
		p.Out()
		p.P(`}`)
		p.Out()
		p.P(`}`)

	}
	return used
}
开发者ID:dropbox,项目名称:goprotoc,代码行数:35,代码来源:uniontest.go


示例3: Generate

func (p *test) Generate(imports generator.PluginImports, file *generator.FileDescriptor) bool {
	used := false
	testingPkg := imports.NewImport("testing")
	for _, message := range file.Messages() {
		if !gogoproto.HasDescription(file.FileDescriptorProto, message.DescriptorProto) ||
			!gogoproto.HasTestGen(file.FileDescriptorProto, message.DescriptorProto) {
			continue
		}
		used = true
	}

	if used {
		localName := generator.FileName(file)
		p.P(`func Test`, localName, `Description(t *`, testingPkg.Use(), `.T) {`)
		p.In()
		p.P(localName, `Description()`)
		p.Out()
		p.P(`}`)

	}
	return used
}
开发者ID:dropbox,项目名称:goprotoc,代码行数:22,代码来源:descriptiontest.go


示例4: Generate

func (p *test) Generate(imports generator.PluginImports, file *generator.FileDescriptor) bool {
	used := false
	randPkg := imports.NewImport("math/rand")
	timePkg := imports.NewImport("time")
	testingPkg := imports.NewImport("testing")
	protoPkg := imports.NewImport("github.com/dropbox/goprotoc/proto")
	for _, message := range file.Messages() {
		ccTypeName := generator.CamelCaseSlice(message.TypeName())
		if !gogoproto.HasVerboseEqual(file.FileDescriptorProto, message.DescriptorProto) {
			continue
		}

		if gogoproto.HasTestGen(file.FileDescriptorProto, message.DescriptorProto) {
			used = true
			p.P(`func Test`, ccTypeName, `VerboseEqual(t *`, testingPkg.Use(), `.T) {`)
			p.In()
			p.P(`popr := `, randPkg.Use(), `.New(`, randPkg.Use(), `.NewSource(`, timePkg.Use(), `.Now().UnixNano()))`)
			p.P(`p := NewPopulated`, ccTypeName, `(popr, false)`)
			p.P(`data, err := `, protoPkg.Use(), `.Marshal(p)`)
			p.P(`if err != nil {`)
			p.In()
			p.P(`panic(err)`)
			p.Out()
			p.P(`}`)
			p.P(`msg := &`, ccTypeName, `{}`)
			p.P(`if err := `, protoPkg.Use(), `.Unmarshal(data, msg); err != nil {`)
			p.In()
			p.P(`panic(err)`)
			p.Out()
			p.P(`}`)
			p.P(`if err := p.VerboseEqual(msg); err != nil {`)
			p.In()
			p.P(`t.Fatalf("%#v !VerboseEqual %#v, since %v", msg, p, err)`)
			p.Out()
			p.P(`}`)
			p.Out()
			p.P(`}`)
		}

	}
	return used
}
开发者ID:dropbox,项目名称:goprotoc,代码行数:42,代码来源:equaltest.go


示例5: Generate

func (p *testAPI) Generate(imports generator.PluginImports, file *generator.FileDescriptor) bool {
	used := false
	testingPkg := imports.NewImport("testing")
	randPkg := imports.NewImport("math/rand")
	timePkg := imports.NewImport("time")
	for _, message := range file.Messages() {
		ccTypeName := generator.CamelCaseSlice(message.TypeName())
		if !gogoproto.HasTestGen(file.FileDescriptorProto, message.DescriptorProto) {
			continue
		}
		used = true
		p.P(`func Test`, ccTypeName, `API(t *`, testingPkg.Use(), `.T) {`)
		p.In()
		p.P(`popr := `, randPkg.Use(), `.New(`, randPkg.Use(), `.NewSource(`, timePkg.Use(),
			`.Now().UnixNano()))`)
		p.P(`p := NewPopulated`, ccTypeName, `(popr, false)`)
		p.P(`msg := &`, ccTypeName, `{}`)
		p.P(`if !apiEmpty`, ccTypeName, `(msg, t) {`)
		p.In()
		p.P(`t.Fatalf("`, ccTypeName, ` should be empty")`)
		p.Out()
		p.P(`}`)
		p.P(`apiCopy`, ccTypeName, `(msg, p, t)`)
		if gogoproto.HasVerboseEqual(file.FileDescriptorProto, message.DescriptorProto) {
			p.P(`if err := p.VerboseEqual(msg); err != nil {`)
			p.In()
			p.P(`t.Fatalf("%#v !VerboseEqual %#v, since %v", msg, p, err)`)
			p.Out()
			p.P(`}`)
		}
		p.P(`if apiEmpty`, ccTypeName, `(p, t) != apiEmpty`, ccTypeName, `(msg, t) {`)
		p.In()
		p.P(`t.Fatalf("`, ccTypeName, ` should not be empty")`)
		p.Out()
		p.P(`}`)
		p.P(`if !p.Equal(msg) {`)
		p.In()
		p.P(`t.Fatalf("%#v !Proto %#v", msg, p)`)
		p.Out()
		p.P(`}`)
		p.P(`msg.Clear()`)
		p.P(`if !apiEmpty`, ccTypeName, `(msg, t) {`)
		p.In()
		p.P(`t.Fatalf("`, ccTypeName, ` should be empty")`)
		p.Out()
		p.P(`}`)
		p.Out()
		p.P(`}`)
		p.P()

		p.P(`func apiCopy`, ccTypeName, `(dst *`, ccTypeName, `, src *`, ccTypeName, `, t *`,
			testingPkg.Use(), `.T) {`)
		p.In()
		p.P(`if dst == nil || src == nil {`)
		p.In()
		p.P(`t.Fatalf("Cannot copy to(%v) or from(%v) nil message", dst, src)`)
		p.Out()
		p.P(`}`)
		for _, field := range message.Field {
			if gogoproto.IsEmbed(field) {
				p.P(`t.Skip("Cannot copy embed field")`)
				break
			}
			if gogoproto.IsCustomType(field) {
				p.P(`t.Skip("Cannot copy costum field")`)
				break
			}
			fieldName := generator.CamelCase(p.GetFieldName(message, field))
			fieldType, _ := p.GoType(message, field)
			fieldTypeName := generator.GoTypeToName(fieldType)
			if generator.IsRepeated(field) {
				p.P(`for i := 0; i < src.`, fieldName, `Size(); i++ {`)
				p.In()
				if generator.IsMessageType(field) {
					p.P(`src`, fieldName, `, _ := src.Get`, fieldName, `(i)`)
					p.P(`dst`, fieldName, `, _ := dst.Add`, fieldName, `()`)
					p.P(`apiCopy`, fieldTypeName, `(dst`, fieldName, `, src`, fieldName, `, t)`)
				} else {
					p.P(`value, _ := src.Get`, fieldName, `(i)`)
					p.P(`dst.Add`, fieldName, `(value)`)
				}
				p.Out()
				p.P(`}`)
			} else {
				p.P(`if src.Has`, fieldName, `() {`)
				p.In()
				if generator.IsMessageType(field) {
					p.P(`src`, fieldName, ` := src.Get`, fieldName, `()`)
					p.P(`dst`, fieldName, `, _ := dst.Mutate`, fieldName, `()`)
					p.P(`apiCopy`, fieldTypeName, `(dst`, fieldName, `, src`, fieldName, `, t)`)
				} else {
					p.P(`dst.Set`, fieldName, `(src.Get`, fieldName, `())`)
				}
				p.Out()
				p.P(`}`)
			}
		}
		p.P(`src.XXX_unrecognized = dst.XXX_unrecognized`)
		if len(message.ExtensionRange) > 0 {
			p.P(`src.XXX_extensions = dst.XXX_extensions`)
//.........这里部分代码省略.........
开发者ID:dropbox,项目名称:goprotoc,代码行数:101,代码来源:testgen.go


示例6: Generate

func (p *test) Generate(imports generator.PluginImports, file *generator.FileDescriptor) bool {
	used := false
	randPkg := imports.NewImport("math/rand")
	timePkg := imports.NewImport("time")
	testingPkg := imports.NewImport("testing")
	protoPkg := imports.NewImport("github.com/dropbox/goprotoc/proto")
	for _, message := range file.Messages() {
		ccTypeName := generator.CamelCaseSlice(message.TypeName())
		if !gogoproto.IsSizer(file.FileDescriptorProto, message.DescriptorProto) {
			continue
		}

		if gogoproto.HasTestGen(file.FileDescriptorProto, message.DescriptorProto) {
			used = true
			p.P(`func Test`, ccTypeName, `Size(t *`, testingPkg.Use(), `.T) {`)
			p.In()
			p.P(`popr := `, randPkg.Use(), `.New(`, randPkg.Use(), `.NewSource(`, timePkg.Use(), `.Now().UnixNano()))`)
			p.P(`p := NewPopulated`, ccTypeName, `(popr, true)`)
			p.P(`size2 := `, protoPkg.Use(), `.Size(p)`)
			p.P(`data, err := `, protoPkg.Use(), `.Marshal(p)`)
			p.P(`if err != nil {`)
			p.In()
			p.P(`panic(err)`)
			p.Out()
			p.P(`}`)
			p.P(`size := p.Size()`)
			p.P(`if len(data) != size {`)
			p.In()
			p.P(`t.Fatalf("size %v != marshalled size %v", size, len(data))`)
			p.Out()
			p.P(`}`)
			p.P(`if size2 != size {`)
			p.In()
			p.P(`t.Fatalf("size %v != before marshal proto.Size %v", size, size2)`)
			p.Out()
			p.P(`}`)
			p.P(`size3 := `, protoPkg.Use(), `.Size(p)`)
			p.P(`if size3 != size {`)
			p.In()
			p.P(`t.Fatalf("size %v != after marshal proto.Size %v", size, size3)`)
			p.Out()
			p.P(`}`)
			p.Out()
			p.P(`}`)
			p.P()
		}

		if gogoproto.HasBenchGen(file.FileDescriptorProto, message.DescriptorProto) {
			used = true
			p.P(`func Benchmark`, ccTypeName, `Size(b *`, testingPkg.Use(), `.B) {`)
			p.In()
			p.P(`popr := `, randPkg.Use(), `.New(`, randPkg.Use(), `.NewSource(616))`)
			p.P(`total := 0`)
			p.P(`pops := make([]*`, ccTypeName, `, 1000)`)
			p.P(`for i := 0; i < 1000; i++ {`)
			p.In()
			p.P(`pops[i] = NewPopulated`, ccTypeName, `(popr, false)`)
			p.Out()
			p.P(`}`)
			p.P(`b.ResetTimer()`)
			p.P(`for i := 0; i < b.N; i++ {`)
			p.In()
			p.P(`total += pops[i%1000].Size()`)
			p.Out()
			p.P(`}`)
			p.P(`b.SetBytes(int64(total / b.N))`)
			p.Out()
			p.P(`}`)
			p.P()
		}

	}
	return used
}
开发者ID:dropbox,项目名称:goprotoc,代码行数:74,代码来源:sizetest.go



注:本文中的github.com/dropbox/goprotoc/protoc-gen-dgo/generator.PluginImports类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Golang goopt.Flag函数代码示例发布时间:2022-05-23
下一篇:
Golang generator.FileDescriptor类代码示例发布时间:2022-05-23
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap