113 lines
2.3 KiB
JavaScript
113 lines
2.3 KiB
JavaScript
|
|
||
|
var assert = require('assert')
|
||
|
var clone = require('../');
|
||
|
|
||
|
describe('regexp-clone', function(){
|
||
|
function hasEqualSource (a, b) {
|
||
|
assert.ok(a !== b);
|
||
|
assert.equal(a.source, b.source);
|
||
|
}
|
||
|
|
||
|
function isInsensitive (a) {
|
||
|
assert.ok(a.ignoreCase);
|
||
|
}
|
||
|
|
||
|
function isGlobal (a) {
|
||
|
assert.ok(a.global);
|
||
|
}
|
||
|
|
||
|
function isMultiline (a) {
|
||
|
assert.ok(a.multiline);
|
||
|
}
|
||
|
|
||
|
function insensitiveFlag (a) {
|
||
|
var b = clone(a);
|
||
|
hasEqualSource(a, b);
|
||
|
isInsensitive(a);
|
||
|
isInsensitive(b);
|
||
|
}
|
||
|
|
||
|
function globalFlag (a) {
|
||
|
var b = clone(a);
|
||
|
hasEqualSource(a, b);
|
||
|
isGlobal(a);
|
||
|
isGlobal(b);
|
||
|
}
|
||
|
|
||
|
function multilineFlag (a) {
|
||
|
var b = clone(a);
|
||
|
hasEqualSource(a, b);
|
||
|
isMultiline(a);
|
||
|
isMultiline(b);
|
||
|
}
|
||
|
|
||
|
describe('literals', function(){
|
||
|
it('insensitive flag', function(done){
|
||
|
var a = /hello/i;
|
||
|
insensitiveFlag(a);
|
||
|
done();
|
||
|
})
|
||
|
it('global flag', function(done){
|
||
|
var a = /hello/g;
|
||
|
globalFlag(a);
|
||
|
done();
|
||
|
})
|
||
|
it('multiline flag', function(done){
|
||
|
var a = /hello/m;
|
||
|
multilineFlag(a);
|
||
|
done();
|
||
|
})
|
||
|
it('no flags', function(done){
|
||
|
var a = /hello/;
|
||
|
var b = clone(a);
|
||
|
hasEqualSource(a, b);
|
||
|
assert.ok(!a.insensitive);
|
||
|
assert.ok(!a.global);
|
||
|
assert.ok(!a.global);
|
||
|
done();
|
||
|
})
|
||
|
it('all flags', function(done){
|
||
|
var a = /hello/gim;
|
||
|
insensitiveFlag(a);
|
||
|
globalFlag(a);
|
||
|
multilineFlag(a);
|
||
|
done();
|
||
|
})
|
||
|
})
|
||
|
|
||
|
describe('instances', function(){
|
||
|
it('insensitive flag', function(done){
|
||
|
var a = new RegExp('hello', 'i');
|
||
|
insensitiveFlag(a);
|
||
|
done();
|
||
|
})
|
||
|
it('global flag', function(done){
|
||
|
var a = new RegExp('hello', 'g');
|
||
|
globalFlag(a);
|
||
|
done();
|
||
|
})
|
||
|
it('multiline flag', function(done){
|
||
|
var a = new RegExp('hello', 'm');
|
||
|
multilineFlag(a);
|
||
|
done();
|
||
|
})
|
||
|
it('no flags', function(done){
|
||
|
var a = new RegExp('hmm');
|
||
|
var b = clone(a);
|
||
|
hasEqualSource(a, b);
|
||
|
assert.ok(!a.insensitive);
|
||
|
assert.ok(!a.global);
|
||
|
assert.ok(!a.global);
|
||
|
done();
|
||
|
})
|
||
|
it('all flags', function(done){
|
||
|
var a = new RegExp('hello', 'gim');
|
||
|
insensitiveFlag(a);
|
||
|
globalFlag(a);
|
||
|
multilineFlag(a);
|
||
|
done();
|
||
|
})
|
||
|
})
|
||
|
})
|
||
|
|