aboutsummaryrefslogtreecommitdiffstats
path: root/Godeps/_workspace/src/github.com/robertkrimen/otto/object_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'Godeps/_workspace/src/github.com/robertkrimen/otto/object_test.go')
-rw-r--r--Godeps/_workspace/src/github.com/robertkrimen/otto/object_test.go639
1 files changed, 0 insertions, 639 deletions
diff --git a/Godeps/_workspace/src/github.com/robertkrimen/otto/object_test.go b/Godeps/_workspace/src/github.com/robertkrimen/otto/object_test.go
deleted file mode 100644
index d1e90680b..000000000
--- a/Godeps/_workspace/src/github.com/robertkrimen/otto/object_test.go
+++ /dev/null
@@ -1,639 +0,0 @@
-package otto
-
-import (
- "testing"
-)
-
-func TestObject_(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- object := newObject(nil, "")
- is(object != nil, true)
-
- object.put("xyzzy", toValue("Nothing happens."), true)
- is(object.get("xyzzy"), "Nothing happens.")
-
- test(`
- var abc = Object.getOwnPropertyDescriptor(Object, "prototype");
- [ [ typeof Object.prototype, abc.writable, abc.enumerable, abc.configurable ],
- ];
- `, "object,false,false,false")
- })
-}
-
-func TestStringObject(t *testing.T) {
- tt(t, func() {
- object := New().runtime.newStringObject(toValue("xyzzy"))
- is(object.get("1"), "y")
- is(object.get("10"), "undefined")
- is(object.get("2"), "z")
- })
-}
-
-func TestObject_getPrototypeOf(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- abc = {};
- def = Object.getPrototypeOf(abc);
- ghi = Object.getPrototypeOf(def);
- [abc,def,ghi,ghi+""];
- `, "[object Object],[object Object],,null")
-
- test(`
- abc = Object.getOwnPropertyDescriptor(Object, "getPrototypeOf");
- [ abc.value === Object.getPrototypeOf, abc.writable, abc.enumerable, abc.configurable ];
- `, "true,true,false,true")
- })
-}
-
-func TestObject_new(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- [ new Object("abc"), new Object(2+2) ];
- `, "abc,4")
- })
-}
-
-func TestObject_create(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise: Object.create()`, "TypeError")
-
- test(`
- var abc = Object.create(null)
- var def = Object.create({x: 10, y: 20})
- var ghi = Object.create(Object.prototype)
-
- var jkl = Object.create({x: 10, y: 20}, {
- z: {
- value: 30,
- writable: true
- },
- // sum: {
- // get: function() {
- // return this.x + this.y + this.z
- // }
- // }
- });
- [ abc.prototype, def.x, def.y, ghi, jkl.x, jkl.y, jkl.z ]
- `, ",10,20,[object Object],10,20,30")
-
- test(`
- var properties = {};
- Object.defineProperty(properties, "abc", {
- value: {},
- enumerable: false
- });
- var mno = Object.create({}, properties);
- mno.hasOwnProperty("abc");
- `, false)
- })
-}
-
-func TestObject_toLocaleString(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- ({}).toLocaleString();
- `, "[object Object]")
-
- test(`
- object = {
- toString: function() {
- return "Nothing happens.";
- }
- };
- object.toLocaleString();
- `, "Nothing happens.")
- })
-}
-
-func TestObject_isExtensible(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise:
- Object.isExtensible();
- `, "TypeError")
-
- // FIXME terst, Why raise?
- test(`raise:
- Object.isExtensible({});
- `, true)
-
- test(`Object.isExtensible.length`, 1)
- test(`Object.isExtensible.prototype`, "undefined")
- })
-}
-
-func TestObject_preventExtensions(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise:
- Object.preventExtensions()
- `, "TypeError")
-
- test(`raise:
- var abc = { def: true };
- var ghi = Object.preventExtensions(abc);
- [ ghi.def === true, Object.isExtensible(abc), Object.isExtensible(ghi) ];
- `, "true,false,false")
-
- test(`
- var abc = new String();
- var def = Object.isExtensible(abc);
- Object.preventExtensions(abc);
- var ghi = false;
- try {
- Object.defineProperty(abc, "0", { value: "~" });
- } catch (err) {
- ghi = err instanceof TypeError;
- }
- [ def, ghi, abc.hasOwnProperty("0"), typeof abc[0] ];
- `, "true,true,false,undefined")
-
- test(`Object.preventExtensions.length`, 1)
- test(`Object.preventExtensions.prototype`, "undefined")
- })
-}
-
-func TestObject_isSealed(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Object.isSealed.length`, 1)
- test(`Object.isSealed.prototype`, "undefined")
- })
-}
-
-func TestObject_seal(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise: Object.seal()`, "TypeError")
-
- test(`
- var abc = {a:1,b:1,c:3};
- var sealed = Object.isSealed(abc);
- Object.seal(abc);
- [sealed, Object.isSealed(abc)];
- `, "false,true")
-
- test(`
- var abc = {a:1,b:1,c:3};
- var sealed = Object.isSealed(abc);
- var caught = false;
- Object.seal(abc);
- abc.b = 5;
- Object.defineProperty(abc, "a", {value:4});
- try {
- Object.defineProperty(abc, "a", {value:42,enumerable:false});
- } catch (e) {
- caught = e instanceof TypeError;
- }
- [sealed, Object.isSealed(abc), caught, abc.a, abc.b];
- `, "false,true,true,4,5")
-
- test(`Object.seal.length`, 1)
- test(`Object.seal.prototype`, "undefined")
- })
-}
-
-func TestObject_isFrozen(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise: Object.isFrozen()`, "TypeError")
- test(`Object.isFrozen(Object.preventExtensions({a:1}))`, false)
- test(`Object.isFrozen({})`, false)
-
- test(`
- var abc = {};
- Object.defineProperty(abc, "def", {
- value: "def",
- writable: true,
- configurable: false
- });
- Object.preventExtensions(abc);
- !Object.isFrozen(abc);
- `, true)
-
- test(`Object.isFrozen.length`, 1)
- test(`Object.isFrozen.prototype`, "undefined")
- })
-}
-
-func TestObject_freeze(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise: Object.freeze()`, "TypeError")
-
- test(`
- var abc = {a:1,b:2,c:3};
- var frozen = Object.isFrozen(abc);
- Object.freeze(abc);
- abc.b = 5;
- [frozen, Object.isFrozen(abc), abc.b];
- `, "false,true,2")
-
- test(`
- var abc = {a:1,b:2,c:3};
- var frozen = Object.isFrozen(abc);
- var caught = false;
- Object.freeze(abc);
- abc.b = 5;
- try {
- Object.defineProperty(abc, "a", {value:4});
- } catch (e) {
- caught = e instanceof TypeError;
- }
- [frozen, Object.isFrozen(abc), caught, abc.a, abc.b];
- `, "false,true,true,1,2")
-
- test(`Object.freeze.length`, 1)
- test(`Object.freeze.prototype`, "undefined")
- })
-}
-
-func TestObject_defineProperty(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- (function(abc, def, ghi){
- Object.defineProperty(arguments, "0", {
- enumerable: false
- });
- return true;
- })(0, 1, 2);
- `, true)
-
- test(`
- var abc = {};
- abc.def = 3.14; // Default: writable: true, enumerable: true, configurable: true
-
- Object.defineProperty(abc, "def", {
- value: 42
- });
-
- var ghi = Object.getOwnPropertyDescriptor(abc, "def");
- [ ghi.value, ghi.writable, ghi.enumerable, ghi.configurable ];
- `, "42,true,true,true")
-
- // Test that we handle the case of DefineOwnProperty
- // where [[Writable]] is something but [[Value]] is not
- test(`
- var abc = [];
- Object.defineProperty(abc, "0", { writable: false });
- 0 in abc;
- `, true)
-
- // Test that we handle the case of DefineOwnProperty
- // where [[Writable]] is something but [[Value]] is not
- // (and the property originally had something for [[Value]]
- test(`
- abc = {
- def: 42
- };
- Object.defineProperty(abc, "def", { writable: false });
- abc.def;
- `, 42)
- })
-}
-
-func TestObject_keys(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Object.keys({ abc:undefined, def:undefined })`, "abc,def")
-
- test(`
- function abc() {
- this.abc = undefined;
- this.def = undefined;
- }
- Object.keys(new abc())
- `, "abc,def")
-
- test(`
- function def() {
- this.ghi = undefined;
- }
- def.prototype = new abc();
- Object.keys(new def());
- `, "ghi")
-
- test(`
- var ghi = Object.create(
- {
- abc: undefined,
- def: undefined
- },
- {
- ghi: { value: undefined, enumerable: true },
- jkl: { value: undefined, enumerable: false }
- }
- );
- Object.keys(ghi);
- `, "ghi")
-
- test(`
- (function(abc, def, ghi){
- return Object.keys(arguments)
- })(undefined, undefined);
- `, "0,1")
-
- test(`
- (function(abc, def, ghi){
- return Object.keys(arguments)
- })(undefined, undefined, undefined, undefined);
- `, "0,1,2,3")
- })
-}
-
-func TestObject_getOwnPropertyNames(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Object.getOwnPropertyNames({ abc:undefined, def:undefined })`, "abc,def")
-
- test(`
- var ghi = Object.create(
- {
- abc: undefined,
- def: undefined
- },
- {
- ghi: { value: undefined, enumerable: true },
- jkl: { value: undefined, enumerable: false }
- }
- );
- Object.getOwnPropertyNames(ghi)
- `, "ghi,jkl")
- })
-}
-
-func TestObjectGetterSetter(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise:
- Object.create({}, {
- abc: {
- get: function(){
- return "true";
- },
- writable: true
- }
- }).abc;
- `, "TypeError")
-
- test(`raise:
- Object.create({}, {
- abc: {
- get: function(){
- return "true";
- },
- writable: false
- }
- }).abc;
- `, "TypeError")
-
- test(`
- Object.create({}, {
- abc: {
- get: function(){
- return "true";
- }
- }
- }).abc;
- `, "true")
-
- test(`
- Object.create({xyz:true},{abc:{get:function(){return this.xyx}}}).abc;
- Object.create({
- xyz: true
- }, {
- abc: {
- get: function(){
- return this.xyz;
- }
- }
- }).abc;
- `, true)
-
- test(`
- var abc = false;
- var def = Object.create({}, {
- xyz: {
- set: function(value) {
- abc = value;
- }
- }
- });
- def.xyz = true;
- [ abc ];
- `, "true")
-
- test(`
- var abc = {};
- Object.defineProperty(abc, "def", {
- value: "xyzzy",
- configurable: true
- });
- Object.preventExtensions(abc);
- Object.defineProperty(abc, "def", {
- get: function() {
- return 5;
- }
- });
- var def = Object.getOwnPropertyDescriptor(abc, "def");
- [ abc.def, typeof def.get, typeof def.set, typeof def.value, def.configurable, def.enumerable, typeof def.writable ];
- `, "5,function,undefined,undefined,true,false,undefined")
-
- test(`
- var abc = {};
- Object.defineProperty(abc, "def", {
- get: function() {
- return 5;
- }
- configurable: true
- });
- Object.preventExtensions(abc);
- Object.defineProperty(abc, "def", {
- value: "xyzzy",
- });
- var def = Object.getOwnPropertyDescriptor(abc, "def");
- [ abc.def, typeof def.get, typeof def.set, def.value, def.configurable, def.enumerable, def.writable ];
- `, "xyzzy,undefined,undefined,xyzzy,true,false,false")
-
- test(`
- var abc = {};
-
- function _get0() {
- return 10;
- }
-
- function _set(value) {
- abc.def = value;
- }
-
- Object.defineProperty(abc, "ghi", {
- get: _get0,
- set: _set,
- configurable: true
- });
-
- function _get1() {
- return 20;
- }
-
- Object.defineProperty(abc, "ghi", {
- get: _get0
- });
-
- var descriptor = Object.getOwnPropertyDescriptor(abc, "ghi");
- [ typeof descriptor.set ];
- `, "function")
-
- test(`raise:
- var abc = [];
- Object.defineProperty(abc, "length", {
- get: function () {
- return 2;
- }
- });
- `, "TypeError")
-
- test(`
- var abc = {};
-
- var getter = function() {
- return 1;
- }
-
- Object.defineProperty(abc, "def", {
- get: getter,
- configurable: false
- });
-
- var jkl = undefined;
- try {
- Object.defineProperty(abc, "def", {
- get: undefined
- });
- }
- catch (err) {
- jkl = err;
- }
- var ghi = Object.getOwnPropertyDescriptor(abc, "def");
- [ jkl instanceof TypeError, ghi.get === getter, ghi.configurable, ghi.enumerable ];
- `, "true,true,false,false")
-
- test(`
- var abc = {};
-
- var getter = function() {
- return 1;
- };
-
- Object.defineProperty(abc, "def", {
- get: getter
- });
-
- Object.defineProperty(abc, "def", {
- set: undefined
- });
-
- var ghi = Object.getOwnPropertyDescriptor(abc, "def");
- [ ghi.get === getter, ghi.set === undefined, ghi.configurable, ghi.enumerable ];
- `, "true,true,false,false")
-
- test(`
- var abc = {};
-
- var getter = function() {
- return 1;
- };
-
- Object.defineProperty(abc, "def", {
- get: getter
- });
-
- var jkl = undefined;
- try {
- Object.defineProperty(abc, "def", {
- set: function() {}
- });
- }
- catch (err) {
- jkl = err;
- }
-
- var ghi = Object.getOwnPropertyDescriptor(abc, "def");
- [ jkl instanceof TypeError, ghi.get === getter, ghi.set, ghi.configurable, ghi.enumerable ];
- `, "true,true,,false,false")
-
- test(`
- var abc = {};
- var def = "xyzzy";
-
- Object.defineProperty(abc, "ghi", {
- get: undefined,
- set: function(value) {
- def = value;
- },
- enumerable: true,
- configurable: true
- });
-
- var hasOwn = abc.hasOwnProperty("ghi");
- var descriptor = Object.getOwnPropertyDescriptor(abc, "ghi");
-
- [ hasOwn, typeof descriptor.get ];
- `, "true,undefined")
-
- test(`
- var abc = "xyzzy";
- Object.defineProperty(Array.prototype, "abc", {
- get: function () {
- return abc;
- },
- set: function (value) {
- abc = value;
- },
- enumerable: true,
- configurable: true
- });
- var def = [];
- def.abc = 3.14159;
- [ def.hasOwnProperty("abc"), def.abc, abc ];
- `, "false,3.14159,3.14159")
- })
-}
-
-func TestProperty(t *testing.T) {
- tt(t, func() {
- property := _property{}
- property.writeOn()
- is(property.writeSet(), true)
-
- property.writeClear()
- is(property.writeSet(), false)
-
- property.writeOff()
- is(property.writeSet(), true)
-
- property.writeClear()
- is(property.writeSet(), false)
- })
-}