1 | var falafel = require('../');
|
2 | var test = require('tape');
|
3 |
|
4 | test('first opts arg', function (t) {
|
5 | t.plan(5);
|
6 |
|
7 | var src = '(function () {'
|
8 | + 'var xs = [ 1, 2, [ 3, 4 ] ];'
|
9 | + 'var ys = [ 5, 6 ];'
|
10 | + 'g([ xs, ys ]);'
|
11 | + '})()';
|
12 |
|
13 | var output = falafel({ source: src }, function (node) {
|
14 | if (node.type === 'ArrayExpression') {
|
15 | node.update('fn(' + node.source() + ')');
|
16 | }
|
17 | });
|
18 |
|
19 | var arrays = [
|
20 | [ 3, 4 ],
|
21 | [ 1, 2, [ 3, 4 ] ],
|
22 | [ 5, 6 ],
|
23 | [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ],
|
24 | ];
|
25 |
|
26 | Function(['fn','g'], output)(
|
27 | function (xs) {
|
28 | t.same(arrays.shift(), xs);
|
29 | return xs;
|
30 | },
|
31 | function (xs) {
|
32 | t.same(xs, [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ]);
|
33 | }
|
34 | );
|
35 | });
|
36 |
|
37 | test('opts.source', function (t) {
|
38 | t.plan(5);
|
39 |
|
40 | var src = '(function () {'
|
41 | + 'var xs = [ 1, 2, [ 3, 4 ] ];'
|
42 | + 'var ys = [ 5, 6 ];'
|
43 | + 'g([ xs, ys ]);'
|
44 | + '})()';
|
45 |
|
46 | var output = falafel(undefined, { source: src }, function (node) {
|
47 | if (node.type === 'ArrayExpression') {
|
48 | node.update('fn(' + node.source() + ')');
|
49 | }
|
50 | });
|
51 |
|
52 | var arrays = [
|
53 | [ 3, 4 ],
|
54 | [ 1, 2, [ 3, 4 ] ],
|
55 | [ 5, 6 ],
|
56 | [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ],
|
57 | ];
|
58 |
|
59 | Function(['fn','g'], output)(
|
60 | function (xs) {
|
61 | t.same(arrays.shift(), xs);
|
62 | return xs;
|
63 | },
|
64 | function (xs) {
|
65 | t.same(xs, [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ]);
|
66 | }
|
67 | );
|
68 | });
|
69 |
|
70 | test('Buffer opts.source', function (t) {
|
71 | t.plan(5);
|
72 |
|
73 | var src = Buffer('(function () {'
|
74 | + 'var xs = [ 1, 2, [ 3, 4 ] ];'
|
75 | + 'var ys = [ 5, 6 ];'
|
76 | + 'g([ xs, ys ]);'
|
77 | + '})()');
|
78 |
|
79 | var output = falafel({ source: src }, function (node) {
|
80 | if (node.type === 'ArrayExpression') {
|
81 | node.update('fn(' + node.source() + ')');
|
82 | }
|
83 | });
|
84 |
|
85 | var arrays = [
|
86 | [ 3, 4 ],
|
87 | [ 1, 2, [ 3, 4 ] ],
|
88 | [ 5, 6 ],
|
89 | [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ],
|
90 | ];
|
91 |
|
92 | Function(['fn','g'], output)(
|
93 | function (xs) {
|
94 | t.same(arrays.shift(), xs);
|
95 | return xs;
|
96 | },
|
97 | function (xs) {
|
98 | t.same(xs, [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ]);
|
99 | }
|
100 | );
|
101 | });
|
102 |
|
103 | test('Buffer source', function (t) {
|
104 | t.plan(5);
|
105 |
|
106 | var src = Buffer('(function () {'
|
107 | + 'var xs = [ 1, 2, [ 3, 4 ] ];'
|
108 | + 'var ys = [ 5, 6 ];'
|
109 | + 'g([ xs, ys ]);'
|
110 | + '})()');
|
111 |
|
112 | var output = falafel(src, function (node) {
|
113 | if (node.type === 'ArrayExpression') {
|
114 | node.update('fn(' + node.source() + ')');
|
115 | }
|
116 | });
|
117 |
|
118 | var arrays = [
|
119 | [ 3, 4 ],
|
120 | [ 1, 2, [ 3, 4 ] ],
|
121 | [ 5, 6 ],
|
122 | [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ],
|
123 | ];
|
124 |
|
125 | Function(['fn','g'], output)(
|
126 | function (xs) {
|
127 | t.same(arrays.shift(), xs);
|
128 | return xs;
|
129 | },
|
130 | function (xs) {
|
131 | t.same(xs, [ [ 1, 2, [ 3, 4 ] ], [ 5, 6 ] ]);
|
132 | }
|
133 | );
|
134 | });
|