import ParserError from "../../../parser/ParserError";
import { regex } from "../../../parser/Parsers";
import { doc, loc, val } from "../../utils";
describe("base regex parser", () => {
const p0 = regex(/^a+b/);
test("has a descriptive name", () => {
expect(p0.name).toEqual("/^a+b/");
});
test("parses matching input", () => {
expect(
p0.parse(doc("aaab"), loc(0, 0)))
.toEqual(
val("aaab", loc(0, 4)));
});
test("returns an error in case of invalid input", () => {
const attempt = p0.parse(doc("baaa"), loc(0, 0));
expect(attempt).toBeInstanceOf(ParserError);
});
test("does not advance input on error", () => {
const attempt = p0.parse(doc("baaa"), loc(0, 0));
expect(attempt).toHaveProperty("location", loc(0, 0));
});
});