blob: caff1dee49e85acee88781c346252496c51919c3 [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package query_exec
import (
"errors"
"fmt"
"testing"
"v.io/syncbase/v23/syncbase/nosql/query_db"
"v.io/syncbase/v23/syncbase/nosql/syncql"
"v.io/v23"
"v.io/v23/context"
_ "v.io/x/ref/runtime/factories/generic"
"v.io/x/ref/test"
)
type mockDB struct {
ctx *context.T
}
func (db *mockDB) GetContext() *context.T {
return db.ctx
}
func init() {
var shutdown v23.Shutdown
db.ctx, shutdown = test.V23Init()
defer shutdown()
}
func (db *mockDB) GetTable(table string) (query_db.Table, error) {
return nil, errors.New(fmt.Sprintf("No such table: %s", table))
}
var db mockDB
type splitErrorTest struct {
err error
offset int64
errStr string
}
func TestSplitError(t *testing.T) {
basic := []splitErrorTest{
{
syncql.NewErrInvalidSelectField(db.GetContext(), 7),
7,
"Select field must be 'k' or 'v[{.<ident>}...]'.",
},
{
syncql.NewErrTableCantAccess(db.GetContext(), 14, "Bob", errors.New("No such table: Bob")),
14,
"Table Bob does not exist (or cannot be accessed): No such table: Bob.",
},
}
for _, test := range basic {
offset, errStr := SplitError(test.err)
if offset != test.offset || errStr != test.errStr {
t.Errorf("err: %v; got %d:%s, want %d:%s", test.err, offset, errStr, test.offset, test.errStr)
}
}
}