mirror of
https://github.com/ncruces/go-sqlite3.git
synced 2026-01-12 14:09:13 +00:00
109 lines
2.6 KiB
Go
109 lines
2.6 KiB
Go
package csv
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/ncruces/go-sqlite3/util/vtabutil"
|
|
)
|
|
|
|
func Test_uintArg(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tests := []struct {
|
|
arg string
|
|
key string
|
|
val int
|
|
err bool
|
|
}{
|
|
{"columns 1", "columns 1", 0, true},
|
|
{"columns = 1", "columns", 1, false},
|
|
{"columns\t= 2", "columns", 2, false},
|
|
{" columns = 3", "columns", 3, false},
|
|
{" columns = -1", "columns", 0, true},
|
|
{" columns = 32768", "columns", 0, true},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.arg, func(t *testing.T) {
|
|
key, val := vtabutil.NamedArg(tt.arg)
|
|
if key != tt.key {
|
|
t.Errorf("NamedArg() %v, want err %v", key, tt.key)
|
|
}
|
|
got, err := uintArg(key, val)
|
|
if (err != nil) != tt.err {
|
|
t.Fatalf("uintArg() error = %v, want err %v", err, tt.err)
|
|
}
|
|
if got != tt.val {
|
|
t.Errorf("uintArg() = %v, want %v", got, tt.val)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func Test_boolArg(t *testing.T) {
|
|
tests := []struct {
|
|
arg string
|
|
key string
|
|
val bool
|
|
err bool
|
|
}{
|
|
{"header", "header", true, false},
|
|
{"header\t= 1", "header", true, false},
|
|
{" header = 0", "header", false, false},
|
|
{" header = TrUe", "header", true, false},
|
|
{" header = FaLsE", "header", false, false},
|
|
{" header = Yes", "header", true, false},
|
|
{" header = nO", "header", false, false},
|
|
{" header = On", "header", true, false},
|
|
{" header = Off", "header", false, false},
|
|
{" header = T", "header", false, true},
|
|
{" header = f", "header", false, true},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.arg, func(t *testing.T) {
|
|
key, val := vtabutil.NamedArg(tt.arg)
|
|
if key != tt.key {
|
|
t.Errorf("NamedArg() %v, want err %v", key, tt.key)
|
|
}
|
|
got, err := boolArg(key, val)
|
|
if (err != nil) != tt.err {
|
|
t.Fatalf("boolArg() error = %v, want err %v", err, tt.err)
|
|
}
|
|
if got != tt.val {
|
|
t.Errorf("boolArg() = %v, want %v", got, tt.val)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func Test_runeArg(t *testing.T) {
|
|
tests := []struct {
|
|
arg string
|
|
key string
|
|
val rune
|
|
err bool
|
|
}{
|
|
{"comma", "comma", 0, true},
|
|
{"comma\t= ,", "comma", ',', false},
|
|
{" comma = ;", "comma", ';', false},
|
|
{" comma = ;;", "comma", 0, true},
|
|
{` comma = '\t`, "comma", 0, true},
|
|
{` comma = '\t'`, "comma", '\t', false},
|
|
{` comma = "\t"`, "comma", '\t', false},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.arg, func(t *testing.T) {
|
|
key, val := vtabutil.NamedArg(tt.arg)
|
|
if key != tt.key {
|
|
t.Errorf("NamedArg() %v, want err %v", key, tt.key)
|
|
}
|
|
got, err := runeArg(key, val)
|
|
if (err != nil) != tt.err {
|
|
t.Fatalf("runeArg() error = %v, want err %v", err, tt.err)
|
|
}
|
|
if got != tt.val {
|
|
t.Errorf("runeArg() = %v, want %v", got, tt.val)
|
|
}
|
|
})
|
|
}
|
|
}
|