mirror of
https://github.com/zulip/zulip.git
synced 2025-11-12 18:06:44 +00:00
The functions add_dependencies() and set_global() are convenience methods that allow you to modify the global namespace while the current file is running but then have it be cleaned up by index.js when you're done. (imported from commit f75b8a10c19f773a8d2d3a8fa4bc39b1679566fe)
107 lines
2.6 KiB
JavaScript
107 lines
2.6 KiB
JavaScript
add_dependencies({
|
|
_: 'third/underscore/underscore.js'
|
|
});
|
|
|
|
var _ = global._;
|
|
var Dict = require('js/dict.js');
|
|
var assert = require('assert');
|
|
|
|
(function test_basic() {
|
|
var d = new Dict();
|
|
|
|
assert.deepEqual(d.keys(), []);
|
|
|
|
d.set('foo', 'bar');
|
|
assert.equal(d.get('foo'), 'bar');
|
|
|
|
d.set('foo', 'baz');
|
|
assert.equal(d.get('foo'), 'baz');
|
|
|
|
d.set('bar', 'qux');
|
|
assert.equal(d.get('foo'), 'baz');
|
|
assert.equal(d.get('bar'), 'qux');
|
|
|
|
assert.equal(d.has('bar'), true);
|
|
assert.equal(d.has('baz'), false);
|
|
|
|
assert.deepEqual(d.keys(), ['foo', 'bar']);
|
|
assert.deepEqual(d.values(), ['baz', 'qux']);
|
|
assert.deepEqual(d.items(), [['foo', 'baz'], ['bar', 'qux']]);
|
|
|
|
d.del('bar');
|
|
assert.equal(d.has('bar'), false);
|
|
assert.strictEqual(d.get('bar'), undefined);
|
|
|
|
assert.deepEqual(d.keys(), ['foo']);
|
|
|
|
var val = ['foo'];
|
|
var res = d.set('abc', val);
|
|
assert.equal(val, res);
|
|
}());
|
|
|
|
(function test_restricted_keys() {
|
|
var d = new Dict();
|
|
|
|
assert.equal(d.has('__proto__'), false);
|
|
assert.equal(d.has('hasOwnProperty'), false);
|
|
assert.equal(d.has('toString'), false);
|
|
|
|
assert.strictEqual(d.get('__proto__'), undefined);
|
|
assert.strictEqual(d.get('hasOwnProperty'), undefined);
|
|
assert.strictEqual(d.get('toString'), undefined);
|
|
|
|
d.set('hasOwnProperty', function () {return true;});
|
|
assert.equal(d.has('blah'), false);
|
|
|
|
d.set('__proto__', 'foo');
|
|
d.set('foo', 'bar');
|
|
assert.equal(d.get('foo'), 'bar');
|
|
}());
|
|
|
|
(function test_construction() {
|
|
var d1 = new Dict();
|
|
|
|
assert.deepEqual(d1.items(), []);
|
|
|
|
var d2 = Dict.from({foo: 'bar', baz: 'qux'});
|
|
assert.deepEqual(d2.items(), [['foo', 'bar'], ['baz', 'qux']]);
|
|
|
|
var d3 = d2.clone();
|
|
d3.del('foo');
|
|
assert.deepEqual(d2.items(), [['foo', 'bar'], ['baz', 'qux']]);
|
|
assert.deepEqual(d3.items(), [['baz', 'qux']]);
|
|
}());
|
|
|
|
(function test_each() {
|
|
var d = new Dict();
|
|
d.set('apple', 40);
|
|
d.set('banana', 50);
|
|
d.set('carrot', 60);
|
|
|
|
var unseen_keys = d.keys();
|
|
|
|
var cnt = 0;
|
|
d.each(function (v, k) {
|
|
assert.equal(v, d.get(k));
|
|
unseen_keys = _.without(unseen_keys, k);
|
|
cnt += 1;
|
|
});
|
|
|
|
assert.equal(cnt, d.keys().length);
|
|
assert.equal(unseen_keys.length, 0);
|
|
}());
|
|
|
|
(function test_setdefault() {
|
|
var d = new Dict();
|
|
var val = ['foo'];
|
|
var res = d.setdefault('foo', val);
|
|
assert.equal(res, val);
|
|
assert.equal(d.has('foo'), true);
|
|
assert.equal(d.get('foo'), val);
|
|
|
|
var val2 = ['foo2'];
|
|
res = d.setdefault('foo', val2);
|
|
assert.equal(res, val);
|
|
assert.equal(d.get('foo'), val);
|
|
}());
|