summaryrefslogtreecommitdiffstats
path: root/node_modules/regexp-clone/test/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/regexp-clone/test/index.js')
-rw-r--r--node_modules/regexp-clone/test/index.js171
1 files changed, 171 insertions, 0 deletions
diff --git a/node_modules/regexp-clone/test/index.js b/node_modules/regexp-clone/test/index.js
new file mode 100644
index 0000000..ceaea28
--- /dev/null
+++ b/node_modules/regexp-clone/test/index.js
@@ -0,0 +1,171 @@
+
+const assert = require('assert')
+const clone = require('../');
+
+describe('regexp-clone', function(){
+ function hasEqualSource (a, b) {
+ assert.ok(a !== b);
+ assert.equal(a.source, b.source);
+ }
+
+ function isIgnoreCase (a) {
+ assert.ok(a.ignoreCase);
+ }
+
+ function isGlobal (a) {
+ assert.ok(a.global);
+ }
+
+ function isMultiline (a) {
+ assert.ok(a.multiline);
+ }
+
+ function isDotAll (a) {
+ assert.ok(a.dotAll);
+ }
+
+ function isUnicode (a) {
+ assert.ok(a.unicode);
+ }
+
+ function isSticky(a) {
+ assert.ok(a.sticky);
+ }
+
+ function testFlag (a, method) {
+ const b = clone(a);
+ hasEqualSource(a, b);
+ method(a);
+ method(b);
+ }
+
+ function lastIndex(a) {
+ a.test('this string hi there');
+ assert.strictEqual(a.lastIndex, 3);
+ const b = clone(a);
+ assert.strictEqual(b.lastIndex, 3);
+ assert.strictEqual(a.lastIndex, 3);
+ b.test('this string hi there');
+ assert.strictEqual(b.lastIndex, 14);
+ assert.strictEqual(a.lastIndex, 3);
+ }
+
+ function allFlags(a) {
+ const b = clone(a);
+ hasEqualSource(a, b);
+ testFlag(b, isIgnoreCase);
+ testFlag(b, isGlobal);
+ testFlag(b, isMultiline);
+ testFlag(b, isDotAll);
+ testFlag(b, isUnicode);
+ testFlag(b, isSticky);
+ }
+
+ function noFlags(a) {
+ const b = clone(a);
+ hasEqualSource(a, b);
+ assert.ok(!b.ignoreCase);
+ assert.ok(!b.global);
+ assert.ok(!b.multiline);
+ assert.ok(!b.dotAll);
+ assert.ok(!b.unicode);
+ assert.ok(!b.sticky);
+ }
+
+ describe('literals', function(){
+ it('ignoreCase flag', function(done){
+ const a = /hello/i;
+ testFlag(a, isIgnoreCase);
+ done();
+ })
+ it('global flag', function(done){
+ const a = /hello/g;
+ testFlag(a, isGlobal);
+ done();
+ })
+ it('multiline flag', function(done){
+ const a = /hello/m;
+ testFlag(a, isMultiline);
+ done();
+ })
+ it('dotAll flag', function(done){
+ const a = /hello/s;
+ testFlag(a, isDotAll);
+ done();
+ })
+ it('unicode flag', function(done){
+ const a = /hello/u;
+ testFlag(a, isUnicode);
+ done();
+ })
+ it('sticky flag', function(done){
+ const a = /hello/y;
+ testFlag(a, isSticky);
+ done();
+ })
+ it('no flags', function(done){
+ const a = /hello/;
+ noFlags(a);
+ done();
+ })
+ it('all flags', function(done){
+ const a = /hello/gimsuy;
+ allFlags(a);
+ done();
+ })
+ it('lastIndex', function(done) {
+ const a = /hi/g;
+ lastIndex(a);
+ done();
+ })
+ })
+
+ describe('instances', function(){
+ it('ignoreCase flag', function(done){
+ const a = new RegExp('hello', 'i');
+ testFlag(a, isIgnoreCase);
+ done();
+ })
+ it('global flag', function(done){
+ const a = new RegExp('hello', 'g');
+ testFlag(a, isGlobal);
+ done();
+ })
+ it('multiline flag', function(done){
+ const a = new RegExp('hello', 'm');
+ testFlag(a, isMultiline);
+ done();
+ })
+ it('dotAll flag', function(done){
+ const a = new RegExp('hello', 's');
+ testFlag(a, isDotAll);
+ done();
+ })
+ it('unicode flag', function(done){
+ const a = new RegExp('hello', 'u');
+ testFlag(a, isUnicode);
+ done();
+ })
+ it('sticky flag', function(done){
+ const a = new RegExp('hello', 'y');
+ testFlag(a, isSticky);
+ done();
+ })
+ it('no flags', function(done){
+ const a = new RegExp('hmm');
+ noFlags(a);
+ done();
+ })
+ it('all flags', function(done){
+ const a = new RegExp('hello', 'misguy');
+ allFlags(a);
+ done();
+ })
+ it('lastIndex', function(done) {
+ const a = new RegExp('hi', 'g');
+ lastIndex(a);
+ done();
+ })
+ })
+})
+