UNPKG

menge

Version:

Minimalist set theory operations for Array-like objects in less than 1KB

52 lines (40 loc) 1.39 kB
#!/usr/bin/env ./node_modules/.bin/mocha -R spec var assert = require("assert"); var OBJECT = {"object": 1}; var ARRAY = ["array"]; var NUMBER = 0; var NULL = null; var UNDEFINED = void 0; var LIST1 = ["hoge", "pomu", "hoge", "hoge", "fuga", "fuga"]; var LIST2 = ["hoge", "pomu", "fuga"]; var testjs = __filename.replace(/^.*\//, ""); var mengejs = process.env.MENGEJS || "../menge.js"; var short = mengejs.replace(/^.*\//, ""); describe(testjs + " with " + short + " tests", function() { var menge = require(mengejs); it("unique(source)", function() { var source = new ArrayLike(LIST1); var result = menge.unique(source); assert.equal(source, result); assert.equal(join(LIST2), join(result)); assert.equal(3, source.length); // breaking assert.equal(3, result.length); }); it("unique(source, dest)", function() { var source = new ArrayLike(LIST1); var dest = new ArrayLike(); var result = menge.unique(source, dest); assert.equal(dest, result); assert.equal(join(LIST2), join(result)); assert.equal(6, source.length); // not breaking assert.equal(3, dest.length); assert.equal(3, result.length); }); }); function ArrayLike(array) { if (!(this instanceof ArrayLike)) return new ArrayLike(array); Array.prototype.push.apply(this, array); } function join(array) { return Array.prototype.join.call(array, ","); }