|
1 /* |
|
2 * WARNING! |
|
3 * |
|
4 * Do not edit this file directly, it is built from the sources at |
|
5 * https://github.com/mozilla/source-map/ |
|
6 */ |
|
7 |
|
8 Components.utils.import('resource://test/Utils.jsm'); |
|
9 /* -*- Mode: js; js-indent-level: 2; -*- */ |
|
10 /* |
|
11 * Copyright 2011 Mozilla Foundation and contributors |
|
12 * Licensed under the New BSD license. See LICENSE or: |
|
13 * http://opensource.org/licenses/BSD-3-Clause |
|
14 */ |
|
15 define("test/source-map/test-array-set", ["require", "exports", "module"], function (require, exports, module) { |
|
16 |
|
17 var ArraySet = require('source-map/array-set').ArraySet; |
|
18 |
|
19 function makeTestSet() { |
|
20 var set = new ArraySet(); |
|
21 for (var i = 0; i < 100; i++) { |
|
22 set.add(String(i)); |
|
23 } |
|
24 return set; |
|
25 } |
|
26 |
|
27 exports['test .has() membership'] = function (assert, util) { |
|
28 var set = makeTestSet(); |
|
29 for (var i = 0; i < 100; i++) { |
|
30 assert.ok(set.has(String(i))); |
|
31 } |
|
32 }; |
|
33 |
|
34 exports['test .indexOf() elements'] = function (assert, util) { |
|
35 var set = makeTestSet(); |
|
36 for (var i = 0; i < 100; i++) { |
|
37 assert.strictEqual(set.indexOf(String(i)), i); |
|
38 } |
|
39 }; |
|
40 |
|
41 exports['test .at() indexing'] = function (assert, util) { |
|
42 var set = makeTestSet(); |
|
43 for (var i = 0; i < 100; i++) { |
|
44 assert.strictEqual(set.at(i), String(i)); |
|
45 } |
|
46 }; |
|
47 |
|
48 exports['test creating from an array'] = function (assert, util) { |
|
49 var set = ArraySet.fromArray(['foo', 'bar', 'baz', 'quux', 'hasOwnProperty']); |
|
50 |
|
51 assert.ok(set.has('foo')); |
|
52 assert.ok(set.has('bar')); |
|
53 assert.ok(set.has('baz')); |
|
54 assert.ok(set.has('quux')); |
|
55 assert.ok(set.has('hasOwnProperty')); |
|
56 |
|
57 assert.strictEqual(set.indexOf('foo'), 0); |
|
58 assert.strictEqual(set.indexOf('bar'), 1); |
|
59 assert.strictEqual(set.indexOf('baz'), 2); |
|
60 assert.strictEqual(set.indexOf('quux'), 3); |
|
61 |
|
62 assert.strictEqual(set.at(0), 'foo'); |
|
63 assert.strictEqual(set.at(1), 'bar'); |
|
64 assert.strictEqual(set.at(2), 'baz'); |
|
65 assert.strictEqual(set.at(3), 'quux'); |
|
66 }; |
|
67 |
|
68 exports['test that you can add __proto__; see github issue #30'] = function (assert, util) { |
|
69 var set = new ArraySet(); |
|
70 set.add('__proto__'); |
|
71 assert.ok(set.has('__proto__')); |
|
72 assert.strictEqual(set.at(0), '__proto__'); |
|
73 assert.strictEqual(set.indexOf('__proto__'), 0); |
|
74 }; |
|
75 |
|
76 exports['test .fromArray() with duplicates'] = function (assert, util) { |
|
77 var set = ArraySet.fromArray(['foo', 'foo']); |
|
78 assert.ok(set.has('foo')); |
|
79 assert.strictEqual(set.at(0), 'foo'); |
|
80 assert.strictEqual(set.indexOf('foo'), 0); |
|
81 assert.strictEqual(set.toArray().length, 1); |
|
82 |
|
83 set = ArraySet.fromArray(['foo', 'foo'], true); |
|
84 assert.ok(set.has('foo')); |
|
85 assert.strictEqual(set.at(0), 'foo'); |
|
86 assert.strictEqual(set.at(1), 'foo'); |
|
87 assert.strictEqual(set.indexOf('foo'), 0); |
|
88 assert.strictEqual(set.toArray().length, 2); |
|
89 }; |
|
90 |
|
91 exports['test .add() with duplicates'] = function (assert, util) { |
|
92 var set = new ArraySet(); |
|
93 set.add('foo'); |
|
94 |
|
95 set.add('foo'); |
|
96 assert.ok(set.has('foo')); |
|
97 assert.strictEqual(set.at(0), 'foo'); |
|
98 assert.strictEqual(set.indexOf('foo'), 0); |
|
99 assert.strictEqual(set.toArray().length, 1); |
|
100 |
|
101 set.add('foo', true); |
|
102 assert.ok(set.has('foo')); |
|
103 assert.strictEqual(set.at(0), 'foo'); |
|
104 assert.strictEqual(set.at(1), 'foo'); |
|
105 assert.strictEqual(set.indexOf('foo'), 0); |
|
106 assert.strictEqual(set.toArray().length, 2); |
|
107 }; |
|
108 |
|
109 }); |
|
110 function run_test() { |
|
111 runSourceMapTests('test/source-map/test-array-set', do_throw); |
|
112 } |