test(find): Add tests for regex matching.

This commit is contained in:
Andy Christianson 2015-12-23 22:16:39 -06:00
parent c2d05cd03d
commit 1fdcad6f7f
2 changed files with 73 additions and 0 deletions

View File

@ -2,3 +2,4 @@
/*global require*/
require('./cli');
require('./ui/FindForm')

72
spec/ui/FindForm.js Normal file
View File

@ -0,0 +1,72 @@
#!/usr/bin/env node
/*global require, global*/
var test = require('tape');
var FindForm = require('../../lib/ui/FindForm');
test("FindForm._regExpRegExp", function (t) {
t.test("_regExpRegExp", function (st) {
var regex = FindForm._regExpRegExp;
st.test("should not match plain strings", function (sst) {
sst.plan(1);
sst.equal('(.*)\\1[^a]+'.match(regex), null);
});
st.test("should not match empty regex", function (sst) {
sst.plan(1);
sst.equal('//'.match(regex), null);
});
st.test("should support basic regex", function (sst) {
sst.plan(4);
var m = '/(.*)\\1[^a]+/'.match(regex);
sst.notEqual(m, null);
sst.equal(m.length, 3);
sst.equal(m[1], '(.*)\\1[^a]+');
sst.equal(m[2], '');
});
st.test("should support case insensitive modifier", function (sst) {
sst.plan(4);
var m = '/abc/i'.match(regex);
sst.notEqual(m, null);
sst.equal(m.length, 3);
sst.equal(m[1], 'abc');
sst.equal(m[2], 'i');
});
st.test("should support global modifier", function (sst) {
sst.plan(4);
var m = '/abc/g'.match(regex);
sst.notEqual(m, null);
sst.equal(m.length, 3);
sst.equal(m[1], 'abc');
sst.equal(m[2], 'g');
});
st.test("should support multiline modifier", function (sst) {
sst.plan(4);
var m = '/abc/m'.match(regex);
sst.notEqual(m, null);
sst.equal(m.length, 3);
sst.equal(m[1], 'abc');
sst.equal(m[2], 'm');
});
st.test("should support multiple modifiers", function (sst) {
sst.plan(4);
var m = '/abc/gmi'.match(regex);
sst.notEqual(m, null);
sst.equal(m.length, 3);
sst.equal(m[1], 'abc');
sst.equal(m[2], 'gmi');
});
});
});