blob: c11031c251168ed0a9dd90a14bbce0edbdfe848b [file] [log] [blame]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
var r = typeof this;
WScript.LoadScriptFile("..\\UnitTestFramework\\UnitTestFramework.js");
var tests = [
{
name: "typeof global this is 'object'",
body: function () {
assert.areEqual('object', r, "'typeof this' is 'object' for the global this");
}
},
{
name: "typeof nested function this",
body: function () {
function foo() {
return typeof this;
}
assert.areEqual('object', foo(), "'typeof this' is 'object' for nested function this called with default 'this' binding");
assert.areEqual('function', foo.call(foo), "'typeof this' should be 'function' when 'this' binding is overriden");
function bar() {
"use strict";
return typeof this;
}
assert.areEqual('undefined', bar(), "'typeof this' is 'undefined' for nested strict function this called with default 'this' binding");
assert.areEqual('function', bar.call(bar), "'typeof this' should be 'function' when 'this' binding is overriden");
}
},
{
name: "typeof nested function new.target",
body: function () {
var out = 'wrong';
function foo() {
out = typeof new.target;
}
foo();
assert.areEqual('undefined', out, "'typeof new.target' is 'undefined' for normal function call");
new foo();
assert.areEqual('function', out, "'typeof new.target' is 'function' for function called as constructor");
}
},
];
testRunner.runTests(tests, { verbose: WScript.Arguments[0] != "summary" });