RegExp.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. describe("errors", () => {
  2. test("invalid pattern", () => {
  3. expect(() => {
  4. RegExp("[");
  5. }).toThrowWithMessage(
  6. SyntaxError,
  7. "RegExp compile error: Error during parsing of regular expression:"
  8. );
  9. });
  10. test("invalid flag", () => {
  11. expect(() => {
  12. RegExp("", "x");
  13. }).toThrowWithMessage(SyntaxError, "Invalid RegExp flag 'x'");
  14. });
  15. test("repeated flag", () => {
  16. expect(() => {
  17. RegExp("", "gg");
  18. }).toThrowWithMessage(SyntaxError, "Repeated RegExp flag 'g'");
  19. });
  20. });
  21. test("basic functionality", () => {
  22. expect(RegExp().toString()).toBe("/(?:)/");
  23. expect(RegExp(undefined).toString()).toBe("/(?:)/");
  24. expect(RegExp("foo").toString()).toBe("/foo/");
  25. expect(RegExp("foo", undefined).toString()).toBe("/foo/");
  26. expect(RegExp("foo", "g").toString()).toBe("/foo/g");
  27. expect(RegExp(undefined, "g").toString()).toBe("/(?:)/g");
  28. });
  29. test("regexp object as pattern parameter", () => {
  30. expect(RegExp(/foo/).toString()).toBe("/foo/");
  31. expect(RegExp(/foo/g).toString()).toBe("/foo/g");
  32. expect(RegExp(/foo/g, "").toString()).toBe("/foo/");
  33. expect(RegExp(/foo/g, "y").toString()).toBe("/foo/y");
  34. var regex_like_object_without_flags = {
  35. source: "foo",
  36. [Symbol.match]: function () {},
  37. };
  38. expect(RegExp(regex_like_object_without_flags).toString()).toBe("/foo/");
  39. expect(RegExp(regex_like_object_without_flags, "y").toString()).toBe("/foo/y");
  40. var regex_like_object_with_flags = {
  41. source: "foo",
  42. flags: "g",
  43. [Symbol.match]: function () {},
  44. };
  45. expect(RegExp(regex_like_object_with_flags).toString()).toBe("/foo/g");
  46. expect(RegExp(regex_like_object_with_flags, "").toString()).toBe("/foo/");
  47. expect(RegExp(regex_like_object_with_flags, "y").toString()).toBe("/foo/y");
  48. });
  49. test("regexp literals are re-useable", () => {
  50. for (var i = 0; i < 2; ++i) {
  51. const re = /test/;
  52. expect(re.test("te")).toBeFalse();
  53. expect(re.test("test")).toBeTrue();
  54. }
  55. });