2014-10-02 15:27:01 -04:00
|
|
|
library test_lib.test_lib;
|
2014-09-30 14:56:33 -04:00
|
|
|
|
|
|
|
import 'package:guinness/guinness_html.dart' as gns;
|
|
|
|
export 'package:guinness/guinness_html.dart';
|
|
|
|
import 'package:unittest/unittest.dart' hide expect;
|
|
|
|
import 'dart:mirrors';
|
|
|
|
import 'dart:async';
|
2014-11-20 15:07:48 -05:00
|
|
|
import 'package:reflection/reflection.dart';
|
|
|
|
import 'package:reflection/reflection_capabilities.dart';
|
2014-09-30 14:56:33 -04:00
|
|
|
|
2014-11-07 12:31:51 -05:00
|
|
|
bool IS_DARTIUM = true;
|
|
|
|
|
2014-09-30 14:56:33 -04:00
|
|
|
Expect expect(actual, [matcher]) {
|
|
|
|
final expect = new Expect(actual);
|
|
|
|
if (matcher != null) expect.to(matcher);
|
|
|
|
return expect;
|
|
|
|
}
|
|
|
|
|
|
|
|
class Expect extends gns.Expect {
|
|
|
|
Expect(actual) : super(actual);
|
|
|
|
|
2014-10-29 14:26:52 -04:00
|
|
|
NotExpect get not => new NotExpect(actual);
|
|
|
|
|
|
|
|
void toEqual(expected) => toHaveSameProps(expected);
|
2014-10-20 15:17:06 -04:00
|
|
|
void toThrowError([message=""]) => this.toThrowWith(message: message);
|
2014-10-10 15:44:56 -04:00
|
|
|
void toBePromise() => _expect(actual is Future, equals(true));
|
2014-09-30 14:56:33 -04:00
|
|
|
Function get _expect => gns.guinness.matchers.expect;
|
|
|
|
}
|
|
|
|
|
2014-10-29 14:26:52 -04:00
|
|
|
class NotExpect extends gns.NotExpect {
|
|
|
|
NotExpect(actual) : super(actual);
|
|
|
|
|
|
|
|
void toEqual(expected) => toHaveSameProps(expected);
|
|
|
|
}
|
|
|
|
|
2014-11-21 18:13:01 -05:00
|
|
|
beforeEach(fn) {
|
|
|
|
gns.beforeEach(_enableReflection(fn));
|
|
|
|
}
|
|
|
|
|
2014-09-30 14:56:33 -04:00
|
|
|
it(name, fn) {
|
2014-11-20 15:07:48 -05:00
|
|
|
gns.it(name, _enableReflection(_handleAsync(fn)));
|
2014-09-30 14:56:33 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
iit(name, fn) {
|
2014-11-20 15:07:48 -05:00
|
|
|
gns.iit(name, _enableReflection(_handleAsync(fn)));
|
|
|
|
}
|
|
|
|
|
|
|
|
_enableReflection(fn) {
|
|
|
|
return () {
|
|
|
|
reflector.reflectionCapabilities = new ReflectionCapabilities();
|
|
|
|
return fn();
|
|
|
|
};
|
2014-09-30 14:56:33 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
_handleAsync(fn) {
|
|
|
|
ClosureMirror cm = reflect(fn);
|
|
|
|
MethodMirror mm = cm.function;
|
|
|
|
|
|
|
|
var completer = new Completer();
|
|
|
|
|
|
|
|
if (mm.parameters.length == 1) {
|
|
|
|
return () {
|
|
|
|
cm.apply([completer.complete]);
|
|
|
|
return completer.future;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
return fn;
|
2014-12-05 21:30:45 -05:00
|
|
|
}
|