describe('Object', function () { | |
"use strict"; | |
describe("Object.keys", function () { | |
var obj = { | |
"str": "boz", | |
"obj": { }, | |
"arr": [], | |
"bool": true, | |
"num": 42, | |
"null": null, | |
"undefined": undefined | |
}; | |
var loopedValues = []; | |
for (var k in obj) { | |
loopedValues.push(k); | |
} | |
var keys = Object.keys(obj); | |
it('should have correct length', function () { | |
expect(keys.length).toBe(7); | |
}); | |
it('should return an Array', function () { | |
expect(Array.isArray(keys)).toBe(true); | |
}); | |
it('should return names which are own properties', function () { | |
keys.forEach(function (name) { | |
expect(obj.hasOwnProperty(name)).toBe(true); | |
}); | |
}); | |
it('should return names which are enumerable', function () { | |
keys.forEach(function (name) { | |
expect(loopedValues.indexOf(name)).toNotBe(-1); | |
}) | |
}); | |
it('should throw error for non object', function () { | |
var e = {}; | |
expect(function () { | |
try { | |
Object.keys(42) | |
} catch (err) { | |
throw e; | |
} | |
}).toThrow(e); | |
}); | |
}); | |
describe("Object.isExtensible", function () { | |
var obj = { }; | |
it('should return true if object is extensible', function () { | |
expect(Object.isExtensible(obj)).toBe(true); | |
}); | |
it('should return false if object is not extensible', function () { | |
expect(Object.isExtensible(Object.preventExtensions(obj))).toBe(false); | |
}); | |
it('should return false if object is seal', function () { | |
expect(Object.isExtensible(Object.seal(obj))).toBe(false); | |
}); | |
it('should return false if object is freeze', function () { | |
expect(Object.isExtensible(Object.freeze(obj))).toBe(false); | |
}); | |
it('should throw error for non object', function () { | |
var e1 = {}; | |
expect(function () { | |
try { | |
Object.isExtensible(42) | |
} catch (err) { | |
throw e1; | |
} | |
}).toThrow(e1); | |
}); | |
}); | |
}); |