pebble/third_party/jerryscript/tests/jerry/regexp-assertions.js
2025-01-27 11:38:16 -08:00

176 lines
4.4 KiB
JavaScript

// Copyright 2015 Samsung Electronics Co., Ltd.
// Copyright 2015 University of Szeged.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
var t;
t = new RegExp ("^alma$").exec("alma");
assert (t == "alma");
t = new RegExp ("^alma$").exec("almaa");
assert (t == undefined);
t = new RegExp ("^alma$").exec("aalma");
assert (t == undefined);
t = new RegExp ("^alma").exec("alma");
assert (t == "alma");
t = new RegExp ("^alma").exec("almaa");
assert (t == "alma");
t = new RegExp ("^alma").exec("aalma");
assert (t == undefined);
t = new RegExp ("alma$").exec("alma");
assert (t == "alma");
t = new RegExp ("alma$").exec("almaa");
assert (t == undefined);
t = new RegExp ("alma$").exec("aalma");
assert (t == "alma");
t = new RegExp ("\\bis\\b").exec("This island is beautiful");
assert (t == "is");
t = new RegExp ("\\Bis\\B").exec("This island is beautiful");
assert (t == undefined);
t = new RegExp ("\\Bis").exec("This island is beautiful");
assert (t == "is");
t = new RegExp ("is\\B").exec("This island is beautiful");
assert (t == "is");
t = new RegExp ("\\Bis\\b").exec("This island is beautiful");
assert (t == "is");
t = new RegExp ("\\bis\\B").exec("This island is beautiful");
assert (t == "is");
t = new RegExp ("al(?=(ma))").exec("al");
assert (t == undefined);
t = new RegExp ("al(?!(ma))").exec("ala");
assert (t[0] == "al");
assert (t[1] == undefined);
t = new RegExp ("al(?=(ma))").exec("alma");
assert (t[0] == "al");
assert (t[1] == "ma");
t = new RegExp ("al(?=(ma))").exec("almama");
assert (t[0] == "al");
assert (t[1] == "ma");
t = new RegExp ("(al)(?=(ma))ma").exec("al");
assert (t == undefined);
t = new RegExp ("(al)(?=(ma)ma)").exec("al");
assert (t == undefined);
t = new RegExp ("al(?=(ma))*ma").exec("alma");
assert (t[0] == "alma");
assert (t[1] == undefined);
t = new RegExp ("al(?!(ma))*ma").exec("alma");
assert (t[0] == "alma");
assert (t[1] == undefined);
t = new RegExp ("al(?=(ma))ma").exec("alma");
assert (t[0] == "alma");
assert (t[1] == "ma");
t = new RegExp ("al(?!(ma))ma").exec("alma");
assert (t == undefined);
t = new RegExp ("(al)(?=(ma))ma").exec("almama");
t = new RegExp ("(al)(?=(ma)ma)").exec("almama");
t = new RegExp ("al(?=(ma))ma").exec("almama");
assert (t[0] == "alma");
assert (t[1] == "ma");
t = new RegExp ("al(?=(ma)ma)").exec("almama");
assert (t[0] == "al");
assert (t[1] == "ma");
t = new RegExp ("al(?!(ma))ma").exec("almama");
assert (t == undefined);
t = new RegExp ("a(?=(a)(a))aab|aaac").exec("aaac");
t = new RegExp ("a(?=(a)(a))aab|aaac").exec("aaab");
t = new RegExp ("(?!(a)b)|ab").exec("ab");
assert (t[0] == "ab");
assert (t[1] == undefined);
t = new RegExp ("(?=(a)b)|ab").exec("ab");
assert (t[0] == "");
assert (t[1] == "a");
t = new RegExp ("(?=a|.)Dt").exec("Dt");
assert (t == "Dt");
t = new RegExp ("(?=.|a)Dt").exec("Dt");
assert (t == "Dt");
t = new RegExp ("(?=a|b)Dt").exec("Dt");
assert (t == undefined);
t = new RegExp ("(?=.|P)").exec("a");
assert (t == "");
t = new RegExp ("(?=.)").exec("a");
assert (t == "");
t = new RegExp ("(?!a|.)Dt").exec("Dt");
assert (t == undefined);
t = new RegExp ("(?!.|a)Dt").exec("Dt");
assert (t == undefined);
t = new RegExp ("(?!a|b)Dt").exec("Dt");
assert (t == "Dt");
t = new RegExp ("(?!.|P)").exec("a");
assert (t == "");
t = new RegExp ("(?!.)").exec("a");
assert (t == "");
t = new RegExp ("abc","g");
t.lastIndex = {toString: function () { return "4"}};
var result = t.exec("abc abc");
assert(result[0] === "abc");
assert(result.index === 6);
t = new RegExp ("abc","g");
t.lastIndex = {valueOf: function () { return "4"}};
var result = t.exec("abc abc");
assert(result[0] === "abc");
assert(result.index === 6);
t = new RegExp ("abc","g");
t.lastIndex = "2"
var result = t.exec("abc abc");
assert(result[0] === "abc");
assert(result.index === 6);
t = new RegExp ("abc","g");
t.lastIndex = -12;
result = t.exec("abc abc");
assert(!result);
assert(t.lastIndex === 0);