1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- describe("errors", () => {
- test("invalid pattern", () => {
- expect(() => {
- RegExp("[");
- }).toThrowWithMessage(
- SyntaxError,
- "RegExp compile error: Error during parsing of regular expression:"
- );
- });
- test("invalid flag", () => {
- expect(() => {
- RegExp("", "x");
- }).toThrowWithMessage(SyntaxError, "Invalid RegExp flag 'x'");
- });
- test("repeated flag", () => {
- expect(() => {
- RegExp("", "gg");
- }).toThrowWithMessage(SyntaxError, "Repeated RegExp flag 'g'");
- });
- });
- test("basic functionality", () => {
- expect(RegExp().toString()).toBe("/(?:)/");
- expect(RegExp(undefined).toString()).toBe("/(?:)/");
- expect(RegExp("foo").toString()).toBe("/foo/");
- expect(RegExp("foo", undefined).toString()).toBe("/foo/");
- expect(RegExp("foo", "g").toString()).toBe("/foo/g");
- expect(RegExp(undefined, "g").toString()).toBe("/(?:)/g");
- });
- test("regexp object as pattern parameter", () => {
- expect(RegExp(/foo/).toString()).toBe("/foo/");
- expect(RegExp(/foo/g).toString()).toBe("/foo/g");
- expect(RegExp(/foo/g, "").toString()).toBe("/foo/");
- expect(RegExp(/foo/g, "y").toString()).toBe("/foo/y");
- var regex_like_object_without_flags = {
- source: "foo",
- [Symbol.match]: function () {},
- };
- expect(RegExp(regex_like_object_without_flags).toString()).toBe("/foo/");
- expect(RegExp(regex_like_object_without_flags, "y").toString()).toBe("/foo/y");
- var regex_like_object_with_flags = {
- source: "foo",
- flags: "g",
- [Symbol.match]: function () {},
- };
- expect(RegExp(regex_like_object_with_flags).toString()).toBe("/foo/g");
- expect(RegExp(regex_like_object_with_flags, "").toString()).toBe("/foo/");
- expect(RegExp(regex_like_object_with_flags, "y").toString()).toBe("/foo/y");
- });
- test("regexp literals are re-useable", () => {
- for (var i = 0; i < 2; ++i) {
- const re = /test/;
- expect(re.test("te")).toBeFalse();
- expect(re.test("test")).toBeTrue();
- }
- });
|