| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- if (this.WScript && this.WScript.LoadScriptFile) { // Check for running in ch
- this.WScript.LoadScriptFile("..\\UnitTestFramework\\UnitTestFramework.js");
- }
- var tests = [
- {
- name : "NullTypeHandler basic functionality and sanity checks",
- body : function() {
- var objects = [
- Object.create({}),
- new Boolean(),
- Object.create(Promise.prototype),
- Function(""),
- new Number(),
- new String()
- ];
-
- for (var i = 1; i < objects.length; ++i) {
- var o = objects[i];
- assert.areEqual(undefined, o[0], "NullTypeHandler object with no properties returns undefined");
- assert.isFalse(o.hasOwnProperty('0'), "NullTypeHandler object with no properties returns false for hasOwnProperty");
- assert.isFalse(o.propertyIsEnumerable('0'), "NullTypeHandler object with no properties returns false for propertyIsEnumerable");
-
- for (var a in o) {
- assert.fail("Enumerating an empty object"); // Unreachable
- }
- o[0] = "str";
- assert.areEqual("str", o[0], "NullTypeHandler object with index property returns property correctly");
- assert.areEqual("str", o['0'], "NullTypeHandler object with index property returns property correctly");
- assert.isTrue(o.hasOwnProperty('0'), "NullTypeHandler object with index property returns true for hasOwnProperty");
- assert.isTrue(o.propertyIsEnumerable('0'), "NullTypeHandler object with index property returns true for propertyIsEnumerable");
-
- delete o[0];
- assert.areEqual(undefined, o[0], "NullTypeHandler objectwith deleted property returns undefined");
- assert.areEqual(undefined, o['0'], "NullTypeHandler objectwith deleted property returns undefined");
- assert.isFalse(o.hasOwnProperty('0'), "NullTypeHandler object with deleted property returns false for hasOwnProperty");
- assert.isFalse(o.propertyIsEnumerable('0'), "NullTypeHandler object with deleted property returns false for propertyIsEnumerable");
-
- for (var a in o) {
- assert.fail("Enumerating an empty object"); // Unreachable
- }
- o[0] = "str2";
- assert.areEqual("str2", o[0], "NullTypeHandler object with readded index property returns property correctly");
- assert.areEqual("str2", o['0'], "NullTypeHandler object with readded index property returns property correctly");
- assert.isTrue(o.hasOwnProperty('0'), "NullTypeHandler object with readded index property returns true for hasOwnProperty");
- assert.isTrue(o.propertyIsEnumerable('0'), "NullTypeHandler object readded with index property returns true for propertyIsEnumerable");
- }
- }
- },
- {
- name: "NullTypeHandler enumeration",
- body: function () {
- var obj1 = Object.create({});
- var obj2 = Object.create(null);
- var numProperties = 3;
-
- for (var i = 0; i < numProperties; ++i)
- {
- obj1[i] = i;
- assert.areEqual(obj1[i], i, "NullTypeHandler first enumeration object with index " + i + " equal to " + i);
- assert.isTrue(obj1.hasOwnProperty(i), "NullTypeHandler first enumeration object with index " + i + " returns true for hasOwnProperty");
- assert.isTrue(obj1.propertyIsEnumerable(i), "NullTypeHandler object first enumeration with index " + i + " returns true for propertyIsEnumerable");
- obj2[i] = i;
- assert.areEqual(obj2[i], i, "NullTypeHandler second enumeration object with index " + i + " equal to " + i);
- assert.isTrue(Object.prototype.hasOwnProperty.call(obj2, i), "NullTypeHandler first enumeration object with index " + i + " returns true for hasOwnProperty");
- assert.isTrue(Object.prototype.propertyIsEnumerable.call(obj2, i), "NullTypeHandler object first enumeration with index " + i + " returns true for propertyIsEnumerable");
- }
- var j = 0;
- for (var k in obj1)
- {
- ++j;
- }
- assert.areEqual(j, numProperties, "NullTypeHandler first enumeration object gives same number of properties");
- j = 0;
- for (var k in obj2)
- {
- ++j;
- }
- assert.areEqual(j, numProperties, "NullTypeHandler second enumeration object gives same number of properties");
- }
- }
- ];
- testRunner.runTests(tests, { verbose : WScript.Arguments[0] != "summary" });
|