summaryrefslogtreecommitdiffstats
path: root/addon-sdk/source/test/traits/utils.js
blob: 8426af7de62c1f6f5429c3d97121c7de9608ec49 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

"use strict";

var ERR_CONFLICT = "Remaining conflicting property: ";
var ERR_REQUIRED = "Missing required property: ";

exports.Data = function Data(value, enumerable, configurable, writable) {
  return ({
    value: value,
    enumerable: enumerable !== false,
    configurable: configurable !== false,
    writable: writable !== false
  });
};

exports.Method = function Method(method, enumerable, configurable, writable) {
  return ({
    value: method,
    enumerable: enumerable !== false,
    configurable: configurable !== false,
    writable: writable !== false
  });
};

exports.Accessor = function Accessor(get, set, enumerable, configurable) {
  return ({
    get: get,
    set: set,
    enumerable: enumerable !== false,
    configurable: configurable !== false
  });
};

exports.Required = function Required(name) {
  function required() { throw new Error(ERR_REQUIRED + name) }

  return ({
    get: required,
    set: required,
    required: true
  });
};

exports.Conflict = function Conflict(name) {
  function conflict() { throw new Error(ERR_CONFLICT + name) }

  return ({
    get: conflict,
    set: conflict,
    conflict: true
  });
};