| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file | 
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a | 
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. | 
| 4 | 4 | 
| 5 /** | 5 /** | 
| 6  * This library contains an Expect class with static methods that can be used | 6  * This library contains an Expect class with static methods that can be used | 
| 7  * for simple unit-tests. | 7  * for simple unit-tests. | 
| 8  */ | 8  */ | 
| 9 library expect; | 9 library expect; | 
| 10 | 10 | 
| (...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 429   } | 429   } | 
| 430 | 430 | 
| 431   /** | 431   /** | 
| 432    * Calls the function [f] and verifies that it throws an exception. | 432    * Calls the function [f] and verifies that it throws an exception. | 
| 433    * The optional [check] function can provide additional validation | 433    * The optional [check] function can provide additional validation | 
| 434    * that the correct exception is being thrown.  For example, to check | 434    * that the correct exception is being thrown.  For example, to check | 
| 435    * the type of the exception you could write this: | 435    * the type of the exception you could write this: | 
| 436    * | 436    * | 
| 437    *     Expect.throws(myThrowingFunction, (e) => e is MyException); | 437    *     Expect.throws(myThrowingFunction, (e) => e is MyException); | 
| 438    */ | 438    */ | 
| 439   static void throws(void f(), | 439   static void throws(void f(), [_CheckExceptionFn check, String reason]) { | 
| 440       [_CheckExceptionFn check = null, String reason = null]) { |  | 
| 441     String msg = reason == null ? "" : "($reason)"; | 440     String msg = reason == null ? "" : "($reason)"; | 
| 442     if (f is! _Nullary) { | 441     if (f is! _Nullary) { | 
| 443       // Only throws from executing the function body should count as throwing. | 442       // Only throws from executing the function body should count as throwing. | 
| 444       // The failure to even call `f` should throw outside the try/catch. | 443       // The failure to even call `f` should throw outside the try/catch. | 
| 445       _fail("Expect.throws$msg: Function f not callable with zero arguments"); | 444       _fail("Expect.throws$msg: Function f not callable with zero arguments"); | 
| 446     } | 445     } | 
| 447     try { | 446     try { | 
| 448       f(); | 447       f(); | 
| 449     } catch (e, s) { | 448     } catch (e, s) { | 
| 450       if (check != null) { | 449       if (check != null) { | 
| 451         if (!check(e)) { | 450         if (!check(e)) { | 
| 452           _fail("Expect.throws$msg: Unexpected '$e'\n$s"); | 451           _fail("Expect.throws$msg: Unexpected '$e'\n$s"); | 
| 453         } | 452         } | 
| 454       } | 453       } | 
| 455       return; | 454       return; | 
| 456     } | 455     } | 
| 457     _fail('Expect.throws$msg fails: Did not throw'); | 456     _fail('Expect.throws$msg fails: Did not throw'); | 
| 458   } | 457   } | 
| 459 | 458 | 
|  | 459   static void throwsArgumentError(void f()) { | 
|  | 460     Expect.throws(f, (error) => error is ArgumentError, "ArgumentError"); | 
|  | 461   } | 
|  | 462 | 
|  | 463   static void throwsCastError(void f()) { | 
|  | 464     Expect.throws(f, (error) => error is CastError, "CastError"); | 
|  | 465   } | 
|  | 466 | 
|  | 467   static void throwsNoSuchMethodError(void f()) { | 
|  | 468     Expect.throws( | 
|  | 469         f, (error) => error is NoSuchMethodError, "NoSuchMethodError"); | 
|  | 470   } | 
|  | 471 | 
|  | 472   static void throwsRangeError(void f()) { | 
|  | 473     Expect.throws(f, (error) => error is RangeError, "RangeError"); | 
|  | 474   } | 
|  | 475 | 
|  | 476   static void throwsStateError(void f()) { | 
|  | 477     Expect.throws(f, (error) => error is StateError, "StateError"); | 
|  | 478   } | 
|  | 479 | 
|  | 480   static void throwsTypeError(void f()) { | 
|  | 481     Expect.throws(f, (error) => error is TypeError, "TypeError"); | 
|  | 482   } | 
|  | 483 | 
|  | 484   static void throwsUnsupportedError(void f()) { | 
|  | 485     Expect.throws(f, (error) => error is UnsupportedError, "UnsupportedError"); | 
|  | 486   } | 
|  | 487 | 
| 460   static String _getMessage(String reason) => | 488   static String _getMessage(String reason) => | 
| 461       (reason == null) ? "" : ", '$reason'"; | 489       (reason == null) ? "" : ", '$reason'"; | 
| 462 | 490 | 
| 463   static void _fail(String message) { | 491   static void _fail(String message) { | 
| 464     throw new ExpectException(message); | 492     throw new ExpectException(message); | 
| 465   } | 493   } | 
| 466 } | 494 } | 
| 467 | 495 | 
| 468 bool _identical(a, b) => identical(a, b); | 496 bool _identical(a, b) => identical(a, b); | 
| 469 | 497 | 
| (...skipping 28 matching lines...) Expand all  Loading... | 
| 498 | 526 | 
| 499 /// Annotation class for testing of dart2js. Use this as metadata on method | 527 /// Annotation class for testing of dart2js. Use this as metadata on method | 
| 500 /// declarations to disable closed world assumptions on parameters, effectively | 528 /// declarations to disable closed world assumptions on parameters, effectively | 
| 501 /// assuming that the runtime arguments could be any value. Note that the | 529 /// assuming that the runtime arguments could be any value. Note that the | 
| 502 /// constraints due to [TrustTypeAnnotations] still apply. | 530 /// constraints due to [TrustTypeAnnotations] still apply. | 
| 503 class AssumeDynamic { | 531 class AssumeDynamic { | 
| 504   const AssumeDynamic(); | 532   const AssumeDynamic(); | 
| 505 } | 533 } | 
| 506 | 534 | 
| 507 /// Is true iff type assertions are enabled. | 535 /// Is true iff type assertions are enabled. | 
|  | 536 // TODO(rnystrom): Remove this once all tests are no longer using it. | 
| 508 final bool typeAssertionsEnabled = (() { | 537 final bool typeAssertionsEnabled = (() { | 
| 509   try { | 538   try { | 
| 510     dynamic i = 42; | 539     dynamic i = 42; | 
| 511     String s = i; | 540     String s = i; | 
| 512   } on TypeError catch (e) { | 541   } on TypeError catch (e) { | 
| 513     return true; | 542     return true; | 
| 514   } | 543   } | 
| 515   return false; | 544   return false; | 
| 516 })(); | 545 })(); | 
| 517 | 546 | 
| 518 /// Is true iff `assert` statements are enabled. | 547 /// Is true iff `assert` statements are enabled. | 
| 519 final bool assertStatementsEnabled = (() { | 548 final bool assertStatementsEnabled = (() { | 
| 520   try { | 549   try { | 
| 521     assert(false); | 550     assert(false); | 
| 522   } on AssertionError catch (e) { | 551   } on AssertionError catch (e) { | 
| 523     return true; | 552     return true; | 
| 524   } | 553   } | 
| 525   return false; | 554   return false; | 
| 526 })(); | 555 })(); | 
| 527 | 556 | 
| 528 /// Is true iff checked mode is enabled. | 557 /// Is true iff checked mode is enabled. | 
|  | 558 // TODO(rnystrom): Remove this once all tests are no longer using it. | 
| 529 final bool checkedModeEnabled = | 559 final bool checkedModeEnabled = | 
| 530     typeAssertionsEnabled && assertStatementsEnabled; | 560     typeAssertionsEnabled && assertStatementsEnabled; | 
| OLD | NEW | 
|---|