44 lines
1.0 KiB
Go
44 lines
1.0 KiB
Go
package db0302
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestParseName(t *testing.T) {
|
|
p := NewParser(" a b0 _0_ 123 ")
|
|
name, ok := p.tryName()
|
|
assert.True(t, ok && name == "a")
|
|
name, ok = p.tryName()
|
|
assert.True(t, ok && name == "b0")
|
|
name, ok = p.tryName()
|
|
assert.True(t, ok && name == "_0_")
|
|
_, ok = p.tryName()
|
|
assert.False(t, ok)
|
|
}
|
|
|
|
func TestParseKeyword(t *testing.T) {
|
|
p := NewParser(" select HELLO ")
|
|
assert.False(t, p.tryKeyword("sel"))
|
|
assert.True(t, p.tryKeyword("SELECT"))
|
|
assert.True(t, p.tryKeyword("hello") && p.isEnd())
|
|
}
|
|
|
|
func testParseValue(t *testing.T, s string, ref Cell) {
|
|
p := NewParser(s)
|
|
out := Cell{}
|
|
err := p.parseValue(&out)
|
|
assert.Nil(t, err)
|
|
assert.True(t, p.isEnd())
|
|
assert.Equal(t, ref, out)
|
|
}
|
|
|
|
func TestParseValue(t *testing.T) {
|
|
testParseValue(t, " -123 ", Cell{Type: TypeI64, I64: -123})
|
|
testParseValue(t, ` 'abc\'\"d' `, Cell{Type: TypeStr, Str: []byte("abc'\"d")})
|
|
testParseValue(t, ` "abc\'\"d" `, Cell{Type: TypeStr, Str: []byte("abc'\"d")})
|
|
}
|
|
|
|
// QzBQWVJJOUhU https://trialofcode.org/
|