michael@0: /* michael@0: * WARNING! michael@0: * michael@0: * Do not edit this file directly, it is built from the sources at michael@0: * https://github.com/mozilla/source-map/ michael@0: */ michael@0: michael@0: Components.utils.import('resource://test/Utils.jsm'); michael@0: /* -*- Mode: js; js-indent-level: 2; -*- */ michael@0: /* michael@0: * Copyright 2011 Mozilla Foundation and contributors michael@0: * Licensed under the New BSD license. See LICENSE or: michael@0: * http://opensource.org/licenses/BSD-3-Clause michael@0: */ michael@0: define("test/source-map/test-array-set", ["require", "exports", "module"], function (require, exports, module) { michael@0: michael@0: var ArraySet = require('source-map/array-set').ArraySet; michael@0: michael@0: function makeTestSet() { michael@0: var set = new ArraySet(); michael@0: for (var i = 0; i < 100; i++) { michael@0: set.add(String(i)); michael@0: } michael@0: return set; michael@0: } michael@0: michael@0: exports['test .has() membership'] = function (assert, util) { michael@0: var set = makeTestSet(); michael@0: for (var i = 0; i < 100; i++) { michael@0: assert.ok(set.has(String(i))); michael@0: } michael@0: }; michael@0: michael@0: exports['test .indexOf() elements'] = function (assert, util) { michael@0: var set = makeTestSet(); michael@0: for (var i = 0; i < 100; i++) { michael@0: assert.strictEqual(set.indexOf(String(i)), i); michael@0: } michael@0: }; michael@0: michael@0: exports['test .at() indexing'] = function (assert, util) { michael@0: var set = makeTestSet(); michael@0: for (var i = 0; i < 100; i++) { michael@0: assert.strictEqual(set.at(i), String(i)); michael@0: } michael@0: }; michael@0: michael@0: exports['test creating from an array'] = function (assert, util) { michael@0: var set = ArraySet.fromArray(['foo', 'bar', 'baz', 'quux', 'hasOwnProperty']); michael@0: michael@0: assert.ok(set.has('foo')); michael@0: assert.ok(set.has('bar')); michael@0: assert.ok(set.has('baz')); michael@0: assert.ok(set.has('quux')); michael@0: assert.ok(set.has('hasOwnProperty')); michael@0: michael@0: assert.strictEqual(set.indexOf('foo'), 0); michael@0: assert.strictEqual(set.indexOf('bar'), 1); michael@0: assert.strictEqual(set.indexOf('baz'), 2); michael@0: assert.strictEqual(set.indexOf('quux'), 3); michael@0: michael@0: assert.strictEqual(set.at(0), 'foo'); michael@0: assert.strictEqual(set.at(1), 'bar'); michael@0: assert.strictEqual(set.at(2), 'baz'); michael@0: assert.strictEqual(set.at(3), 'quux'); michael@0: }; michael@0: michael@0: exports['test that you can add __proto__; see github issue #30'] = function (assert, util) { michael@0: var set = new ArraySet(); michael@0: set.add('__proto__'); michael@0: assert.ok(set.has('__proto__')); michael@0: assert.strictEqual(set.at(0), '__proto__'); michael@0: assert.strictEqual(set.indexOf('__proto__'), 0); michael@0: }; michael@0: michael@0: exports['test .fromArray() with duplicates'] = function (assert, util) { michael@0: var set = ArraySet.fromArray(['foo', 'foo']); michael@0: assert.ok(set.has('foo')); michael@0: assert.strictEqual(set.at(0), 'foo'); michael@0: assert.strictEqual(set.indexOf('foo'), 0); michael@0: assert.strictEqual(set.toArray().length, 1); michael@0: michael@0: set = ArraySet.fromArray(['foo', 'foo'], true); michael@0: assert.ok(set.has('foo')); michael@0: assert.strictEqual(set.at(0), 'foo'); michael@0: assert.strictEqual(set.at(1), 'foo'); michael@0: assert.strictEqual(set.indexOf('foo'), 0); michael@0: assert.strictEqual(set.toArray().length, 2); michael@0: }; michael@0: michael@0: exports['test .add() with duplicates'] = function (assert, util) { michael@0: var set = new ArraySet(); michael@0: set.add('foo'); michael@0: michael@0: set.add('foo'); michael@0: assert.ok(set.has('foo')); michael@0: assert.strictEqual(set.at(0), 'foo'); michael@0: assert.strictEqual(set.indexOf('foo'), 0); michael@0: assert.strictEqual(set.toArray().length, 1); michael@0: michael@0: set.add('foo', true); michael@0: assert.ok(set.has('foo')); michael@0: assert.strictEqual(set.at(0), 'foo'); michael@0: assert.strictEqual(set.at(1), 'foo'); michael@0: assert.strictEqual(set.indexOf('foo'), 0); michael@0: assert.strictEqual(set.toArray().length, 2); michael@0: }; michael@0: michael@0: }); michael@0: function run_test() { michael@0: runSourceMapTests('test/source-map/test-array-set', do_throw); michael@0: }