mirror of
https://github.com/zulip/zulip.git
synced 2026-07-15 21:03:26 +08:00
Having to explicitly call out the underscore/Dict dependencies in nearly every test has proven to be more cumbersome than helpful. We never monkeypatch those modules in the tests. (imported from commit 49ef70c835edd4e22a5869eda9235ef3ffc3c59b)
125 lines
3.6 KiB
JavaScript
125 lines
3.6 KiB
JavaScript
var assert = require('assert');
|
|
|
|
add_dependencies({
|
|
util: 'js/util.js'
|
|
});
|
|
|
|
set_global('$', {});
|
|
|
|
var util = global.util;
|
|
|
|
(function test_CachedValue() {
|
|
var x = 5;
|
|
|
|
var cv = new util.CachedValue({
|
|
compute_value: function () {
|
|
return x * 2;
|
|
}
|
|
});
|
|
|
|
assert.equal(cv.get(), 10);
|
|
|
|
x = 6;
|
|
assert.equal(cv.get(), 10);
|
|
cv.reset();
|
|
assert.equal(cv.get(), 12);
|
|
|
|
}());
|
|
|
|
(function test_lower_bound() {
|
|
var arr = [10, 20, 30, 40, 50];
|
|
assert.equal(util.lower_bound(arr, 5), 0);
|
|
assert.equal(util.lower_bound(arr, 10), 0);
|
|
assert.equal(util.lower_bound(arr, 15), 1);
|
|
assert.equal(util.lower_bound(arr, 50), 4);
|
|
assert.equal(util.lower_bound(arr, 55), 5);
|
|
assert.equal(util.lower_bound(arr, 2, 4, 31), 3);
|
|
|
|
arr = [{x: 10}, {x: 20}, {x:30}];
|
|
|
|
function compare (a, b) {
|
|
return a.x < b;
|
|
}
|
|
|
|
assert.equal(util.lower_bound(arr, 5, compare), 0);
|
|
assert.equal(util.lower_bound(arr, 10, compare), 0);
|
|
assert.equal(util.lower_bound(arr, 15, compare), 1);
|
|
|
|
}());
|
|
|
|
(function test_same_recipient() {
|
|
assert(util.same_recipient(
|
|
{type: 'stream', stream: 'Foo', subject: 'Bar'},
|
|
{type: 'stream', stream: 'fOO', subject: 'bar'}
|
|
));
|
|
|
|
assert(!util.same_recipient(
|
|
{type: 'stream', stream: 'Foo', subject: 'Bar'},
|
|
{type: 'stream', stream: 'yo', subject: 'whatever'}
|
|
));
|
|
|
|
assert(util.same_recipient(
|
|
{type: 'private', reply_to: '[email protected],[email protected]'},
|
|
{type: 'private', reply_to: '[email protected],[email protected]'}
|
|
));
|
|
|
|
assert(!util.same_recipient(
|
|
{type: 'private', reply_to: '[email protected]'},
|
|
{type: 'private', reply_to: '[email protected]'}
|
|
));
|
|
}());
|
|
|
|
(function test_recipient_key() {
|
|
var message;
|
|
|
|
message = {type: 'stream', stream: 'Foo', subject: 'BAR'};
|
|
assert.equal(util.recipient_key(message), 'foo>bar');
|
|
|
|
global.$.trim = function (s) {
|
|
return s.trim();
|
|
};
|
|
message = {type: 'private', reply_to: ' [email protected], [email protected] '};
|
|
assert.equal(util.recipient_key(message), '[email protected],[email protected]');
|
|
|
|
}());
|
|
|
|
(function test_robust_uri_decode() {
|
|
assert.equal(util.robust_uri_decode('xxx%3Ayyy'), 'xxx:yyy');
|
|
assert.equal(util.robust_uri_decode('xxx%3'), 'xxx');
|
|
}());
|
|
|
|
|
|
(function test_array_compare() {
|
|
assert(util.array_compare([], []));
|
|
assert(util.array_compare([1,2,3], [1,2,3]));
|
|
assert(!util.array_compare([1,2], [1,2,3]));
|
|
assert(!util.array_compare([1,2,3], [1,2]));
|
|
}());
|
|
|
|
(function test_enforce_arity() {
|
|
function f1() {}
|
|
var eaf1 = util.enforce_arity(f1);
|
|
|
|
assert.doesNotThrow(function () { f1('foo'); });
|
|
assert.doesNotThrow(function () { eaf1(); });
|
|
assert.throws(function () { eaf1('foo'); }, /called with \d+ arguments/);
|
|
assert.throws(function () { eaf1('foo', 'bar'); }, /called with \d+ arguments/);
|
|
|
|
function f2(x) {}
|
|
var eaf2 = util.enforce_arity(f2);
|
|
|
|
assert.doesNotThrow(function () { f2(); });
|
|
assert.doesNotThrow(function () { eaf2('foo'); });
|
|
assert.throws(function () { eaf2(); }, /called with \d+ arguments/);
|
|
assert.throws(function () { eaf2('foo', 'bar'); }, /called with \d+ arguments/);
|
|
|
|
function f3(x, y) {}
|
|
var eaf3 = util.enforce_arity(f3);
|
|
|
|
assert.doesNotThrow(function () { f3(); });
|
|
assert.doesNotThrow(function () { eaf3('foo', 'bar'); });
|
|
assert.throws(function () { eaf3(); }, /called with \d+ arguments/);
|
|
assert.throws(function () { eaf3('foo'); }, /called with \d+ arguments/);
|
|
assert.throws(function () { eaf3('foo','bar', 'baz'); }, /called with \d+ arguments/);
|
|
}());
|