| /* -*- Mode: js; js-indent-level: 2; -*- */ |
| /* |
| * Copyright 2011 Mozilla Foundation and contributors |
| * Licensed under the New BSD license. See LICENSE or: |
| * http://opensource.org/licenses/BSD-3-Clause |
| */ |
| if (typeof define !== 'function') { |
| var define = require('amdefine')(module, require); |
| } |
| define(function (require, exports, module) { |
| |
| var ArraySet = require('../../lib/source-map/array-set').ArraySet; |
| |
| function makeTestSet() { |
| var set = new ArraySet(); |
| for (var i = 0; i < 100; i++) { |
| set.add(String(i)); |
| } |
| return set; |
| } |
| |
| exports['test .has() membership'] = function (assert, util) { |
| var set = makeTestSet(); |
| for (var i = 0; i < 100; i++) { |
| assert.ok(set.has(String(i))); |
| } |
| }; |
| |
| exports['test .indexOf() elements'] = function (assert, util) { |
| var set = makeTestSet(); |
| for (var i = 0; i < 100; i++) { |
| assert.strictEqual(set.indexOf(String(i)), i); |
| } |
| }; |
| |
| exports['test .at() indexing'] = function (assert, util) { |
| var set = makeTestSet(); |
| for (var i = 0; i < 100; i++) { |
| assert.strictEqual(set.at(i), String(i)); |
| } |
| }; |
| |
| exports['test creating from an array'] = function (assert, util) { |
| var set = ArraySet.fromArray(['foo', 'bar', 'baz', 'quux', 'hasOwnProperty']); |
| |
| assert.ok(set.has('foo')); |
| assert.ok(set.has('bar')); |
| assert.ok(set.has('baz')); |
| assert.ok(set.has('quux')); |
| assert.ok(set.has('hasOwnProperty')); |
| |
| assert.strictEqual(set.indexOf('foo'), 0); |
| assert.strictEqual(set.indexOf('bar'), 1); |
| assert.strictEqual(set.indexOf('baz'), 2); |
| assert.strictEqual(set.indexOf('quux'), 3); |
| |
| assert.strictEqual(set.at(0), 'foo'); |
| assert.strictEqual(set.at(1), 'bar'); |
| assert.strictEqual(set.at(2), 'baz'); |
| assert.strictEqual(set.at(3), 'quux'); |
| }; |
| |
| exports['test that you can add __proto__; see github issue #30'] = function (assert, util) { |
| var set = new ArraySet(); |
| set.add('__proto__'); |
| assert.ok(set.has('__proto__')); |
| assert.strictEqual(set.at(0), '__proto__'); |
| assert.strictEqual(set.indexOf('__proto__'), 0); |
| }; |
| |
| exports['test .fromArray() with duplicates'] = function (assert, util) { |
| var set = ArraySet.fromArray(['foo', 'foo']); |
| assert.ok(set.has('foo')); |
| assert.strictEqual(set.at(0), 'foo'); |
| assert.strictEqual(set.indexOf('foo'), 0); |
| assert.strictEqual(set.toArray().length, 1); |
| |
| set = ArraySet.fromArray(['foo', 'foo'], true); |
| assert.ok(set.has('foo')); |
| assert.strictEqual(set.at(0), 'foo'); |
| assert.strictEqual(set.at(1), 'foo'); |
| assert.strictEqual(set.indexOf('foo'), 0); |
| assert.strictEqual(set.toArray().length, 2); |
| }; |
| |
| exports['test .add() with duplicates'] = function (assert, util) { |
| var set = new ArraySet(); |
| set.add('foo'); |
| |
| set.add('foo'); |
| assert.ok(set.has('foo')); |
| assert.strictEqual(set.at(0), 'foo'); |
| assert.strictEqual(set.indexOf('foo'), 0); |
| assert.strictEqual(set.toArray().length, 1); |
| |
| set.add('foo', true); |
| assert.ok(set.has('foo')); |
| assert.strictEqual(set.at(0), 'foo'); |
| assert.strictEqual(set.at(1), 'foo'); |
| assert.strictEqual(set.indexOf('foo'), 0); |
| assert.strictEqual(set.toArray().length, 2); |
| }; |
| |
| }); |