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  }