OLD | NEW |
1 // Copyright 2008 the V8 project authors. All rights reserved. | 1 // Copyright 2008 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 // Checks that the found value is *not* null. | 86 // Checks that the found value is *not* null. |
87 var assertNotNull; | 87 var assertNotNull; |
88 | 88 |
89 // Assert that the passed function or eval code throws an exception. | 89 // Assert that the passed function or eval code throws an exception. |
90 // The optional second argument is an exception constructor that the | 90 // The optional second argument is an exception constructor that the |
91 // thrown exception is checked against with "instanceof". | 91 // thrown exception is checked against with "instanceof". |
92 // The optional third argument is a message type string that is compared | 92 // The optional third argument is a message type string that is compared |
93 // to the type property on the thrown exception. | 93 // to the type property on the thrown exception. |
94 var assertThrows; | 94 var assertThrows; |
95 | 95 |
| 96 // Assert that the passed function throws an exception. |
| 97 // The exception is checked against the second argument using assertEquals. |
| 98 var assertThrowsEquals; |
| 99 |
96 // Assert that the passed function or eval code does not throw an exception. | 100 // Assert that the passed function or eval code does not throw an exception. |
97 var assertDoesNotThrow; | 101 var assertDoesNotThrow; |
98 | 102 |
99 // Asserts that the found value is an instance of the constructor passed | 103 // Asserts that the found value is an instance of the constructor passed |
100 // as the second argument. | 104 // as the second argument. |
101 var assertInstanceof; | 105 var assertInstanceof; |
102 | 106 |
103 // Assert that this code is never executed (i.e., always fails if executed). | 107 // Assert that this code is never executed (i.e., always fails if executed). |
104 var assertUnreachable; | 108 var assertUnreachable; |
105 | 109 |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
346 try { | 350 try { |
347 if (typeof code === 'function') { | 351 if (typeof code === 'function') { |
348 code(); | 352 code(); |
349 } else { | 353 } else { |
350 eval(code); | 354 eval(code); |
351 } | 355 } |
352 threwException = false; | 356 threwException = false; |
353 } catch (e) { | 357 } catch (e) { |
354 if (typeof type_opt === 'function') { | 358 if (typeof type_opt === 'function') { |
355 assertInstanceof(e, type_opt); | 359 assertInstanceof(e, type_opt); |
| 360 } else if (type_opt !== void 0) { |
| 361 fail("invalid use of assertThrows, maybe you want assertThrowsEquals"); |
356 } | 362 } |
357 if (arguments.length >= 3) { | 363 if (arguments.length >= 3) { |
358 assertEquals(e.type, cause_opt); | 364 assertEquals(e.type, cause_opt); |
359 } | 365 } |
360 // Success. | 366 // Success. |
361 return; | 367 return; |
362 } | 368 } |
363 throw new MjsUnitAssertionError("Did not throw exception"); | 369 throw new MjsUnitAssertionError("Did not throw exception"); |
364 }; | 370 }; |
365 | 371 |
366 | 372 |
| 373 assertThrowsEquals = function assertThrowsEquals(fun, val) { |
| 374 try { |
| 375 fun(); |
| 376 } catch(e) { |
| 377 assertEquals(val, e); |
| 378 return; |
| 379 } |
| 380 throw new MjsUnitAssertionError("Did not throw exception"); |
| 381 }; |
| 382 |
| 383 |
367 assertInstanceof = function assertInstanceof(obj, type) { | 384 assertInstanceof = function assertInstanceof(obj, type) { |
368 if (!(obj instanceof type)) { | 385 if (!(obj instanceof type)) { |
369 var actualTypeName = null; | 386 var actualTypeName = null; |
370 var actualConstructor = Object.getPrototypeOf(obj).constructor; | 387 var actualConstructor = Object.getPrototypeOf(obj).constructor; |
371 if (typeof actualConstructor === "function") { | 388 if (typeof actualConstructor === "function") { |
372 actualTypeName = actualConstructor.name || String(actualConstructor); | 389 actualTypeName = actualConstructor.name || String(actualConstructor); |
373 } | 390 } |
374 fail("Object <" + PrettyPrint(obj) + "> is not an instance of <" + | 391 fail("Object <" + PrettyPrint(obj) + "> is not an instance of <" + |
375 (type.name || type) + ">" + | 392 (type.name || type) + ">" + |
376 (actualTypeName ? " but of < " + actualTypeName + ">" : "")); | 393 (actualTypeName ? " but of < " + actualTypeName + ">" : "")); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
417 if (sync_opt === undefined) sync_opt = ""; | 434 if (sync_opt === undefined) sync_opt = ""; |
418 assertTrue(OptimizationStatus(fun, sync_opt) !== 1, name_opt); | 435 assertTrue(OptimizationStatus(fun, sync_opt) !== 1, name_opt); |
419 } | 436 } |
420 | 437 |
421 assertOptimized = function assertOptimized(fun, sync_opt, name_opt) { | 438 assertOptimized = function assertOptimized(fun, sync_opt, name_opt) { |
422 if (sync_opt === undefined) sync_opt = ""; | 439 if (sync_opt === undefined) sync_opt = ""; |
423 assertTrue(OptimizationStatus(fun, sync_opt) !== 2, name_opt); | 440 assertTrue(OptimizationStatus(fun, sync_opt) !== 2, name_opt); |
424 } | 441 } |
425 | 442 |
426 })(); | 443 })(); |
OLD | NEW |