1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
package codegen
import (
"github.com/stretchr/testify/assert"
"github.com/viant/toolbox"
"log"
"path"
"testing"
)
func TestGenerator_Generate(t *testing.T) {
parent := path.Join(toolbox.CallerDirectory(3), "test")
var useCases = []struct {
description string
options *Options
hasError bool
}{
{
description: "basic struct code generation",
options: &Options{
Source: path.Join(parent, "basic_struct"),
Types: []string{"Message"},
Dest: path.Join(parent, "basic_struct", "encoding.go"),
},
},
{
description: "struct with pool code generation",
options: &Options{
Source: path.Join(parent, "pooled_struct"),
Types: []string{"Message"},
Dest: path.Join(parent, "pooled_struct", "encoding.go"),
PoolObjects: true,
},
},
{
description: "struct with embedded type code generation",
options: &Options{
Source: path.Join(parent, "embedded_struct"),
Types: []string{"Message"},
Dest: path.Join(parent, "embedded_struct", "encoding.go"),
PoolObjects: false,
},
},
{
description: "struct with json annotation and time/foarmat|layouat generation",
options: &Options{
Source: path.Join(parent, "annotated_struct"),
Types: []string{"Message"},
Dest: path.Join(parent, "annotated_struct", "encoding.go"),
PoolObjects: false,
TagName: "json",
},
},
}
for _, useCase := range useCases {
gen := NewGenerator(useCase.options)
err := gen.Generate()
if useCase.hasError {
assert.NotNil(t, err, useCase.description)
continue
}
if !assert.Nil(t, err, useCase.description) {
log.Fatal(err)
continue
}
}
}
|