mirror of
https://github.com/S2-/gitlit
synced 2025-08-04 05:10:05 +02:00
packager
This commit is contained in:
114
app/node_modules/traverse/test/circular.js
generated
vendored
Normal file
114
app/node_modules/traverse/test/circular.js
generated
vendored
Normal file
@@ -0,0 +1,114 @@
|
||||
var assert = require('assert');
|
||||
var Traverse = require('traverse');
|
||||
var util = require('util');
|
||||
|
||||
exports.circular = function () {
|
||||
var obj = { x : 3 };
|
||||
obj.y = obj;
|
||||
var foundY = false;
|
||||
Traverse(obj).forEach(function (x) {
|
||||
if (this.path.join('') == 'y') {
|
||||
assert.equal(
|
||||
util.inspect(this.circular.node),
|
||||
util.inspect(obj)
|
||||
);
|
||||
foundY = true;
|
||||
}
|
||||
});
|
||||
assert.ok(foundY);
|
||||
};
|
||||
|
||||
exports.deepCirc = function () {
|
||||
var obj = { x : [ 1, 2, 3 ], y : [ 4, 5 ] };
|
||||
obj.y[2] = obj;
|
||||
|
||||
var times = 0;
|
||||
Traverse(obj).forEach(function (x) {
|
||||
if (this.circular) {
|
||||
assert.deepEqual(this.circular.path, []);
|
||||
assert.deepEqual(this.path, [ 'y', 2 ]);
|
||||
times ++;
|
||||
}
|
||||
});
|
||||
|
||||
assert.deepEqual(times, 1);
|
||||
};
|
||||
|
||||
exports.doubleCirc = function () {
|
||||
var obj = { x : [ 1, 2, 3 ], y : [ 4, 5 ] };
|
||||
obj.y[2] = obj;
|
||||
obj.x.push(obj.y);
|
||||
|
||||
var circs = [];
|
||||
Traverse(obj).forEach(function (x) {
|
||||
if (this.circular) {
|
||||
circs.push({ circ : this.circular, self : this, node : x });
|
||||
}
|
||||
});
|
||||
|
||||
assert.deepEqual(circs[0].self.path, [ 'x', 3, 2 ]);
|
||||
assert.deepEqual(circs[0].circ.path, []);
|
||||
|
||||
assert.deepEqual(circs[1].self.path, [ 'y', 2 ]);
|
||||
assert.deepEqual(circs[1].circ.path, []);
|
||||
|
||||
assert.deepEqual(circs.length, 2);
|
||||
};
|
||||
|
||||
exports.circDubForEach = function () {
|
||||
var obj = { x : [ 1, 2, 3 ], y : [ 4, 5 ] };
|
||||
obj.y[2] = obj;
|
||||
obj.x.push(obj.y);
|
||||
|
||||
Traverse(obj).forEach(function (x) {
|
||||
if (this.circular) this.update('...');
|
||||
});
|
||||
|
||||
assert.deepEqual(obj, { x : [ 1, 2, 3, [ 4, 5, '...' ] ], y : [ 4, 5, '...' ] });
|
||||
};
|
||||
|
||||
exports.circDubMap = function () {
|
||||
var obj = { x : [ 1, 2, 3 ], y : [ 4, 5 ] };
|
||||
obj.y[2] = obj;
|
||||
obj.x.push(obj.y);
|
||||
|
||||
var c = Traverse(obj).map(function (x) {
|
||||
if (this.circular) {
|
||||
this.update('...');
|
||||
}
|
||||
});
|
||||
|
||||
assert.deepEqual(c, { x : [ 1, 2, 3, [ 4, 5, '...' ] ], y : [ 4, 5, '...' ] });
|
||||
};
|
||||
|
||||
exports.circClone = function () {
|
||||
var obj = { x : [ 1, 2, 3 ], y : [ 4, 5 ] };
|
||||
obj.y[2] = obj;
|
||||
obj.x.push(obj.y);
|
||||
|
||||
var clone = Traverse.clone(obj);
|
||||
assert.ok(obj !== clone);
|
||||
|
||||
assert.ok(clone.y[2] === clone);
|
||||
assert.ok(clone.y[2] !== obj);
|
||||
assert.ok(clone.x[3][2] === clone);
|
||||
assert.ok(clone.x[3][2] !== obj);
|
||||
assert.deepEqual(clone.x.slice(0,3), [1,2,3]);
|
||||
assert.deepEqual(clone.y.slice(0,2), [4,5]);
|
||||
};
|
||||
|
||||
exports.circMapScrub = function () {
|
||||
var obj = { a : 1, b : 2 };
|
||||
obj.c = obj;
|
||||
|
||||
var scrubbed = Traverse(obj).map(function (node) {
|
||||
if (this.circular) this.remove();
|
||||
});
|
||||
assert.deepEqual(
|
||||
Object.keys(scrubbed).sort(),
|
||||
[ 'a', 'b' ]
|
||||
);
|
||||
assert.ok(Traverse.deepEqual(scrubbed, { a : 1, b : 2 }));
|
||||
|
||||
assert.equal(obj.c, obj);
|
||||
};
|
35
app/node_modules/traverse/test/date.js
generated
vendored
Normal file
35
app/node_modules/traverse/test/date.js
generated
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
var assert = require('assert');
|
||||
var Traverse = require('traverse');
|
||||
|
||||
exports.dateEach = function () {
|
||||
var obj = { x : new Date, y : 10, z : 5 };
|
||||
|
||||
var counts = {};
|
||||
|
||||
Traverse(obj).forEach(function (node) {
|
||||
var t = (node instanceof Date && 'Date') || typeof node;
|
||||
counts[t] = (counts[t] || 0) + 1;
|
||||
});
|
||||
|
||||
assert.deepEqual(counts, {
|
||||
object : 1,
|
||||
Date : 1,
|
||||
number : 2,
|
||||
});
|
||||
};
|
||||
|
||||
exports.dateMap = function () {
|
||||
var obj = { x : new Date, y : 10, z : 5 };
|
||||
|
||||
var res = Traverse(obj).map(function (node) {
|
||||
if (typeof node === 'number') this.update(node + 100);
|
||||
});
|
||||
|
||||
assert.ok(obj.x !== res.x);
|
||||
assert.deepEqual(res, {
|
||||
x : obj.x,
|
||||
y : 110,
|
||||
z : 105,
|
||||
});
|
||||
};
|
||||
|
219
app/node_modules/traverse/test/equal.js
generated
vendored
Normal file
219
app/node_modules/traverse/test/equal.js
generated
vendored
Normal file
@@ -0,0 +1,219 @@
|
||||
var assert = require('assert');
|
||||
var traverse = require('traverse');
|
||||
|
||||
exports.deepDates = function () {
|
||||
assert.ok(
|
||||
traverse.deepEqual(
|
||||
{ d : new Date, x : [ 1, 2, 3 ] },
|
||||
{ d : new Date, x : [ 1, 2, 3 ] }
|
||||
),
|
||||
'dates should be equal'
|
||||
);
|
||||
|
||||
var d0 = new Date;
|
||||
setTimeout(function () {
|
||||
assert.ok(
|
||||
!traverse.deepEqual(
|
||||
{ d : d0, x : [ 1, 2, 3 ], },
|
||||
{ d : new Date, x : [ 1, 2, 3 ] }
|
||||
),
|
||||
'microseconds should count in date equality'
|
||||
);
|
||||
}, 5);
|
||||
};
|
||||
|
||||
exports.deepCircular = function () {
|
||||
var a = [1];
|
||||
a.push(a); // a = [ 1, *a ]
|
||||
|
||||
var b = [1];
|
||||
b.push(a); // b = [ 1, [ 1, *a ] ]
|
||||
|
||||
assert.ok(
|
||||
!traverse.deepEqual(a, b),
|
||||
'circular ref mount points count towards equality'
|
||||
);
|
||||
|
||||
var c = [1];
|
||||
c.push(c); // c = [ 1, *c ]
|
||||
assert.ok(
|
||||
traverse.deepEqual(a, c),
|
||||
'circular refs are structurally the same here'
|
||||
);
|
||||
|
||||
var d = [1];
|
||||
d.push(a); // c = [ 1, [ 1, *d ] ]
|
||||
assert.ok(
|
||||
traverse.deepEqual(b, d),
|
||||
'non-root circular ref structural comparison'
|
||||
);
|
||||
};
|
||||
|
||||
exports.deepInstances = function () {
|
||||
assert.ok(
|
||||
!traverse.deepEqual([ new Boolean(false) ], [ false ]),
|
||||
'boolean instances are not real booleans'
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
!traverse.deepEqual([ new String('x') ], [ 'x' ]),
|
||||
'string instances are not real strings'
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
!traverse.deepEqual([ new Number(4) ], [ 4 ]),
|
||||
'number instances are not real numbers'
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
traverse.deepEqual([ new RegExp('x') ], [ /x/ ]),
|
||||
'regexp instances are real regexps'
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
!traverse.deepEqual([ new RegExp(/./) ], [ /../ ]),
|
||||
'these regexps aren\'t the same'
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
!traverse.deepEqual(
|
||||
[ function (x) { return x * 2 } ],
|
||||
[ function (x) { return x * 2 } ]
|
||||
),
|
||||
'functions with the same .toString() aren\'t necessarily the same'
|
||||
);
|
||||
|
||||
var f = function (x) { return x * 2 };
|
||||
assert.ok(
|
||||
traverse.deepEqual([ f ], [ f ]),
|
||||
'these functions are actually equal'
|
||||
);
|
||||
};
|
||||
|
||||
exports.deepEqual = function () {
|
||||
assert.ok(
|
||||
!traverse.deepEqual([ 1, 2, 3 ], { 0 : 1, 1 : 2, 2 : 3 }),
|
||||
'arrays are not objects'
|
||||
);
|
||||
};
|
||||
|
||||
exports.falsy = function () {
|
||||
assert.ok(
|
||||
!traverse.deepEqual([ undefined ], [ null ]),
|
||||
'null is not undefined!'
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
!traverse.deepEqual([ null ], [ undefined ]),
|
||||
'undefined is not null!'
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
!traverse.deepEqual(
|
||||
{ a : 1, b : 2, c : [ 3, undefined, 5 ] },
|
||||
{ a : 1, b : 2, c : [ 3, null, 5 ] }
|
||||
),
|
||||
'undefined is not null, however deeply!'
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
!traverse.deepEqual(
|
||||
{ a : 1, b : 2, c : [ 3, undefined, 5 ] },
|
||||
{ a : 1, b : 2, c : [ 3, null, 5 ] }
|
||||
),
|
||||
'null is not undefined, however deeply!'
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
!traverse.deepEqual(
|
||||
{ a : 1, b : 2, c : [ 3, undefined, 5 ] },
|
||||
{ a : 1, b : 2, c : [ 3, null, 5 ] }
|
||||
),
|
||||
'null is not undefined, however deeply!'
|
||||
);
|
||||
};
|
||||
|
||||
exports.deletedArrayEqual = function () {
|
||||
var xs = [ 1, 2, 3, 4 ];
|
||||
delete xs[2];
|
||||
|
||||
var ys = Object.create(Array.prototype);
|
||||
ys[0] = 1;
|
||||
ys[1] = 2;
|
||||
ys[3] = 4;
|
||||
|
||||
assert.ok(
|
||||
traverse.deepEqual(xs, ys),
|
||||
'arrays with deleted elements are only equal to'
|
||||
+ ' arrays with similarly deleted elements'
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
!traverse.deepEqual(xs, [ 1, 2, undefined, 4 ]),
|
||||
'deleted array elements cannot be undefined'
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
!traverse.deepEqual(xs, [ 1, 2, null, 4 ]),
|
||||
'deleted array elements cannot be null'
|
||||
);
|
||||
};
|
||||
|
||||
exports.deletedObjectEqual = function () {
|
||||
var obj = { a : 1, b : 2, c : 3 };
|
||||
delete obj.c;
|
||||
|
||||
assert.ok(
|
||||
traverse.deepEqual(obj, { a : 1, b : 2 }),
|
||||
'deleted object elements should not show up'
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
!traverse.deepEqual(obj, { a : 1, b : 2, c : undefined }),
|
||||
'deleted object elements are not undefined'
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
!traverse.deepEqual(obj, { a : 1, b : 2, c : null }),
|
||||
'deleted object elements are not null'
|
||||
);
|
||||
};
|
||||
|
||||
exports.emptyKeyEqual = function () {
|
||||
assert.ok(!traverse.deepEqual(
|
||||
{ a : 1 }, { a : 1, '' : 55 }
|
||||
));
|
||||
};
|
||||
|
||||
exports.deepArguments = function () {
|
||||
assert.ok(
|
||||
!traverse.deepEqual(
|
||||
[ 4, 5, 6 ],
|
||||
(function () { return arguments })(4, 5, 6)
|
||||
),
|
||||
'arguments are not arrays'
|
||||
);
|
||||
|
||||
assert.ok(
|
||||
traverse.deepEqual(
|
||||
(function () { return arguments })(4, 5, 6),
|
||||
(function () { return arguments })(4, 5, 6)
|
||||
),
|
||||
'arguments should equal'
|
||||
);
|
||||
};
|
||||
|
||||
exports.deepUn = function () {
|
||||
assert.ok(!traverse.deepEqual({ a : 1, b : 2 }, undefined));
|
||||
assert.ok(!traverse.deepEqual({ a : 1, b : 2 }, {}));
|
||||
assert.ok(!traverse.deepEqual(undefined, { a : 1, b : 2 }));
|
||||
assert.ok(!traverse.deepEqual({}, { a : 1, b : 2 }));
|
||||
assert.ok(traverse.deepEqual(undefined, undefined));
|
||||
assert.ok(traverse.deepEqual(null, null));
|
||||
assert.ok(!traverse.deepEqual(undefined, null));
|
||||
};
|
||||
|
||||
exports.deepLevels = function () {
|
||||
var xs = [ 1, 2, [ 3, 4, [ 5, 6 ] ] ];
|
||||
assert.ok(!traverse.deepEqual(xs, []));
|
||||
};
|
17
app/node_modules/traverse/test/instance.js
generated
vendored
Normal file
17
app/node_modules/traverse/test/instance.js
generated
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
var assert = require('assert');
|
||||
var Traverse = require('traverse');
|
||||
var EventEmitter = require('events').EventEmitter;
|
||||
|
||||
exports['check instanceof on node elems'] = function () {
|
||||
|
||||
var counts = { emitter : 0 };
|
||||
|
||||
Traverse([ new EventEmitter, 3, 4, { ev : new EventEmitter }])
|
||||
.forEach(function (node) {
|
||||
if (node instanceof EventEmitter) counts.emitter ++;
|
||||
})
|
||||
;
|
||||
|
||||
assert.equal(counts.emitter, 2);
|
||||
};
|
||||
|
42
app/node_modules/traverse/test/interface.js
generated
vendored
Normal file
42
app/node_modules/traverse/test/interface.js
generated
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
var assert = require('assert');
|
||||
var Traverse = require('traverse');
|
||||
|
||||
exports['interface map'] = function () {
|
||||
var obj = { a : [ 5,6,7 ], b : { c : [8] } };
|
||||
|
||||
assert.deepEqual(
|
||||
Traverse.paths(obj)
|
||||
.sort()
|
||||
.map(function (path) { return path.join('/') })
|
||||
.slice(1)
|
||||
.join(' ')
|
||||
,
|
||||
'a a/0 a/1 a/2 b b/c b/c/0'
|
||||
);
|
||||
|
||||
assert.deepEqual(
|
||||
Traverse.nodes(obj),
|
||||
[
|
||||
{ a: [ 5, 6, 7 ], b: { c: [ 8 ] } },
|
||||
[ 5, 6, 7 ], 5, 6, 7,
|
||||
{ c: [ 8 ] }, [ 8 ], 8
|
||||
]
|
||||
);
|
||||
|
||||
assert.deepEqual(
|
||||
Traverse.map(obj, function (node) {
|
||||
if (typeof node == 'number') {
|
||||
return node + 1000;
|
||||
}
|
||||
else if (Array.isArray(node)) {
|
||||
return node.join(' ');
|
||||
}
|
||||
}),
|
||||
{ a: '5 6 7', b: { c: '8' } }
|
||||
);
|
||||
|
||||
var nodes = 0;
|
||||
Traverse.forEach(obj, function (node) { nodes ++ });
|
||||
assert.deepEqual(nodes, 8);
|
||||
};
|
||||
|
47
app/node_modules/traverse/test/json.js
generated
vendored
Normal file
47
app/node_modules/traverse/test/json.js
generated
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
var assert = require('assert');
|
||||
var Traverse = require('traverse');
|
||||
|
||||
exports['json test'] = function () {
|
||||
var id = 54;
|
||||
var callbacks = {};
|
||||
var obj = { moo : function () {}, foo : [2,3,4, function () {}] };
|
||||
|
||||
var scrubbed = Traverse(obj).map(function (x) {
|
||||
if (typeof x === 'function') {
|
||||
callbacks[id] = { id : id, f : x, path : this.path };
|
||||
this.update('[Function]');
|
||||
id++;
|
||||
}
|
||||
});
|
||||
|
||||
assert.equal(
|
||||
scrubbed.moo, '[Function]',
|
||||
'obj.moo replaced with "[Function]"'
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
scrubbed.foo[3], '[Function]',
|
||||
'obj.foo[3] replaced with "[Function]"'
|
||||
);
|
||||
|
||||
assert.deepEqual(scrubbed, {
|
||||
moo : '[Function]',
|
||||
foo : [ 2, 3, 4, "[Function]" ]
|
||||
}, 'Full JSON string matches');
|
||||
|
||||
assert.deepEqual(
|
||||
typeof obj.moo, 'function',
|
||||
'Original obj.moo still a function'
|
||||
);
|
||||
|
||||
assert.deepEqual(
|
||||
typeof obj.foo[3], 'function',
|
||||
'Original obj.foo[3] still a function'
|
||||
);
|
||||
|
||||
assert.deepEqual(callbacks, {
|
||||
54: { id: 54, f : obj.moo, path: [ 'moo' ] },
|
||||
55: { id: 55, f : obj.foo[3], path: [ 'foo', '3' ] },
|
||||
}, 'Check the generated callbacks list');
|
||||
};
|
||||
|
21
app/node_modules/traverse/test/leaves.js
generated
vendored
Normal file
21
app/node_modules/traverse/test/leaves.js
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
var assert = require('assert');
|
||||
var Traverse = require('traverse');
|
||||
|
||||
exports['leaves test'] = function () {
|
||||
var acc = [];
|
||||
Traverse({
|
||||
a : [1,2,3],
|
||||
b : 4,
|
||||
c : [5,6],
|
||||
d : { e : [7,8], f : 9 }
|
||||
}).forEach(function (x) {
|
||||
if (this.isLeaf) acc.push(x);
|
||||
});
|
||||
|
||||
assert.equal(
|
||||
acc.join(' '),
|
||||
'1 2 3 4 5 6 7 8 9',
|
||||
'Traversal in the right(?) order'
|
||||
);
|
||||
};
|
||||
|
203
app/node_modules/traverse/test/mutability.js
generated
vendored
Normal file
203
app/node_modules/traverse/test/mutability.js
generated
vendored
Normal file
@@ -0,0 +1,203 @@
|
||||
var assert = require('assert');
|
||||
var Traverse = require('traverse');
|
||||
|
||||
exports.mutate = function () {
|
||||
var obj = { a : 1, b : 2, c : [ 3, 4 ] };
|
||||
var res = Traverse(obj).forEach(function (x) {
|
||||
if (typeof x === 'number' && x % 2 === 0) {
|
||||
this.update(x * 10);
|
||||
}
|
||||
});
|
||||
assert.deepEqual(obj, res);
|
||||
assert.deepEqual(obj, { a : 1, b : 20, c : [ 3, 40 ] });
|
||||
};
|
||||
|
||||
exports.mutateT = function () {
|
||||
var obj = { a : 1, b : 2, c : [ 3, 4 ] };
|
||||
var res = Traverse.forEach(obj, function (x) {
|
||||
if (typeof x === 'number' && x % 2 === 0) {
|
||||
this.update(x * 10);
|
||||
}
|
||||
});
|
||||
assert.deepEqual(obj, res);
|
||||
assert.deepEqual(obj, { a : 1, b : 20, c : [ 3, 40 ] });
|
||||
};
|
||||
|
||||
exports.map = function () {
|
||||
var obj = { a : 1, b : 2, c : [ 3, 4 ] };
|
||||
var res = Traverse(obj).map(function (x) {
|
||||
if (typeof x === 'number' && x % 2 === 0) {
|
||||
this.update(x * 10);
|
||||
}
|
||||
});
|
||||
assert.deepEqual(obj, { a : 1, b : 2, c : [ 3, 4 ] });
|
||||
assert.deepEqual(res, { a : 1, b : 20, c : [ 3, 40 ] });
|
||||
};
|
||||
|
||||
exports.mapT = function () {
|
||||
var obj = { a : 1, b : 2, c : [ 3, 4 ] };
|
||||
var res = Traverse.map(obj, function (x) {
|
||||
if (typeof x === 'number' && x % 2 === 0) {
|
||||
this.update(x * 10);
|
||||
}
|
||||
});
|
||||
assert.deepEqual(obj, { a : 1, b : 2, c : [ 3, 4 ] });
|
||||
assert.deepEqual(res, { a : 1, b : 20, c : [ 3, 40 ] });
|
||||
};
|
||||
|
||||
exports.clone = function () {
|
||||
var obj = { a : 1, b : 2, c : [ 3, 4 ] };
|
||||
var res = Traverse(obj).clone();
|
||||
assert.deepEqual(obj, res);
|
||||
assert.ok(obj !== res);
|
||||
obj.a ++;
|
||||
assert.deepEqual(res.a, 1);
|
||||
obj.c.push(5);
|
||||
assert.deepEqual(res.c, [ 3, 4 ]);
|
||||
};
|
||||
|
||||
exports.cloneT = function () {
|
||||
var obj = { a : 1, b : 2, c : [ 3, 4 ] };
|
||||
var res = Traverse.clone(obj);
|
||||
assert.deepEqual(obj, res);
|
||||
assert.ok(obj !== res);
|
||||
obj.a ++;
|
||||
assert.deepEqual(res.a, 1);
|
||||
obj.c.push(5);
|
||||
assert.deepEqual(res.c, [ 3, 4 ]);
|
||||
};
|
||||
|
||||
exports.reduce = function () {
|
||||
var obj = { a : 1, b : 2, c : [ 3, 4 ] };
|
||||
var res = Traverse(obj).reduce(function (acc, x) {
|
||||
if (this.isLeaf) acc.push(x);
|
||||
return acc;
|
||||
}, []);
|
||||
assert.deepEqual(obj, { a : 1, b : 2, c : [ 3, 4 ] });
|
||||
assert.deepEqual(res, [ 1, 2, 3, 4 ]);
|
||||
};
|
||||
|
||||
exports.reduceInit = function () {
|
||||
var obj = { a : 1, b : 2, c : [ 3, 4 ] };
|
||||
var res = Traverse(obj).reduce(function (acc, x) {
|
||||
if (this.isRoot) assert.fail('got root');
|
||||
return acc;
|
||||
});
|
||||
assert.deepEqual(obj, { a : 1, b : 2, c : [ 3, 4 ] });
|
||||
assert.deepEqual(res, obj);
|
||||
};
|
||||
|
||||
exports.remove = function () {
|
||||
var obj = { a : 1, b : 2, c : [ 3, 4 ] };
|
||||
Traverse(obj).forEach(function (x) {
|
||||
if (this.isLeaf && x % 2 == 0) this.remove();
|
||||
});
|
||||
|
||||
assert.deepEqual(obj, { a : 1, c : [ 3 ] });
|
||||
};
|
||||
|
||||
exports.removeMap = function () {
|
||||
var obj = { a : 1, b : 2, c : [ 3, 4 ] };
|
||||
var res = Traverse(obj).map(function (x) {
|
||||
if (this.isLeaf && x % 2 == 0) this.remove();
|
||||
});
|
||||
|
||||
assert.deepEqual(obj, { a : 1, b : 2, c : [ 3, 4 ] });
|
||||
assert.deepEqual(res, { a : 1, c : [ 3 ] });
|
||||
};
|
||||
|
||||
exports.delete = function () {
|
||||
var obj = { a : 1, b : 2, c : [ 3, 4 ] };
|
||||
Traverse(obj).forEach(function (x) {
|
||||
if (this.isLeaf && x % 2 == 0) this.delete();
|
||||
});
|
||||
|
||||
assert.ok(!Traverse.deepEqual(
|
||||
obj, { a : 1, c : [ 3, undefined ] }
|
||||
));
|
||||
|
||||
assert.ok(Traverse.deepEqual(
|
||||
obj, { a : 1, c : [ 3 ] }
|
||||
));
|
||||
|
||||
assert.ok(!Traverse.deepEqual(
|
||||
obj, { a : 1, c : [ 3, null ] }
|
||||
));
|
||||
};
|
||||
|
||||
exports.deleteRedux = function () {
|
||||
var obj = { a : 1, b : 2, c : [ 3, 4, 5 ] };
|
||||
Traverse(obj).forEach(function (x) {
|
||||
if (this.isLeaf && x % 2 == 0) this.delete();
|
||||
});
|
||||
|
||||
assert.ok(!Traverse.deepEqual(
|
||||
obj, { a : 1, c : [ 3, undefined, 5 ] }
|
||||
));
|
||||
|
||||
assert.ok(Traverse.deepEqual(
|
||||
obj, { a : 1, c : [ 3 ,, 5 ] }
|
||||
));
|
||||
|
||||
assert.ok(!Traverse.deepEqual(
|
||||
obj, { a : 1, c : [ 3, null, 5 ] }
|
||||
));
|
||||
|
||||
assert.ok(!Traverse.deepEqual(
|
||||
obj, { a : 1, c : [ 3, 5 ] }
|
||||
));
|
||||
};
|
||||
|
||||
exports.deleteMap = function () {
|
||||
var obj = { a : 1, b : 2, c : [ 3, 4 ] };
|
||||
var res = Traverse(obj).map(function (x) {
|
||||
if (this.isLeaf && x % 2 == 0) this.delete();
|
||||
});
|
||||
|
||||
assert.ok(Traverse.deepEqual(
|
||||
obj,
|
||||
{ a : 1, b : 2, c : [ 3, 4 ] }
|
||||
));
|
||||
|
||||
var xs = [ 3, 4 ];
|
||||
delete xs[1];
|
||||
|
||||
assert.ok(Traverse.deepEqual(
|
||||
res, { a : 1, c : xs }
|
||||
));
|
||||
|
||||
assert.ok(Traverse.deepEqual(
|
||||
res, { a : 1, c : [ 3, ] }
|
||||
));
|
||||
|
||||
assert.ok(Traverse.deepEqual(
|
||||
res, { a : 1, c : [ 3 ] }
|
||||
));
|
||||
};
|
||||
|
||||
exports.deleteMapRedux = function () {
|
||||
var obj = { a : 1, b : 2, c : [ 3, 4, 5 ] };
|
||||
var res = Traverse(obj).map(function (x) {
|
||||
if (this.isLeaf && x % 2 == 0) this.delete();
|
||||
});
|
||||
|
||||
assert.ok(Traverse.deepEqual(
|
||||
obj,
|
||||
{ a : 1, b : 2, c : [ 3, 4, 5 ] }
|
||||
));
|
||||
|
||||
var xs = [ 3, 4, 5 ];
|
||||
delete xs[1];
|
||||
|
||||
assert.ok(Traverse.deepEqual(
|
||||
res, { a : 1, c : xs }
|
||||
));
|
||||
|
||||
assert.ok(!Traverse.deepEqual(
|
||||
res, { a : 1, c : [ 3, 5 ] }
|
||||
));
|
||||
|
||||
assert.ok(Traverse.deepEqual(
|
||||
res, { a : 1, c : [ 3 ,, 5 ] }
|
||||
));
|
||||
};
|
20
app/node_modules/traverse/test/negative.js
generated
vendored
Normal file
20
app/node_modules/traverse/test/negative.js
generated
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
var Traverse = require('traverse');
|
||||
var assert = require('assert');
|
||||
|
||||
exports['negative update test'] = function () {
|
||||
var obj = [ 5, 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ];
|
||||
var fixed = Traverse.map(obj, function (x) {
|
||||
if (x < 0) this.update(x + 128);
|
||||
});
|
||||
|
||||
assert.deepEqual(fixed,
|
||||
[ 5, 6, 125, [ 7, 8, 126, 1 ], { f: 10, g: 115 } ],
|
||||
'Negative values += 128'
|
||||
);
|
||||
|
||||
assert.deepEqual(obj,
|
||||
[ 5, 6, -3, [ 7, 8, -2, 1 ], { f: 10, g: -13 } ],
|
||||
'Original references not modified'
|
||||
);
|
||||
}
|
||||
|
15
app/node_modules/traverse/test/obj.js
generated
vendored
Normal file
15
app/node_modules/traverse/test/obj.js
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
var assert = require('assert');
|
||||
var Traverse = require('traverse');
|
||||
|
||||
exports['traverse an object with nested functions'] = function () {
|
||||
var to = setTimeout(function () {
|
||||
assert.fail('never ran');
|
||||
}, 1000);
|
||||
|
||||
function Cons (x) {
|
||||
clearTimeout(to);
|
||||
assert.equal(x, 10);
|
||||
};
|
||||
Traverse(new Cons(10));
|
||||
};
|
||||
|
41
app/node_modules/traverse/test/stop.js
generated
vendored
Normal file
41
app/node_modules/traverse/test/stop.js
generated
vendored
Normal file
@@ -0,0 +1,41 @@
|
||||
var assert = require('assert');
|
||||
var traverse = require('traverse');
|
||||
|
||||
exports.stop = function () {
|
||||
var visits = 0;
|
||||
traverse('abcdefghij'.split('')).forEach(function (node) {
|
||||
if (typeof node === 'string') {
|
||||
visits ++;
|
||||
if (node === 'e') this.stop()
|
||||
}
|
||||
});
|
||||
|
||||
assert.equal(visits, 5);
|
||||
};
|
||||
|
||||
exports.stopMap = function () {
|
||||
var s = traverse('abcdefghij'.split('')).map(function (node) {
|
||||
if (typeof node === 'string') {
|
||||
if (node === 'e') this.stop()
|
||||
return node.toUpperCase();
|
||||
}
|
||||
}).join('');
|
||||
|
||||
assert.equal(s, 'ABCDEfghij');
|
||||
};
|
||||
|
||||
exports.stopReduce = function () {
|
||||
var obj = {
|
||||
a : [ 4, 5 ],
|
||||
b : [ 6, [ 7, 8, 9 ] ]
|
||||
};
|
||||
var xs = traverse(obj).reduce(function (acc, node) {
|
||||
if (this.isLeaf) {
|
||||
if (node === 7) this.stop();
|
||||
else acc.push(node)
|
||||
}
|
||||
return acc;
|
||||
}, []);
|
||||
|
||||
assert.deepEqual(xs, [ 4, 5, 6 ]);
|
||||
};
|
36
app/node_modules/traverse/test/stringify.js
generated
vendored
Normal file
36
app/node_modules/traverse/test/stringify.js
generated
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
var assert = require('assert');
|
||||
var Traverse = require('traverse');
|
||||
|
||||
exports.stringify = function () {
|
||||
var obj = [ 5, 6, -3, [ 7, 8, -2, 1 ], { f : 10, g : -13 } ];
|
||||
|
||||
var s = '';
|
||||
Traverse(obj).forEach(function (node) {
|
||||
if (Array.isArray(node)) {
|
||||
this.before(function () { s += '[' });
|
||||
this.post(function (child) {
|
||||
if (!child.isLast) s += ',';
|
||||
});
|
||||
this.after(function () { s += ']' });
|
||||
}
|
||||
else if (typeof node == 'object') {
|
||||
this.before(function () { s += '{' });
|
||||
this.pre(function (x, key) {
|
||||
s += '"' + key + '"' + ':';
|
||||
});
|
||||
this.post(function (child) {
|
||||
if (!child.isLast) s += ',';
|
||||
});
|
||||
this.after(function () { s += '}' });
|
||||
}
|
||||
else if (typeof node == 'function') {
|
||||
s += 'null';
|
||||
}
|
||||
else {
|
||||
s += node.toString();
|
||||
}
|
||||
});
|
||||
|
||||
assert.equal(s, JSON.stringify(obj));
|
||||
}
|
||||
|
54
app/node_modules/traverse/test/super_deep.js
generated
vendored
Normal file
54
app/node_modules/traverse/test/super_deep.js
generated
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
var assert = require('assert');
|
||||
var traverse = require('traverse');
|
||||
|
||||
exports.super_deep = function () {
|
||||
var util = require('util');
|
||||
var a0 = make();
|
||||
var a1 = make();
|
||||
assert.ok(traverse.deepEqual(a0, a1));
|
||||
|
||||
a0.c.d.moo = true;
|
||||
assert.ok(!traverse.deepEqual(a0, a1));
|
||||
|
||||
a1.c.d.moo = true;
|
||||
assert.ok(traverse.deepEqual(a0, a1));
|
||||
|
||||
// TODO: this one
|
||||
//a0.c.a = a1;
|
||||
//assert.ok(!traverse.deepEqual(a0, a1));
|
||||
};
|
||||
|
||||
function make () {
|
||||
var a = { self : 'a' };
|
||||
var b = { self : 'b' };
|
||||
var c = { self : 'c' };
|
||||
var d = { self : 'd' };
|
||||
var e = { self : 'e' };
|
||||
|
||||
a.a = a;
|
||||
a.b = b;
|
||||
a.c = c;
|
||||
|
||||
b.a = a;
|
||||
b.b = b;
|
||||
b.c = c;
|
||||
|
||||
c.a = a;
|
||||
c.b = b;
|
||||
c.c = c;
|
||||
c.d = d;
|
||||
|
||||
d.a = a;
|
||||
d.b = b;
|
||||
d.c = c;
|
||||
d.d = d;
|
||||
d.e = e;
|
||||
|
||||
e.a = a;
|
||||
e.b = b;
|
||||
e.c = c;
|
||||
e.d = d;
|
||||
e.e = e;
|
||||
|
||||
return a;
|
||||
}
|
Reference in New Issue
Block a user