| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- var failed = 0;
- function runtest(name, func, throwException)
- {
- try
- {
- func();
- if (throwException)
- {
- WScript.Echo(name + ": Test failed, unexpected no exception thrown");
- failed++;
- }
- else
- {
- WScript.Echo(name + ": Test passed, expected no exception thrown");
- }
- }
- catch (e)
- {
- if (!throwException || (e.name != "TypeError" && e.name != "ReferenceError"))
- {
- WScript.Echo(name + ": test failed, unexpected " + e.name + "-" + e.message);
- failed++;
- }
- else
- {
- WScript.Echo(name + ": Test passed, expected " + e.name + "-" + e.message);
- }
- }
- }
- function assert(cond)
- {
- if (!cond)
- {
- throw new Error("AssertFailed");
- }
- }
- //-------------------------------------------------------------
- // Test 1 - throw, new integer value
- //-------------------------------------------------------------
- function test1()
- {
- var i = 1;
- new i;
- }
- //-------------------------------------------------------------
- // Test 2 - throw, new null constant
- //-------------------------------------------------------------
- function test2()
- {
- new null();
- }
- //-------------------------------------------------------------
- // Test 3 - throw, new int constant
- //-------------------------------------------------------------
- function test3()
- {
- new 1();
- }
- //-------------------------------------------------------------
- // Test 4 - success, plain old new Object()
- //-------------------------------------------------------------
- function test4()
- {
- var o = new Object();
- }
- //-------------------------------------------------------------
- // Test 5 - throw, new object reference
- //-------------------------------------------------------------
- function test5()
- {
- var o = new Object();
- new o;
- }
- //-------------------------------------------------------------
- // Test 6 - throw, new undefined "Blah"
- //-------------------------------------------------------------
- function test6()
- {
- new Blah();
- }
- //-------------------------------------------------------------
- // Test 7 - throw, new object reference
- //-------------------------------------------------------------
- function test7()
- {
- var o = new Object();
- new o;
- }
- //-------------------------------------------------------------
- // Test 8 - success, new function with prototype and field init
- //-------------------------------------------------------------
- function ClassProto()
- {
- this.hello = "yay"
- }
- ClassProto.prototype.func = function()
- {
- return 3;
- }
- function test8()
- {
- var o = new ClassProto();
- assert(o.constructor == ClassProto);
- assert(o.hello == "yay");
- assert(o.func() == 3);
- }
- //-------------------------------------------------
- // Test 9 - success, new plain function without prototype
- //-------------------------------------------------
- function PlainFunction()
- {
- this.hello = "yay2";
- }
- function test9()
- {
- var o = new PlainFunction();
- assert(o.constructor == PlainFunction);
- assert(o.hello == "yay2");
- }
- runtest("test1", test1, true);
- runtest("test2", test2, true);
- runtest("test3", test3, true);
- runtest("test4", test4, false);
- runtest("test5", test5, true);
- runtest("test6", test6, true);
- runtest("test7", test7, true);
- runtest("test8", test8, false);
- runtest("test9", test9, false);
- if (failed == 0)
- {
- WScript.Echo("Passed");
- }
|