github.com/benma/gogen@v0.0.0-20160826115606-cf49914b915a/exportdefault/generator_test.go (about) 1 package exportdefault 2 3 import ( 4 "bytes" 5 "fmt" 6 "io/ioutil" 7 "regexp" 8 "testing" 9 ) 10 11 func TestGenerateCode(t *testing.T) { 12 tests := []struct { 13 name string 14 include *regexp.Regexp 15 exclude *regexp.Regexp 16 }{ 17 { 18 name: "simple_example", 19 }, 20 { 21 name: "filtered", 22 include: regexp.MustCompile("Wrapped.*"), 23 }, 24 { 25 name: "excluded", 26 exclude: regexp.MustCompile("Variadric"), 27 }, 28 { 29 name: "filter_and_exclude", 30 include: regexp.MustCompile("Wrapped"), 31 exclude: regexp.MustCompile("Variadric"), 32 }, 33 } 34 pkg := "./_testpkg" 35 variable := "ExportedDefaultExportedInterface" 36 for _, test := range tests { 37 g, err := New(pkg, variable) 38 if err != nil { 39 t.Fatalf("%s: failed initializing generator %s", test.name, err.Error()) 40 } 41 g.Include = test.include 42 g.Exclude = test.exclude 43 var buf bytes.Buffer 44 g.Write(&buf) 45 code, err := ioutil.ReadFile(fmt.Sprintf("testdata/%s.go", test.name)) 46 if err != nil { 47 t.Fatalf("%s: %s", test.name, err.Error()) 48 } 49 exp := string(code) 50 if buf.String() != exp { 51 t.Fatalf("%s\nexpected: %s\nreturned: %s", test.name, exp, buf.String()) 52 } 53 } 54 }