Combine Cursor with State
This commit is contained in:
@ -7,7 +7,6 @@ import (
|
||||
"testing"
|
||||
|
||||
"git.codemonkeysoftware.net/b/gigaparsec"
|
||||
"git.codemonkeysoftware.net/b/gigaparsec/cursor"
|
||||
ptest "git.codemonkeysoftware.net/b/gigaparsec/test"
|
||||
"git.codemonkeysoftware.net/b/gigaparsec/test/generator"
|
||||
"github.com/shoenig/test"
|
||||
@ -30,7 +29,7 @@ func hasPrefix(prefix []byte) func([]byte) bool {
|
||||
func TestSlice(t *testing.T) {
|
||||
assertParseFails := func(t rapid.TB, input []byte, p gigaparsec.Parser[byte, []byte]) {
|
||||
t.Helper()
|
||||
start := gigaparsec.MakeState(cursor.NewReaderAt(bytes.NewReader(input)))
|
||||
start := gigaparsec.MakeState(bytes.NewReader(input))
|
||||
result, err := p(start)
|
||||
must.NoError(t, err)
|
||||
success, _, _ := result.Status()
|
||||
@ -55,9 +54,9 @@ func TestSlice(t *testing.T) {
|
||||
}))
|
||||
t.Run("fails when read fails", rapid.MakeCheck(func(t *rapid.T) {
|
||||
expectedErr := generator.Error().Draw(t, "expectedErr")
|
||||
c := ptest.ErrCursor[byte](expectedErr)
|
||||
r := ptest.ErrReaderAt(expectedErr)
|
||||
s := rapid.SliceOfN(rapid.Byte(), 0, 100).Draw(t, "s")
|
||||
result, err := gigaparsec.MatchSlice(s)(gigaparsec.MakeState(c))
|
||||
result, err := gigaparsec.MatchSlice(s)(gigaparsec.MakeState(r))
|
||||
test.ErrorIs(t, err, expectedErr)
|
||||
success, _, _ := result.Status()
|
||||
test.False(t, success)
|
||||
@ -66,7 +65,7 @@ func TestSlice(t *testing.T) {
|
||||
input := rapid.SliceOfN(rapid.Byte(), 1, -1).Draw(t, "input")
|
||||
sLen := rapid.IntRange(0, len(input)).Draw(t, "sLen")
|
||||
s := input[:sLen]
|
||||
start := gigaparsec.MakeState(cursor.NewReaderAt(bytes.NewReader(input)))
|
||||
start := gigaparsec.MakeState(bytes.NewReader(input))
|
||||
|
||||
result, err := gigaparsec.MatchSlice(s)(start)
|
||||
must.NoError(t, err)
|
||||
@ -108,7 +107,7 @@ func TestBind(t *testing.T) {
|
||||
p := makeParser(pConsume)
|
||||
q := func(struct{}) gigaparsec.Parser[byte, struct{}] { return makeParser(qConsume) }
|
||||
|
||||
result, err := gigaparsec.Bind(p, q)(gigaparsec.MakeState(cursor.NewReaderAt(bytes.NewReader(nil))))
|
||||
result, err := gigaparsec.Bind(p, q)(gigaparsec.MakeState(bytes.NewReader(nil)))
|
||||
must.NoError(t, err)
|
||||
must.EqOp(t, pConsume || qConsume, result.Consumed())
|
||||
}))
|
||||
|
Reference in New Issue
Block a user