mirror of
https://github.com/google/pebble.git
synced 2025-03-25 04:49:06 +00:00
85 lines
2.8 KiB
JavaScript
85 lines
2.8 KiB
JavaScript
// Copyright 2015 Samsung Electronics Co., Ltd.
|
|
// Copyright 2015 University of Szeged.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
var obj;
|
|
var desc;
|
|
|
|
obj = { bar: 42 };
|
|
desc = Object.getOwnPropertyDescriptor (obj, 'bar');
|
|
// desc is { configurable: true, enumerable: true, value: 42, writable: true }
|
|
assert (desc.value === 42);
|
|
assert (desc.configurable);
|
|
assert (desc.writable);
|
|
assert (desc.enumerable);
|
|
|
|
obj = { "foo": "bar" };
|
|
desc = Object.getOwnPropertyDescriptor (obj, 'foo');
|
|
assert (desc.value === "bar");
|
|
|
|
obj = {};
|
|
Object.defineProperty (obj, 'baz', { value: 8675309, writable: false, enumerable: false });
|
|
desc = Object.getOwnPropertyDescriptor (obj, 'baz');
|
|
// desc is { value: 8675309, writable: false, enumerable: false, configurable: false }
|
|
assert (desc.value === 8675309);
|
|
assert (!desc.configurable);
|
|
assert (!desc.writable);
|
|
assert (!desc.enumerable);
|
|
|
|
obj = { "0.00001": 1 };
|
|
desc = Object.getOwnPropertyDescriptor (obj, 1e-5);
|
|
assert ( desc.value === 1);
|
|
|
|
obj = { "123": 1 };
|
|
desc = Object.getOwnPropertyDescriptor (obj, 123);
|
|
assert (desc.value === 1);
|
|
|
|
obj = { "undefined": 1 };
|
|
var desc1 = Object.getOwnPropertyDescriptor (obj, undefined);
|
|
var desc2 = Object.getOwnPropertyDescriptor (obj, "undefined");
|
|
assert (desc1.value === 1 && desc2.value === 1);
|
|
|
|
obj = { "0": 1 };
|
|
desc = Object.getOwnPropertyDescriptor (obj, -0);
|
|
assert (desc.value === 1);
|
|
|
|
obj = { "Hellobj": 42 };
|
|
desc = Object.getOwnPropertyDescriptor (obj, new String ("Hellobj"));
|
|
assert (desc.value === 42);
|
|
|
|
obj = {};
|
|
desc = Object.getOwnPropertyDescriptor (obj, 'baz');
|
|
assert (desc === undefined);
|
|
|
|
obj = { get foo() { return obj.bar; }, set foo(a) { obj.bar = a; }, bar: 0 };
|
|
desc = Object.getOwnPropertyDescriptor(obj, 'foo');
|
|
// d is { configurable: true, enumerable: true, get: /*the getter function*/, set: /*the setter function*/ }
|
|
assert (typeof(desc.get) === 'function');
|
|
assert (typeof(desc.set) === 'function');
|
|
assert (desc.configurable);
|
|
assert (desc.enumerable);
|
|
assert (obj.foo === 0)
|
|
|
|
var array_desc = Object.getOwnPropertyDescriptor(Array, "prototype");
|
|
assert (array_desc.configurable === false);
|
|
assert (array_desc.writable === false);
|
|
assert (array_desc.enumerable === false);
|
|
|
|
var obj_undef;
|
|
try {
|
|
Object.getOwnPropertyDescriptor (obj_undef, "fail");
|
|
assert (false);
|
|
} catch (e) {
|
|
assert (e instanceof TypeError);
|
|
}
|