264a77629f3549c133f8dcc96a23ded77abe50bf
[aai/esr-gui.git] /
1
2 var assert = require('assert')
3 var clone = require('../');
4
5 describe('regexp-clone', function(){
6   function hasEqualSource (a, b) {
7     assert.ok(a !== b);
8     assert.equal(a.source, b.source);
9   }
10
11   function isInsensitive (a) {
12     assert.ok(a.ignoreCase);
13   }
14
15   function isGlobal (a) {
16     assert.ok(a.global);
17   }
18
19   function isMultiline (a) {
20     assert.ok(a.multiline);
21   }
22
23   function insensitiveFlag (a) {
24     var b = clone(a);
25     hasEqualSource(a, b);
26     isInsensitive(a);
27     isInsensitive(b);
28   }
29
30   function globalFlag (a) {
31     var b = clone(a);
32     hasEqualSource(a, b);
33     isGlobal(a);
34     isGlobal(b);
35   }
36
37   function multilineFlag (a) {
38     var b = clone(a);
39     hasEqualSource(a, b);
40     isMultiline(a);
41     isMultiline(b);
42   }
43
44   describe('literals', function(){
45     it('insensitive flag', function(done){
46       var a = /hello/i;
47       insensitiveFlag(a);
48       done();
49     })
50     it('global flag', function(done){
51       var a = /hello/g;
52       globalFlag(a);
53       done();
54     })
55     it('multiline flag', function(done){
56       var a = /hello/m;
57       multilineFlag(a);
58       done();
59     })
60     it('no flags', function(done){
61       var a = /hello/;
62       var b = clone(a);
63       hasEqualSource(a, b);
64       assert.ok(!a.insensitive);
65       assert.ok(!a.global);
66       assert.ok(!a.global);
67       done();
68     })
69     it('all flags', function(done){
70       var a = /hello/gim;
71       insensitiveFlag(a);
72       globalFlag(a);
73       multilineFlag(a);
74       done();
75     })
76   })
77
78   describe('instances', function(){
79     it('insensitive flag', function(done){
80       var a = new RegExp('hello', 'i');
81       insensitiveFlag(a);
82       done();
83     })
84     it('global flag', function(done){
85       var a = new RegExp('hello', 'g');
86       globalFlag(a);
87       done();
88     })
89     it('multiline flag', function(done){
90       var a = new RegExp('hello', 'm');
91       multilineFlag(a);
92       done();
93     })
94     it('no flags', function(done){
95       var a = new RegExp('hmm');
96       var b = clone(a);
97       hasEqualSource(a, b);
98       assert.ok(!a.insensitive);
99       assert.ok(!a.global);
100       assert.ok(!a.global);
101       done();
102     })
103     it('all flags', function(done){
104       var a = new RegExp('hello', 'gim');
105       insensitiveFlag(a);
106       globalFlag(a);
107       multilineFlag(a);
108       done();
109     })
110   })
111 })
112