You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							172 lines
						
					
					
						
							3.6 KiB
						
					
					
				
			
		
		
	
	
							172 lines
						
					
					
						
							3.6 KiB
						
					
					
				| 
 | |
| 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();
 | |
|     })
 | |
|   })
 | |
| })
 | |
| 
 |