ipld-eth-server/vendor/github.com/dave/jennifer/jen/generated_test.go

809 lines
15 KiB
Go

package jen_test
import (
"testing"
. "github.com/dave/jennifer/jen"
)
var gencases = []tc{
{
desc: `bool group`,
code: BlockFunc(func(g *Group) {
g.Bool()
}),
expect: `{
bool
}`,
},
{
desc: `recover func`,
code: Recover(),
expect: `recover()`,
},
{
desc: `recover statement`,
code: Null().Recover(),
expect: `recover()`,
},
{
desc: `recover group`,
code: BlockFunc(func(g *Group) {
g.Recover()
}),
expect: `{
recover()
}`,
},
{
desc: `real func`,
code: Real(Id("a")),
expect: `real(a)`,
},
{
desc: `real statement`,
code: Null().Real(Id("a")),
expect: `real(a)`,
},
{
desc: `real group`,
code: BlockFunc(func(g *Group) {
g.Real(Id("a"))
}),
expect: `{
real(a)
}`,
},
{
desc: `printlnfunc func`,
code: PrintlnFunc(func(g *Group) { g.Id("a") }),
expect: `println(a)`,
},
{
desc: `printlnfunc statement`,
code: Null().PrintlnFunc(func(g *Group) { g.Id("a") }),
expect: `println(a)`,
},
{
desc: `printlnfunc group`,
code: BlockFunc(func(bg *Group) {
bg.PrintlnFunc(func(pg *Group) { pg.Id("a") })
}),
expect: `{
println(a)
}`,
},
{
desc: `println func`,
code: Println(Id("a")),
expect: `println(a)`,
},
{
desc: `println statement`,
code: Null().Println(Id("a")),
expect: `println(a)`,
},
{
desc: `println group`,
code: BlockFunc(func(g *Group) {
g.Println(Id("a"))
}),
expect: `{
println(a)
}`,
},
{
desc: `printfunc func`,
code: PrintFunc(func(g *Group) { g.Id("a") }),
expect: `print(a)`,
},
{
desc: `printfunc statement`,
code: Null().PrintFunc(func(g *Group) { g.Id("a") }),
expect: `print(a)`,
},
{
desc: `printfunc group`,
code: BlockFunc(func(bg *Group) {
bg.PrintFunc(func(pg *Group) { pg.Id("a") })
}),
expect: `{
print(a)
}`,
},
{
desc: `print func`,
code: Print(Id("a")),
expect: `print(a)`,
},
{
desc: `print statement`,
code: Null().Print(Id("a")),
expect: `print(a)`,
},
{
desc: `print group`,
code: BlockFunc(func(g *Group) {
g.Print(Id("a"))
}),
expect: `{
print(a)
}`,
},
{
desc: `panic func`,
code: Panic(Id("a")),
expect: `panic(a)`,
},
{
desc: `panic statement`,
code: Null().Panic(Id("a")),
expect: `panic(a)`,
},
{
desc: `panic group`,
code: BlockFunc(func(g *Group) {
g.Panic(Id("a"))
}),
expect: `{
panic(a)
}`,
},
{
desc: `new func`,
code: New(Id("a")),
expect: `new(a)`,
},
{
desc: `new statement`,
code: Id("a").Op(":=").New(Id("a")),
expect: `a := new(a)`,
},
{
desc: `new group`,
code: BlockFunc(func(g *Group) {
g.New(Id("a"))
}),
expect: `{
new(a)
}`,
},
{
desc: `make func`,
code: Make(Id("a")),
expect: `make(a)`,
},
{
desc: `make statement`,
code: Id("a").Op(":=").Make(Id("a")),
expect: `a := make(a)`,
},
{
desc: `make group`,
code: BlockFunc(func(g *Group) {
g.Make(Id("a"))
}),
expect: `{
make(a)
}`,
},
{
desc: `len func`,
code: Len(Id("a")),
expect: `len(a)`,
},
{
desc: `len statement`,
code: Id("a").Op(":=").Len(Id("a")),
expect: `a := len(a)`,
},
{
desc: `len group`,
code: BlockFunc(func(g *Group) {
g.Len(Id("a"))
}),
expect: `{
len(a)
}`,
},
{
desc: `imag func`,
code: Imag(Id("a")),
expect: `imag(a)`,
},
{
desc: `imag statement`,
code: Id("a").Op(":=").Imag(Id("a")),
expect: `a := imag(a)`,
},
{
desc: `imag group`,
code: BlockFunc(func(g *Group) {
g.Imag(Id("a"))
}),
expect: `{
imag(a)
}`,
},
{
desc: `delete func`,
code: Delete(Id("a"), Id("b")),
expect: `delete(a, b)`,
},
{
desc: `delete statement`,
code: Null().Delete(Id("a"), Id("b")),
expect: `delete(a, b)`,
},
{
desc: `delete group`,
code: BlockFunc(func(g *Group) {
g.Delete(Id("a"), Id("b"))
}),
expect: `{
delete(a, b)
}`,
},
{
desc: `copy func`,
code: Copy(Id("a"), Id("b")),
expect: `copy(a, b)`,
},
{
desc: `copy statement`,
code: Id("a").Op(":=").Copy(Id("a"), Id("b")),
expect: `a := copy(a, b)`,
},
{
desc: `copy group`,
code: BlockFunc(func(g *Group) {
g.Copy(Id("a"), Id("b"))
}),
expect: `{
copy(a, b)
}`,
},
{
desc: `complex func`,
code: Complex(Id("a"), Id("b")),
expect: `complex(a, b)`,
},
{
desc: `complex statement`,
code: Id("a").Op(":=").Complex(Id("a"), Id("b")),
expect: `a := complex(a, b)`,
},
{
desc: `complex group`,
code: BlockFunc(func(g *Group) {
g.Complex(Id("a"), Id("b"))
}),
expect: `{
complex(a, b)
}`,
},
{
desc: `close group`,
code: BlockFunc(func(g *Group) { g.Close(Id("a")) }),
expect: `{
close(a)
}`,
},
{
desc: `cap func`,
code: Cap(Id("a")),
expect: `cap(a)`,
},
{
desc: `cap statement`,
code: Id("a").Op(":=").Cap(Id("b")),
expect: `a := cap(b)`,
},
{
desc: `cap group`,
code: BlockFunc(func(g *Group) {
g.Cap(Id("a"))
}),
expect: `{
cap(a)
}`,
},
{
desc: `append group`,
code: BlockFunc(func(g *Group) {
g.Append(Id("a"))
}),
expect: `{
append(a)
}`,
},
{
desc: `appendfunc statement`,
code: Id("a").Op("=").AppendFunc(func(ag *Group) { ag.Id("a") }),
expect: `a = append(a)`,
},
{
desc: `appendfunc func`,
code: AppendFunc(func(ag *Group) { ag.Id("a") }),
expect: `append(a)`,
},
{
desc: `appendfunc group`,
code: BlockFunc(func(bg *Group) {
bg.AppendFunc(func(ag *Group) { ag.Id("a") })
}),
expect: `{
append(a)
}`,
},
{
desc: `casefunc group`,
code: Switch().BlockFunc(func(g *Group) {
g.CaseFunc(func(g *Group) { g.Id("a") }).Block()
}),
expect: `switch {
case a:
}`,
},
{
desc: `case group`,
code: Switch().BlockFunc(func(g *Group) {
g.Case(Id("a")).Block()
}),
expect: `switch {
case a:
}`,
},
{
desc: `structfunc statement`,
code: Id("a").Op(":=").StructFunc(func(g *Group) {}).Values(),
expect: `a := struct{}{}`,
},
{
desc: `structfunc group`,
// Don't do this! ListFunc used to kludge Group.Struct usage
// without syntax error.
code: Id("a").Op(":=").ListFunc(func(g *Group) { g.StructFunc(func(g *Group) {}) }).Values(),
expect: `a := struct{}{}`,
},
{
desc: `structfunc func`,
code: Id("a").Op(":=").Add(StructFunc(func(g *Group) {})).Values(),
expect: `a := struct{}{}`,
},
{
desc: `struct group`,
// Don't do this! ListFunc used to kludge Group.Struct usage
// without syntax error.
code: Id("a").Op(":=").ListFunc(func(g *Group) { g.Struct() }).Values(),
expect: `a := struct{}{}`,
},
{
desc: `struct func`,
code: Id("a").Op(":=").Add(Struct()).Values(),
expect: `a := struct{}{}`,
},
{
desc: `interfacefunc func`,
code: Id("a").Assert(InterfaceFunc(func(g *Group) {
g.Id("a").Call().Int()
g.Id("b").Call().Int()
})),
expect: `a.(interface{
a() int
b() int
})`,
},
{
desc: `interfacefunc statement`,
code: Id("a").Assert(Null().InterfaceFunc(func(g *Group) {
g.Id("a").Call().Int()
g.Id("b").Call().Int()
})),
expect: `a.(interface{
a() int
b() int
})`,
},
{
desc: `interfacefunc group`,
// Don't do this! ListFunc used to kludge Group.InterfaceFunc usage
// without syntax error.
code: Id("a").Assert(ListFunc(func(lg *Group) {
lg.InterfaceFunc(func(ig *Group) {
ig.Id("a").Call().Int()
ig.Id("b").Call().Int()
})
})),
expect: `a.(interface{
a() int
b() int
})`,
},
{
desc: `interface func`,
code: Interface().Parens(Id("a")),
expect: `interface{}(a)`,
},
{
desc: `interface group`,
code: BlockFunc(func(g *Group) {
g.Interface().Parens(Id("a"))
}),
expect: `{
interface{}(a)
}`,
},
{
desc: `interface statement`,
code: Null().Interface().Parens(Id("a")),
expect: `interface{}(a)`,
},
{
desc: `switchfunc func`,
code: SwitchFunc(func(rg *Group) {
rg.Id("a")
}).Block(),
expect: `switch a {}`,
},
{
desc: `switchfunc statement`,
code: Null().SwitchFunc(func(rg *Group) {
rg.Id("a")
}).Block(),
expect: `switch a {
}`,
},
{
desc: `switchfunc group`,
code: BlockFunc(func(bg *Group) {
bg.SwitchFunc(func(rg *Group) {
rg.Id("a")
}).Block()
}),
expect: `{
switch a {
}
}`,
},
{
desc: `switch group`,
code: BlockFunc(func(bg *Group) {
bg.Switch().Block()
}),
expect: `{
switch {
}
}`,
},
{
desc: `forfunc func`,
code: ForFunc(func(rg *Group) {
rg.Id("a")
}).Block(),
expect: `for a {}`,
},
{
desc: `forfunc statement`,
code: Null().ForFunc(func(rg *Group) {
rg.Id("a")
}).Block(),
expect: `for a {
}`,
},
{
desc: `forfunc group`,
code: BlockFunc(func(bg *Group) {
bg.ForFunc(func(rg *Group) {
rg.Id("a")
}).Block()
}),
expect: `{
for a {
}
}`,
},
{
desc: `for group`,
code: BlockFunc(func(g *Group) {
g.For(Id("a")).Block()
}),
expect: `{
for a {}
}`,
},
{
desc: `returnfunc func`,
code: ReturnFunc(func(rg *Group) {
rg.Lit(1)
rg.Lit(2)
}),
expect: `return 1, 2`,
},
{
desc: `returnfunc statement`,
code: Empty().ReturnFunc(func(rg *Group) {
rg.Lit(1)
rg.Lit(2)
}),
expect: `return 1, 2`,
},
{
desc: `returnfunc group`,
code: BlockFunc(func(bg *Group) {
bg.ReturnFunc(func(rg *Group) {
rg.Lit(1)
rg.Lit(2)
})
}),
expect: `{
return 1, 2
}`,
},
{
desc: `return group`,
code: BlockFunc(func(g *Group) {
g.Return()
}),
expect: `{
return
}`,
},
{
desc: `iffunc group`,
code: BlockFunc(func(bg *Group) {
bg.IfFunc(func(ig *Group) {
ig.Id("a")
}).Block()
}),
expect: `{
if a {}
}`,
},
{
desc: `iffunc func`,
code: IfFunc(func(ig *Group) {
ig.Id("a")
}).Block(),
expect: `if a {}`,
},
{
desc: `iffunc statement`,
code: Null().IfFunc(func(ig *Group) {
ig.Id("a")
}).Block(),
expect: `if a {}`,
},
{
desc: `if group`,
code: BlockFunc(func(g *Group) { g.If(Id("a")).Block() }),
expect: `{
if a {}
}`,
},
{
desc: `map group`,
code: BlockFunc(func(g *Group) { g.Map(Int()).Int().Values(Dict{Lit(1): Lit(1)}) }),
expect: `{
map[int]int{1:1}
}`,
},
{
desc: `assert group`,
// Don't do this! ListFunc used to kludge Group.Assert usage without
// syntax error.
code: Id("a").ListFunc(func(g *Group) { g.Assert(Id("b")) }),
expect: `a.(b)`,
},
{
desc: `assert func`,
code: Id("a").Add(Assert(Id("b"))),
expect: `a.(b)`,
},
{
desc: `paramsfunc group`,
// Don't do this! ListFunc used to kludge Group.ParamsFunc usage without
// syntax error.
code: Id("a").ListFunc(func(lg *Group) { lg.ParamsFunc(func(cg *Group) { cg.Lit(1) }) }),
expect: `a(1)`,
},
{
desc: `paramsfunc func`,
code: Id("a").Add(ParamsFunc(func(g *Group) { g.Lit(1) })),
expect: `a(1)`,
},
{
desc: `paramsfunc statement`,
code: Id("a").ParamsFunc(func(g *Group) { g.Lit(1) }),
expect: `a(1)`,
},
{
desc: `params group`,
// Don't do this! ListFunc used to kludge Group.Params usage without
// syntax error.
code: Id("a").ListFunc(func(g *Group) { g.Params(Lit(1)) }),
expect: `a(1)`,
},
{
desc: `params func`,
code: Id("a").Add(Params(Lit(1))),
expect: `a(1)`,
},
{
desc: `callfunc group`,
// Don't do this! ListFunc used to kludge Group.CallFunc usage without
// syntax error.
code: Id("a").ListFunc(func(lg *Group) { lg.CallFunc(func(cg *Group) { cg.Lit(1) }) }),
expect: `a(1)`,
},
{
desc: `callfunc func`,
code: Id("a").Add(CallFunc(func(g *Group) { g.Lit(1) })),
expect: `a(1)`,
},
{
desc: `call group`,
// Don't do this! ListFunc used to kludge Group.Call usage without
// syntax error.
code: Id("a").ListFunc(func(g *Group) { g.Call(Lit(1)) }),
expect: `a(1)`,
},
{
desc: `call func`,
code: Id("a").Add(Call(Lit(1))),
expect: `a(1)`,
},
{
desc: `defsfunc statement`,
code: Const().DefsFunc(func(g *Group) { g.Id("a").Op("=").Lit(1) }),
expect: `const (
a = 1
)`,
},
{
desc: `defsfunc func`,
code: Const().Add(DefsFunc(func(g *Group) { g.Id("a").Op("=").Lit(1) })),
expect: `const (
a = 1
)`,
},
{
desc: `defsfunc group`,
// Don't do this! ListFunc used to kludge Group.DefsFunc usage without
// syntax error.
code: Const().ListFunc(func(lg *Group) { lg.DefsFunc(func(dg *Group) { dg.Id("a").Op("=").Lit(1) }) }),
expect: `const (
a = 1
)`,
},
{
desc: `defs group`,
// Don't do this! ListFunc used to kludge Group.Defs usage without
// syntax error.
code: Const().ListFunc(func(g *Group) { g.Defs(Id("a").Op("=").Lit(1)) }),
expect: `const (
a = 1
)`,
},
{
desc: `defs func`,
code: Const().Add(Defs(Id("a").Op("=").Lit(1))),
expect: `const (
a = 1
)`,
},
{
desc: `blockfunc group`,
code: BlockFunc(func(g *Group) { g.BlockFunc(func(g *Group) {}) }),
expect: `{{}}`,
},
{
desc: `block group`,
code: BlockFunc(func(g *Group) { g.Block() }),
expect: `{{}}`,
},
{
desc: `indexfunc group`,
code: BlockFunc(func(g *Group) { g.IndexFunc(func(g *Group) { g.Lit(1) }).Int().Values(Lit(1)) }),
expect: `{[1]int{1}}`,
},
{
desc: `indexfunc statement`,
code: Id("a").IndexFunc(func(g *Group) { g.Lit(1) }),
expect: `a[1]`,
},
{
desc: `indexfunc func`,
code: Id("a").Add(IndexFunc(func(g *Group) { g.Lit(1) })),
expect: `a[1]`,
},
{
desc: `index group`,
code: BlockFunc(func(g *Group) { g.Index(Lit(1)).Int().Values(Lit(1)) }),
expect: `{[1]int{1}}`,
},
{
desc: `index func`,
code: Id("a").Add(Index(Lit(1))),
expect: `a[1]`,
},
{
desc: `valuesfunc func`,
code: ValuesFunc(func(vg *Group) {
vg.Lit(1)
}),
expect: `{1}`,
},
{
desc: `valuesfunc group`,
code: BlockFunc(func(bg *Group) {
bg.ValuesFunc(func(vg *Group) {
vg.Lit(1)
})
}),
expect: `{
{1}
}`,
},
{
desc: `values group`,
code: BlockFunc(func(g *Group) {
g.Values(Lit(1))
}),
expect: `{
{1}
}`,
},
{
desc: `listfunc statement`,
code: Add(Null()).ListFunc(func(lg *Group) {
lg.Id("a")
lg.Id("b")
}).Op("=").Id("c"),
expect: `a, b = c`,
},
{
desc: `listfunc func`,
code: ListFunc(func(lg *Group) {
lg.Id("a")
lg.Id("b")
}).Op("=").Id("c"),
expect: `a, b = c`,
},
{
desc: `listfunc group`,
code: BlockFunc(func(bg *Group) {
bg.ListFunc(func(lg *Group) {
lg.Id("a")
lg.Id("b")
}).Op("=").Id("c")
}),
expect: `{
a, b = c
}`,
},
{
desc: `list group`,
code: BlockFunc(func(g *Group) { g.List(Id("a"), Id("b")).Op("=").Id("c") }),
expect: `{
a, b = c
}`,
},
{
desc: `parens func`,
code: Parens(Lit(1)),
expect: `(1)`,
},
{
desc: `parens group`,
code: BlockFunc(func(g *Group) { g.Parens(Lit(1)) }),
expect: `{
(1)
}`,
},
}
func TestGen(t *testing.T) {
caseTester(t, gencases)
}