conditional
Version:
A preconditions package based on Google's Preconditions library
182 lines (177 loc) • 6.16 kB
JavaScript
(function() {
var IllegalArgumentError, UnknownValueError, checkContains;
require('./helpers/test_helper');
checkContains = preconditions.checkContains, UnknownValueError = preconditions.UnknownValueError, IllegalArgumentError = preconditions.IllegalArgumentError;
describe('test contains precondition', function() {
describe('tests with strings', function() {
it('string array test', function() {
var wrapper;
wrapper = function() {
return checkContains('a', ['a', 'b', 'c']);
};
return assert.doesNotThrow(wrapper);
});
it('empty string test', function() {
var wrapper;
wrapper = function() {
return checkContains('', ['a', 'b', ''], 'empty string present');
};
return assert.doesNotThrow(wrapper);
});
it('string and number are different types', function() {
var wrapper;
wrapper = function() {
return checkContains('5', ['a', 'b', 5], '5 not present');
};
assert.throws(wrapper, UnknownValueError, '5 not present');
wrapper = function() {
return checkContains(5, ['a', 'b', '5'], '5 not present');
};
return assert.throws(wrapper, UnknownValueError, '5 not present');
});
it('unequal string do not contain each other', function() {
var wrapper;
wrapper = function() {
return checkContains('random', 'string');
};
return assert.throws(wrapper, UnknownValueError, "unknown value 'random'");
});
it('equal strings also contain each other', function() {
var wrapper;
wrapper = function() {
return checkContains('string', 'string');
};
return assert.doesNotThrow;
});
it('substring of a string', function() {
var wrapper;
wrapper = function() {
return checkContains('str', 'string');
};
return assert.doesNotThrow;
});
it('empty string can contain empty string', function() {
var wrapper;
wrapper = function() {
return checkContains('', '');
};
return assert.doesNotThrow(wrapper);
});
return it('empty string cannot contain non-empty string', function() {
var wrapper;
wrapper = function() {
return checkContains('str', '');
};
return assert.throws(wrapper, UnknownValueError, "unknown value 'str'");
});
});
describe('tests for null values', function() {
it('null value test', function() {
var wrapper;
wrapper = function() {
return checkContains(null, ['a', 'b', 'null'], 'null value missing');
};
assert.throws(wrapper, UnknownValueError, 'null value missing');
wrapper = function() {
return checkContains(null, ['a', 'b', null], 'null value present');
};
return assert.doesNotThrow(wrapper);
});
it('null and 0 are not same', function() {
var wrapper;
wrapper = function() {
return checkContains(null, ['a', 'b', 0], 'null not present');
};
assert.throws(wrapper, UnknownValueError, 'null not present');
wrapper = function() {
return checkContains(0, ['a', 'b', null], '0 not present');
};
return assert.throws(wrapper, UnknownValueError, '0 not present');
});
it('IllegalArgumentError is thrown for null collection object', function() {
var wrapper;
wrapper = function() {
return checkContains('a', null, 'this message is hidden');
};
return assert.throws(wrapper, IllegalArgumentError, 'invalid collection value');
});
return it('null is not same as empty string', function() {
var wrapper;
wrapper = function() {
return checkContains(null, '');
};
return assert.throws(wrapper, UnknownValueError, "unknown value 'null'");
});
});
describe('tests for objects', function() {
it('object can be checked in array', function() {
var obj1, obj2, obj3, wrapper;
obj1 = [1];
obj2 = {
'test': 'test'
};
obj3 = null;
wrapper = function() {
checkContains(obj1, [obj1, obj2, obj3]);
checkContains(obj2, [obj1, obj2, obj3]);
return checkContains(obj3, [obj1, obj2, obj3]);
};
return assert.doesNotThrow(wrapper);
});
it('a hash map can contain string keys', function() {
var map, wrapper;
map = {
val1: 1,
val2: 2,
val3: 3
};
wrapper = function() {
return checkContains('val1', map);
};
return assert.doesNotThrow(wrapper);
});
return it('a hash map can contain number keys', function() {
var map, wrapper;
map = {
1: 1,
2: 2,
3: 3
};
wrapper = function() {
return checkContains(1, map);
};
return assert.doesNotThrow(wrapper);
});
});
return describe('tests for numbers', function() {
it('check number contains another', function() {
var wrapper;
wrapper = function() {
return checkContains(1, 123);
};
return assert.doesNotThrow(wrapper);
});
it('check number not present in another number', function() {
var wrapper;
wrapper = function() {
return checkContains(4, 123);
};
return assert.throws(wrapper, UnknownValueError, "unknown value '4'");
});
it('check string contained in number', function() {
var wrapper;
wrapper = function() {
return checkContains('1', 123);
};
return assert.doesNotThrow(wrapper);
});
return it('check string missing from number', function() {
var wrapper;
wrapper = function() {
return checkContains('4', 123);
};
return assert.throws(wrapper, UnknownValueError, "unknown value '4'");
});
});
});
}).call(this);