Factored out Slice failure assertions
This commit is contained in:
parent
8943da5aee
commit
2759894ed8
@ -23,27 +23,30 @@ func hasPrefix(prefix []byte) func([]byte) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestSlice(t *testing.T) {
|
func TestSlice(t *testing.T) {
|
||||||
|
assertParseFails := func(t rapid.TB, input []byte, p gigaparsec.Parser[byte, []byte]) (parseErr gigaparsec.ParseError) {
|
||||||
|
t.Helper()
|
||||||
|
start := gigaparsec.MakeState(cursor.NewSlice(input))
|
||||||
|
consumed, result, err := p(start)
|
||||||
|
test.ErrorAs(t, err, &parseErr, test.Sprint("expected ParseError"))
|
||||||
|
test.False(t, consumed, test.Sprint("expected consumed to be false"))
|
||||||
|
test.SliceEmpty(t, result.Value, test.Sprint("expected result value to be empty"))
|
||||||
|
if t.Failed() {
|
||||||
|
t.FailNow()
|
||||||
|
}
|
||||||
|
return parseErr
|
||||||
|
}
|
||||||
|
|
||||||
t.Run("fails with wrong contents", rapid.MakeCheck(func(t *rapid.T) {
|
t.Run("fails with wrong contents", rapid.MakeCheck(func(t *rapid.T) {
|
||||||
s := rapid.SliceOfN(rapid.Byte(), 1, -1).Draw(t, "s")
|
s := rapid.SliceOfN(rapid.Byte(), 1, -1).Draw(t, "s")
|
||||||
input := rapid.SliceOfN(rapid.Byte(), len(s), -1).
|
input := rapid.SliceOfN(rapid.Byte(), len(s), -1).
|
||||||
Filter(notP(hasPrefix(s))).Draw(t, "input")
|
Filter(notP(hasPrefix(s))).Draw(t, "input")
|
||||||
start := gigaparsec.MakeState(cursor.NewSlice(input))
|
assertParseFails(t, input, gigaparsec.Slice(s))
|
||||||
|
|
||||||
consumed, result, err := gigaparsec.Slice(s)(start)
|
|
||||||
test.ErrorAs(t, err, &gigaparsec.ParseError{})
|
|
||||||
test.False(t, consumed, test.Sprint("expected consumed to be false"))
|
|
||||||
test.SliceEmpty(t, result.Value)
|
|
||||||
}))
|
}))
|
||||||
t.Run("fails at end of input", rapid.MakeCheck(func(t *rapid.T) {
|
t.Run("fails at end of input", rapid.MakeCheck(func(t *rapid.T) {
|
||||||
s := rapid.SliceOfN(rapid.Byte(), 1, -1).Draw(t, "s")
|
s := rapid.SliceOfN(rapid.Byte(), 1, -1).Draw(t, "s")
|
||||||
inputLen := rapid.IntRange(0, len(s)-1).Draw(t, "inputLen")
|
inputLen := rapid.IntRange(0, len(s)-1).Draw(t, "inputLen")
|
||||||
input := s[:inputLen]
|
input := s[:inputLen]
|
||||||
start := gigaparsec.MakeState(cursor.NewSlice(input))
|
assertParseFails(t, input, gigaparsec.Slice(s))
|
||||||
|
|
||||||
consumed, result, err := gigaparsec.Slice(s)(start)
|
|
||||||
test.ErrorAs(t, err, &gigaparsec.ParseError{})
|
|
||||||
test.False(t, consumed, test.Sprint("expected consumed to be false"))
|
|
||||||
test.SliceEmpty(t, result.Value)
|
|
||||||
}))
|
}))
|
||||||
t.Run("fails when read fails", Todo)
|
t.Run("fails when read fails", Todo)
|
||||||
t.Run("succeeds when contents match", rapid.MakeCheck(func(t *rapid.T) {
|
t.Run("succeeds when contents match", rapid.MakeCheck(func(t *rapid.T) {
|
||||||
|
Loading…
Reference in New Issue
Block a user