// Copyright (C) 2016 the V8 project authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /*--- esid: sec-integer-indexed-exotic-objects-defineownproperty-p-desc description: > Returns false if numericIndex is not an integer info: | 9.4.5.3 [[DefineOwnProperty]] ( P, Desc) ... 3. If Type(P) is String, then a. Let numericIndex be ! CanonicalNumericIndexString(P). b. If numericIndex is not undefined, then i. If IsInteger(numericIndex) is false, return false. ... includes: [testTypedArray.js] features: [Reflect, TypedArray] ---*/ testWithTypedArrayConstructors(function(TA) { var sample = new TA(2); assert.sameValue( Reflect.defineProperty(sample, "0.1", { value: 42, configurable: false, enumerable: true, writable: true }), false, "0.1" ); assert.sameValue(sample[0], 0, "'0.1' - does not change the value for [0]"); assert.sameValue( sample["0.1"], undefined, "'0.1' - does not define a value for ['0.1']" ); assert.sameValue( Reflect.defineProperty(sample, "0.000001", { value: 42, configurable: false, enumerable: true, writable: true }), false, "0.000001" ); assert.sameValue( sample[0], 0, "'0.000001' - does not change the value for [0]" ); assert.sameValue( sample["0.000001"], undefined, "'0.000001' - does not define a value for ['0.000001']" ); assert.sameValue( Reflect.defineProperty(sample, "1.1", { value: 42, configurable: false, enumerable: true, writable: true }), false, "1.1" ); assert.sameValue(sample[1], 0, "'1.1' - does not change the value for [1]"); assert.sameValue( sample["1.1"], undefined, "'1.1' - does not define a value for ['1.1']" ); assert.sameValue( Reflect.defineProperty(sample, "Infinity", { value: 42, configurable: false, enumerable: true, writable: true }), false, "Infinity" ); assert.sameValue( sample[0], 0, "'Infinity' - does not change the value for [0]" ); assert.sameValue( sample[1], 0, "'Infinity' - does not change the value for [1]" ); assert.sameValue( sample["Infinity"], undefined, "'Infinity' - does not define a value for ['Infinity']" ); assert.sameValue( Reflect.defineProperty(sample, "-Infinity", { value: 42, configurable: false, enumerable: true, writable: true }), false, "-Infinity" ); assert.sameValue( sample[0], 0, "'-Infinity' - does not change the value for [0]" ); assert.sameValue( sample[1], 0, "'-Infinity' - does not change the value for [1]" ); assert.sameValue( sample["-Infinity"], undefined, "'-Infinity' - does not define a value for ['-Infinity']" ); }); reportCompare(0, 0);