| // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| /// A light-weight replacement for package:unittest. This library runs tests |
| /// synchronously, and avoids using reflection. |
| library light_unittest; |
| |
| import 'dart:async'; |
| |
| import 'async_helper.dart'; |
| import '../pkg/expect/lib/expect.dart'; |
| |
| test(name, f) { |
| print('Testing $name'); |
| try { |
| f(); |
| print('PASS: $name'); |
| } catch (e, trace) { |
| print('FAIL: $name.'); |
| print(e); |
| print(trace); |
| asyncStart(); |
| Timer.run(() { throw new StateError('FAILED: $name.\n$e\n$trace'); }); |
| } |
| } |
| |
| expect(actual, expected) { |
| if (expected is Expectation) { |
| expected.check(actual); |
| } else { |
| Expect.equals(expected, actual); |
| } |
| } |
| |
| class Expectation { |
| final check; |
| Expectation(this.check); |
| } |
| |
| equals(expected) { |
| if (expected is List) { |
| return new Expectation((actual) => Expect.listEquals(expected, actual)); |
| } else if (expected is Map) { |
| return new Expectation((actual) => Expect.mapEquals(expected, actual)); |
| } else if (expected is Set) { |
| return new Expectation((actual) => Expect.setEquals(expected, actual)); |
| } else if (expected is String) { |
| return new Expectation((actual) => Expect.stringEquals(expected, actual)); |
| } else { |
| return new Expectation((actual) => Expect.equals(expected, actual)); |
| } |
| } |
| |
| get throws => new Expectation((actual) => Expect.throws(actual)); |
| |
| get isTrue => new Expectation((actual) => Expect.isTrue(actual)); |
| |
| expectAsync1(then) { |
| asyncStart(); |
| return (x) { |
| asyncEnd(); |
| return then(x); |
| }; |
| } |