@cakoose/re2
Version:
Bindings for RE2: fast, safe alternative to backtracking regular expression engines.
95 lines (67 loc) • 2.49 kB
JavaScript
;
var unit = require("heya-unit");
var RE2 = require("../re2");
// tests
unit.add(module, [
// These tests are copied from MDN:
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match
function test_match(t) {
"use strict";
var str = "For more information, see Chapter 3.4.5.1";
var re = new RE2(/(chapter \d+(\.\d)*)/i);
var result = re.match(str);
eval(t.TEST("result.input === str"));
eval(t.TEST("result.index === 26"));
eval(t.TEST("result.length === 3"));
eval(t.TEST("result[0] === 'Chapter 3.4.5.1'"));
eval(t.TEST("result[1] === 'Chapter 3.4.5.1'"));
eval(t.TEST("result[2] === '.1'"));
},
function test_matchGlobal(t) {
"use strict";
var re = new RE2(/[A-E]/gi);
var result = re.match("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
eval(t.TEST("t.unify(result, ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e'])"));
},
function test_matchFail(t) {
"use strict";
var re = new RE2("(a+)?(b+)?");
var result = re.match("aaabb");
eval(t.TEST("result[1] === 'aaa'"));
eval(t.TEST("result[2] === 'bb'"));
result = re.match("aaacbb");
eval(t.TEST("result[1] === 'aaa'"));
eval(t.TEST("result[2] === undefined"));
},
// Unicode tests
function test_matchUnicode(t) {
"use strict";
var str = "Это ГЛАВА 3.4.5.1";
var re = new RE2(/(глава \d+(\.\d)*)/i);
var result = re.match(str);
eval(t.TEST("result.input === str"));
eval(t.TEST("result.index === 4"));
eval(t.TEST("result.length === 3"));
eval(t.TEST("result[0] === 'ГЛАВА 3.4.5.1'"));
eval(t.TEST("result[1] === 'ГЛАВА 3.4.5.1'"));
eval(t.TEST("result[2] === '.1'"));
},
// Buffer tests
function test_matchBuffer(t) {
"use strict";
var buf = new Buffer("Это ГЛАВА 3.4.5.1");
var re = new RE2(/(глава \d+(\.\d)*)/i);
var result = re.match(buf);
eval(t.TEST("result.input instanceof Buffer"));
eval(t.TEST("result.length === 3"));
eval(t.TEST("result[0] instanceof Buffer"));
eval(t.TEST("result[1] instanceof Buffer"));
eval(t.TEST("result[2] instanceof Buffer"));
eval(t.TEST("result.input === buf"));
eval(t.TEST("result.index === 7"));
eval(t.TEST("result.input.toString('utf8', result.index) === 'ГЛАВА 3.4.5.1'"));
eval(t.TEST("result[0].toString() === 'ГЛАВА 3.4.5.1'"));
eval(t.TEST("result[1].toString() === 'ГЛАВА 3.4.5.1'"));
eval(t.TEST("result[2].toString() === '.1'"));
}
]);