diff options
author | Ben Burwell <ben@benburwell.com> | 2019-09-20 17:05:13 -0400 |
---|---|---|
committer | Ben Burwell <ben@benburwell.com> | 2019-09-20 17:05:13 -0400 |
commit | 0c0fce30d964b9de5d44ea2841dd44c81f75c5dc (patch) | |
tree | ca06256204d77edc8458957ac00b77da88bceddc /custom_test.go | |
parent | e1f8ea2a889494859a61a9259110e40c70002d55 (diff) |
fuzz -> custom
Diffstat (limited to 'custom_test.go')
-rw-r--r-- | custom_test.go | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/custom_test.go b/custom_test.go new file mode 100644 index 0000000..a8bdfe6 --- /dev/null +++ b/custom_test.go @@ -0,0 +1,68 @@ +package caesar + +import ( + "bytes" + "flag" + "io" + "io/ioutil" + "os" + "testing" +) + +var ( + runCustom bool + customCases string +) + +func TestMain(m *testing.M) { + flag.BoolVar(&runCustom, "custom", false, "run custom tests") + flag.StringVar(&customCases, "custom.cases", "", "input file for custom test cases") + flag.Parse() + os.Exit(m.Run()) +} + +func TestCustom(t *testing.T) { + if !runCustom { + t.Skip("skipping custom testing") + } + f, err := os.Open(customCases) + if err != nil { + t.Fatalf("could not open custom test input: %v", err) + } + defer f.Close() + data, err := ioutil.ReadAll(f) + if err != nil { + t.Fatalf("could not read custom test input: %v", err) + } + buf := bytes.NewBuffer(data) + for { + // read input + inp, err := buf.ReadBytes('\t') + if err == io.EOF { + return + } else if err != nil { + t.Fatalf("read error: %v", err) + } + + // read expected output + exp, err := buf.ReadBytes('\n') + if err == io.EOF { + t.Fatalf("found input with no matching output") + } else if err != nil { + t.Fatalf("read error: %v", err) + } + + if len(inp) < 2 || len(exp) < 2 { + t.Fatalf("malformed input") + } + + result := Encode(string(inp[:len(inp)-2])) + if result != string(exp[:len(exp)-2]) { + t.Logf("input: %s", inp) + t.Logf("output: %s", result) + t.Logf("expected: %s", exp) + t.Fail() + } + } + Encode(string(data)) +} |