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.
		
		
		
		
		
			
		
			
				
					50 lines
				
				880 B
			
		
		
			
		
	
	
					50 lines
				
				880 B
			| 
											3 years ago
										 | var safe = require('../') | ||
|  | var test = require('tape') | ||
|  | 
 | ||
|  | var good = [ | ||
|  |   /\bOakland\b/, | ||
|  |   /\b(Oakland|San Francisco)\b/i, | ||
|  |   /^\d+1337\d+$/i, | ||
|  |   /^\d+(1337|404)\d+$/i, | ||
|  |   /^\d+(1337|404)*\d+$/i, | ||
|  |   RegExp(Array(26).join('a?') + Array(26).join('a')) | ||
|  | ] | ||
|  | 
 | ||
|  | test('safe regex', function (t) { | ||
|  |   t.plan(good.length) | ||
|  |   good.forEach(function (re) { | ||
|  |     t.equal(safe(re), true) | ||
|  |   }) | ||
|  | }) | ||
|  | 
 | ||
|  | var bad = [ | ||
|  |   /^(a?){25}(a){25}$/, | ||
|  |   RegExp(Array(27).join('a?') + Array(27).join('a')), | ||
|  |   /(x+x+)+y/, | ||
|  |   /foo|(x+x+)+y/, | ||
|  |   /(a+){10}y/, | ||
|  |   /(a+){2}y/, | ||
|  |   /(.*){1,32000}[bc]/ | ||
|  | ] | ||
|  | 
 | ||
|  | test('unsafe regex', function (t) { | ||
|  |   t.plan(bad.length) | ||
|  |   bad.forEach(function (re) { | ||
|  |     t.equal(safe(re), false) | ||
|  |   }) | ||
|  | }) | ||
|  | 
 | ||
|  | var invalid = [ | ||
|  |   '*Oakland*', | ||
|  |   'hey(yoo))', | ||
|  |   'abcde(?>hellow)', | ||
|  |   '[abc' | ||
|  | ] | ||
|  | 
 | ||
|  | test('invalid regex', function (t) { | ||
|  |   t.plan(invalid.length) | ||
|  |   invalid.forEach(function (re) { | ||
|  |     t.equal(safe(re), false) | ||
|  |   }) | ||
|  | }) |