зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1326534 - Add assert.in for own properties; r=automatedtester
The implementation of the new library function `assert.in` is analogous to Python's `unittest.TestCase.assertIn`. MozReview-Commit-ID: 1pjS9ttPXgo --HG-- extra : rebase_source : 3f4121226d65f127fdf0c990915483659f3a7f93
This commit is contained in:
Родитель
4a5f5aabaf
Коммит
52426eb1ab
|
@ -212,6 +212,28 @@ assert.object = function (obj, msg = "") {
|
|||
return assert.that(o =>
|
||||
Object.prototype.toString.call(o) == "[object Object]", msg)(obj);
|
||||
};
|
||||
|
||||
/**
|
||||
* Asserts that |prop| is in |obj|.
|
||||
*
|
||||
* @param {?} prop
|
||||
* Own property to test if is in |obj|.
|
||||
* @param {?} obj
|
||||
* Object.
|
||||
* @param {string=} msg
|
||||
* Custom error message.
|
||||
*
|
||||
* @return {?}
|
||||
* Value of |obj|'s own property |prop|.
|
||||
*
|
||||
* @throws {InvalidArgumentError}
|
||||
* If |prop| is not in |obj|, or |obj| is not an object.
|
||||
*/
|
||||
assert.in = function (prop, obj, msg = "") {
|
||||
assert.object(obj, msg);
|
||||
msg = msg || error.pprint`Expected ${prop} in ${obj}`;
|
||||
assert.that(p => obj.hasOwnProperty(p), msg)(prop);
|
||||
return obj[prop];
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -76,6 +76,15 @@ add_test(function test_object() {
|
|||
run_next_test();
|
||||
});
|
||||
|
||||
add_test(function test_in() {
|
||||
assert.in("foo", {foo: 42});
|
||||
for (let typ of [{}, 42, true, null, undefined]) {
|
||||
Assert.throws(() => assert.in("foo", typ), InvalidArgumentError);
|
||||
}
|
||||
|
||||
run_next_test();
|
||||
});
|
||||
|
||||
add_test(function test_array() {
|
||||
assert.array([]);
|
||||
assert.array(new Array());
|
||||
|
|
Загрузка…
Ссылка в новой задаче