aboutsummaryrefslogtreecommitdiffstats
path: root/Godeps/_workspace/src/github.com/obscuren/otto/function_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'Godeps/_workspace/src/github.com/obscuren/otto/function_test.go')
-rw-r--r--Godeps/_workspace/src/github.com/obscuren/otto/function_test.go272
1 files changed, 0 insertions, 272 deletions
diff --git a/Godeps/_workspace/src/github.com/obscuren/otto/function_test.go b/Godeps/_workspace/src/github.com/obscuren/otto/function_test.go
deleted file mode 100644
index bd438022d..000000000
--- a/Godeps/_workspace/src/github.com/obscuren/otto/function_test.go
+++ /dev/null
@@ -1,272 +0,0 @@
-package otto
-
-import (
- "testing"
-)
-
-func TestFunction(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc = Object.getOwnPropertyDescriptor(Function, "prototype");
- [ [ typeof Function.prototype, typeof Function.prototype.length, Function.prototype.length ],
- [ abc.writable, abc.enumerable, abc.configurable ] ];
- `, "function,number,0,false,false,false")
- })
-}
-
-func Test_argumentList2parameterList(t *testing.T) {
- tt(t, func() {
- is(argumentList2parameterList([]Value{toValue("abc, def"), toValue("ghi")}), []string{"abc", "def", "ghi"})
- })
-}
-
-func TestFunction_new(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise:
- new Function({});
- `, "SyntaxError: Unexpected identifier")
-
- test(`
- var abc = Function("def, ghi", "jkl", "return def+ghi+jkl");
- [ typeof abc, abc instanceof Function, abc("ab", "ba", 1) ];
- `, "function,true,abba1")
-
- test(`raise:
- var abc = {
- toString: function() { throw 1; }
- };
- var def = {
- toString: function() { throw 2; }
- };
- var ghi = new Function(abc, def);
- ghi;
- `, "1")
-
- // S15.3.2.1_A3_T10
- test(`raise:
- var abc = {
- toString: function() { return "z;x"; }
- };
- var def = "return this";
- var ghi = new Function(abc, def);
- ghi;
- `, "SyntaxError: Unexpected token ;")
-
- test(`raise:
- var abc;
- var def = "return true";
- var ghi = new Function(null, def);
- ghi;
- `, "SyntaxError: Unexpected token null")
- })
-}
-
-func TestFunction_apply(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Function.prototype.apply.length`, 2)
- test(`String.prototype.substring.apply("abc", [1, 11])`, "bc")
- })
-}
-
-func TestFunction_call(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`Function.prototype.call.length`, 1)
- test(`String.prototype.substring.call("abc", 1, 11)`, "bc")
- })
-}
-
-func TestFunctionArguments(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- // Should not be able to delete arguments
- test(`
- function abc(def, arguments){
- delete def;
- return def;
- }
- abc(1);
- `, 1)
-
- // Again, should not be able to delete arguments
- test(`
- function abc(def){
- delete def;
- return def;
- }
- abc(1);
- `, 1)
-
- // Test typeof of a function argument
- test(`
- function abc(def, ghi, jkl){
- return typeof jkl
- }
- abc("1st", "2nd", "3rd", "4th", "5th");
- `, "string")
-
- test(`
- function abc(def, ghi, jkl){
- arguments[0] = 3.14;
- arguments[1] = 'Nothing happens';
- arguments[2] = 42;
- if (3.14 === def && 'Nothing happens' === ghi && 42 === jkl)
- return true;
- }
- abc(-1, 4.2, 314);
- `, true)
- })
-}
-
-func TestFunctionDeclarationInFunction(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- // Function declarations happen AFTER parameter/argument declarations
- // That is, a function declared within a function will shadow/overwrite
- // declared parameters
-
- test(`
- function abc(def){
- return def;
- function def(){
- return 1;
- }
- }
- typeof abc();
- `, "function")
- })
-}
-
-func TestArguments_defineOwnProperty(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`
- var abc;
- var def = true;
- var ghi = {};
- (function (a, b, c) {
- Object.defineProperty(arguments, "0", {
- value: 42,
- writable: false,
- enumerable: false,
- configurable: false
- });
- Object.defineProperty(arguments, "1", {
- value: 3.14,
- configurable: true,
- enumerable: true
- });
- abc = Object.getOwnPropertyDescriptor(arguments, "0");
- for (var name in arguments) {
- ghi[name] = (ghi[name] || 0) + 1;
- if (name === "0") {
- def = false;
- }
- }
- }(0, 1, 2));
- [ abc.value, abc.writable, abc.enumerable, abc.configurable, def, ghi["1"] ];
- `, "42,false,false,false,true,1")
- })
-}
-
-func TestFunction_bind(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- defer mockUTC()()
-
- test(`
- abc = function(){
- return "abc";
- };
- def = abc.bind();
- [ typeof def.prototype, typeof def.hasOwnProperty, def.hasOwnProperty("caller"), def.hasOwnProperty("arguments"), def() ];
- `, "object,function,true,true,abc")
-
- test(`
- abc = function(){
- return arguments[1];
- };
- def = abc.bind(undefined, "abc");
- ghi = abc.bind(undefined, "abc", "ghi");
- [ def(), def("def"), ghi("def") ];
- `, ",def,ghi")
-
- test(`
- var abc = function () {};
- var ghi;
- try {
- Object.defineProperty(Function.prototype, "xyzzy", {
- value: 1001,
- writable: true,
- enumerable: true,
- configurable: true
- });
- var def = abc.bind({});
- ghi = !def.hasOwnProperty("xyzzy") && ghi.xyzzy === 1001;
- } finally {
- delete Function.prototype.xyzzy;
- }
- [ ghi ];
- `, "true")
-
- test(`
- var abc = function (def, ghi) {};
- var jkl = abc.bind({});
- var mno = abc.bind({}, 1, 2);
- [ jkl.length, mno.length ];
- `, "2,0")
-
- test(`raise:
- Math.bind();
- `, "TypeError: undefined is not a function")
-
- test(`
- function construct(fn, arguments) {
- var bound = Function.prototype.bind.apply(fn, [null].concat(arguments));
- return new bound();
- }
- var abc = construct(Date, [1957, 4, 27]);
- Object.prototype.toString.call(abc);
- `, "[object Date]")
-
- test(`
- var fn = function (x, y, z) {
- var result = {};
- result.abc = x + y + z;
- result.def = arguments[0] === "a" && arguments.length === 3;
- return result;
- };
- var newFn = Function.prototype.bind.call(fn, {}, "a", "b", "c");
- var result = new newFn();
- [ result.hasOwnProperty("abc"), result.hasOwnProperty("def"), result.abc, result.def ];
- `, "true,true,abc,true")
- })
-}
-
-func TestFunction_toString(t *testing.T) {
- tt(t, func() {
- test, _ := test()
-
- test(`raise:
- Function.prototype.toString.call(undefined);
- `, "TypeError")
-
- test(`
- abc = function() { return -1 ;
-}
- 1;
- abc.toString();
- `, "function() { return -1 ;\n}")
- })
-}