Added Try tests

This commit is contained in:
2024-10-17 08:57:45 -06:00
parent abef123f8a
commit bc2f7aa911
2 changed files with 51 additions and 27 deletions

View File

@ -4,6 +4,7 @@
package test
import (
"errors"
"io"
"git.codemonkeysoftware.net/b/gigaparsec"
@ -34,3 +35,22 @@ func SliceOfN[T any](value T, n int) []T {
}
return s
}
type ForcedResult struct{ Succeed, Consume bool }
func ForceResult(state gigaparsec.State[ForcedResult]) (gigaparsec.Result[ForcedResult, struct{}], error) {
buf := make([]ForcedResult, 1)
_, next, err := state.Read(buf)
if errors.Is(err, io.EOF) {
return gigaparsec.Fail[ForcedResult, struct{}](false, gigaparsec.MessageEnd(state.Pos())), nil
}
if err != nil {
return gigaparsec.Result[ForcedResult, struct{}]{}, err
}
tok := buf[0]
if tok.Succeed {
return gigaparsec.Succeed(tok.Consume, struct{}{}, next, gigaparsec.MessageOK(state.Pos())), nil
} else {
return gigaparsec.Fail[ForcedResult, struct{}](tok.Consume, gigaparsec.MakeMessage(state.Pos(), "Succeed=false", "Succeed=true")), nil
}
}