From 1fdcad6f7f19d6be56f9f3f1f1cf7a1957d8635f Mon Sep 17 00:00:00 2001 From: Andy Christianson Date: Wed, 23 Dec 2015 22:16:39 -0600 Subject: [PATCH] test(find): Add tests for regex matching. --- spec/index.js | 1 + spec/ui/FindForm.js | 72 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 spec/ui/FindForm.js diff --git a/spec/index.js b/spec/index.js index a3e40f0..07557bf 100755 --- a/spec/index.js +++ b/spec/index.js @@ -2,3 +2,4 @@ /*global require*/ require('./cli'); +require('./ui/FindForm') diff --git a/spec/ui/FindForm.js b/spec/ui/FindForm.js new file mode 100644 index 0000000..8875027 --- /dev/null +++ b/spec/ui/FindForm.js @@ -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'); + }); + }); +});