package beeParser import ( "os" "testing" "github.com/stretchr/testify/assert" ) var BeeAnnotator *Annotator const ( Annotation1 = ` @Name Field1 @Type string @Path https://github.com/beego/bee https://github.com/beego ` Annotation2 = ` @Number 2 @Projects https://github.com/beego/bee https://github.com/beego ` ) func TestMain(m *testing.M) { BeeAnnotator = &Annotator{} retCode := m.Run() //run test os.Exit(retCode) } func TestAnnotate(t *testing.T) { expect1 := []map[string]interface{}{ {"Name": []string{"Field1"}}, {"Type": []string{"string"}}, {"Path": []string{"https://github.com/beego/bee", "https://github.com/beego"}}, } expect2 := []map[string]interface{}{ {"Number": []string{"2"}}, {"Projects": []string{"https://github.com/beego/bee", "", "https://github.com/beego"}}, } actual := BeeAnnotator.Annotate(Annotation1) actual2 := BeeAnnotator.Annotate(Annotation2) assert.Equal(t, expect1, actual) assert.Equal(t, expect2, actual2) } func TestAnnotateToJson(t *testing.T) { expect1 := `[ { "Name": [ "Field1" ] }, { "Type": [ "string" ] }, { "Path": [ "https://github.com/beego/bee", "https://github.com/beego" ] } ]` actual1, _ := BeeAnnotator.AnnotateToJson(Annotation1) actual2, _ := BeeAnnotator.AnnotateToJson("") assert.Equal(t, expect1, actual1) assert.Equal(t, "", actual2) } func TestHandleWhitespaceValues(t *testing.T) { src := []string{ " beego", "", " bee ", " bee beego ", } expect := []string{ "beego", "", "bee", "bee beego", } actual := handleWhitespaceValues(src) assert.Equal(t, expect, actual) } //benchmark test func BenchmarkAnnotate(b *testing.B) { for i := 0; i < b.N; i++ { BeeAnnotator.Annotate(Annotation1) } } func BenchmarkAnnotateToJson(b *testing.B) { for i := 0; i < b.N; i++ { BeeAnnotator.AnnotateToJson(Annotation1) } }