53 lines
1.0 KiB
Go
53 lines
1.0 KiB
Go
package terminal
|
|
|
|
import (
|
|
"errors"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestRun(t *testing.T) {
|
|
type Expected struct {
|
|
out string
|
|
err error
|
|
}
|
|
|
|
type Case struct {
|
|
query string
|
|
expected Expected
|
|
}
|
|
|
|
// We already test core functionality in the fsql package, so we can stick
|
|
// with _simple_ queries for the following cases.
|
|
cases := []Case{
|
|
{
|
|
query: "select name, hash from ../testdata where name = baz",
|
|
expected: Expected{
|
|
out: "baz\tda39a3e\n",
|
|
err: nil,
|
|
},
|
|
},
|
|
{
|
|
query: "select all from",
|
|
expected: Expected{
|
|
out: "",
|
|
err: errors.New("unexpected EOF"),
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, c := range cases {
|
|
actual, err := run(c.query)
|
|
if c.expected.err == nil {
|
|
if err != nil {
|
|
t.Fatalf("\nExpected no error\n Got %v", err)
|
|
}
|
|
if !reflect.DeepEqual(c.expected.out, actual) {
|
|
t.Fatalf("\nExpected %v\n Got %v", c.expected.out, actual)
|
|
}
|
|
} else if !reflect.DeepEqual(c.expected.err, err) {
|
|
t.Fatalf("\nExpected %v\n Got %v", c.expected.err, err)
|
|
}
|
|
}
|
|
}
|