michael@0: /* michael@0: * Any copyright is dedicated to the Public Domain. michael@0: * http://creativecommons.org/licenses/publicdomain/ michael@0: * Contributor: haytjes michael@0: */ michael@0: michael@0: /* Check the undefined pattern is equivalent to empty string. */ michael@0: michael@0: assertEq(RegExp(undefined).source, ''); michael@0: assertEq(RegExp(undefined).global, false); michael@0: assertEq("test".replace(RegExp(undefined), "*"), '*test'); michael@0: assertEq(new RegExp(undefined).source, ''); michael@0: assertEq(new RegExp(undefined).global, false); michael@0: assertEq('test'.replace(new RegExp(undefined), "*"), '*test'); michael@0: michael@0: /* Global flags. */ michael@0: michael@0: assertEq(new RegExp(undefined, "g").global, true); michael@0: assertEq("test".replace(new RegExp(undefined, "g"), "*"), "*t*e*s*t*"); michael@0: assertEq(RegExp(undefined, "g").global, true); michael@0: assertEq("test".replace(RegExp(undefined, "g"), "*"), "*t*e*s*t*"); michael@0: michael@0: /* Undefined flags. */ michael@0: michael@0: var re = new RegExp(undefined, undefined); michael@0: assertEq(re.multiline, false); michael@0: assertEq(re.global, false); michael@0: assertEq(re.ignoreCase, false); michael@0: michael@0: var re = new RegExp("test", undefined); michael@0: assertEq(re.multiline, false); michael@0: assertEq(re.global, false); michael@0: assertEq(re.ignoreCase, false); michael@0: michael@0: /* Flags argument that requires toString. */ michael@0: michael@0: function Flags() {}; michael@0: michael@0: Flags.prototype.toString = function dogToString() { return ""; } michael@0: michael@0: var re = new RegExp(undefined, new Flags()); michael@0: assertEq(re.multiline, false); michael@0: assertEq(re.global, false); michael@0: assertEq(re.ignoreCase, false); michael@0: michael@0: Flags.prototype.toString = function dogToString() { return "gim"; } michael@0: michael@0: var re = new RegExp(undefined, new Flags()); michael@0: assertEq(re.multiline, true); michael@0: assertEq(re.global, true); michael@0: assertEq(re.ignoreCase, true);