1// Copyright JS Foundation and other contributors, http://js.foundation
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15var emptyObject = {}
16
17var propertyDescriptor = {
18  enumerable: true,
19  configurable: true,
20  value: "hello!",
21  writable: true
22}
23
24Object.defineProperty(emptyObject, 'myProperty', propertyDescriptor);
25
26var newPropertyDescriptor = {
27  enumerable: false,
28  configurable: false,
29  writable: false
30}
31
32Object.defineProperty(emptyObject, 'myProperty', newPropertyDescriptor); //change properties of property
33
34var isWritable = false;
35var isEnumerable = false;
36var isConfigurable = false;
37
38emptyObject.myProperty = "foobar";
39if (emptyObject.myProperty == "foobar")
40  isWritable = true;
41
42for (p in emptyObject) {
43  if (emptyObject[p] == "foobar") {
44    isEnumerable = true;
45    break;
46  }
47}
48
49if (delete emptyObject.myProperty)
50  isConfigurable = true;
51
52assert(!isWritable && !isEnumerable && !isConfigurable);
53