// SPDX-License-Identifier: Unlicense package bytes_test import ( "testing" "git.codemonkeysoftware.net/b/gigaparsec" "git.codemonkeysoftware.net/b/gigaparsec/bytes" "git.codemonkeysoftware.net/b/gigaparsec/cursor" "github.com/shoenig/test" "github.com/shoenig/test/must" "pgregory.net/rapid" ) func Todo(t *testing.T) { t.Fatalf("TODO") } func TestRegexp(t *testing.T) { t.Run("only searches the beginning of input", Todo) t.Run("position is correct after match", Todo) t.Run("fails on unexpected error", Todo) t.Run("returns a useful Got value", rapid.MakeCheck(func(t *rapid.T) { })) t.Run("basically works", func(t *testing.T) { result, err := bytes.Regexp("a")(gigaparsec.MakeState(cursor.NewSlice([]byte("a")))) must.NoError(t, err) failed, _, msg := result.Failed() must.False(t, failed, must.Sprint(msg)) succeeded, consumed, value, _, _ := result.Succeeded() test.True(t, succeeded) test.True(t, consumed) test.EqOp(t, "a", value) }) } func TestRuneReader(t *testing.T) { var s = []byte("abcdefghijklmnopqrstuvwxyz") rr := bytes.NewRuneReader(cursor.NewSlice(s)) for i, b := range s { r, n, err := rr.ReadRune() test.NoError(t, err) test.EqOp(t, 1, n) test.EqOp(t, r, rune(b)) if t.Failed() { t.Fatalf("failed at %d", i) } } }