Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Unified Diff: test/codegen/expect/unittest.js

Issue 1321683004: use the real matchers for running language tests (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: add TODO Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: test/codegen/expect/unittest.js
diff --git a/test/codegen/expect/unittest.js b/test/codegen/expect/unittest.js
index e6b818c85e45ed285b3940614ad1a35155a6f7e8..abc813b08aac12cb97b51ea14435d16111152fd7 100644
--- a/test/codegen/expect/unittest.js
+++ b/test/codegen/expect/unittest.js
@@ -1,12 +1,17 @@
dart_library.library('unittest', null, /* Imports */[
"dart_runtime/dart",
+ 'matcher/matcher',
'dom/dom',
'dart/core',
- 'dart/async'
+ 'dart/async',
+ 'matcher/src/interfaces',
+ 'matcher/src/util',
+ 'matcher/src/description'
], /* Lazy imports */[
-], function(exports, dart, dom, core, async) {
+], function(exports, dart, matcher, dom, core, async, interfaces, util, description$) {
'use strict';
let dartx = dart.dartx;
+ dart.export(exports, matcher);
function group(name, body) {
return dart.dsend(dom.window, 'suite', name, body);
}
@@ -30,108 +35,62 @@ dart_library.library('unittest', null, /* Imports */[
}));
}
dart.fn(test, dart.void, [core.String, dart.functionType(dart.dynamic, [])], {skip: core.String});
- function expect(actual, matcher) {
- if (!dart.is(matcher, Matcher))
- matcher = equals(matcher);
- if (!dart.notNull(dart.as(dart.dcall(matcher, actual), core.bool))) {
- dart.throw(`Expect failed to match ${actual} with ${matcher}`);
+ class TestFailure extends core.Object {
+ TestFailure(message) {
+ this.message = message;
}
- }
- dart.fn(expect, dart.void, [core.Object, dart.dynamic]);
- function fail(message) {
- dart.throw('TestFailure: ' + dart.notNull(message));
- }
- dart.fn(fail, dart.void, [core.String]);
- function equals(expected) {
- return dart.fn(actual => {
- if (dart.is(expected, core.List) && dart.is(actual, core.List)) {
- let len = expected[dartx.length];
- if (!dart.equals(len, dart.dload(actual, 'length')))
- return false;
- for (let i = 0; dart.notNull(i) < dart.notNull(len); i = dart.notNull(i) + 1) {
- if (!dart.notNull(dart.as(dart.dcall(equals(expected[dartx.get](i)), dart.dindex(actual, i)), core.bool)))
- return false;
- }
- return true;
- } else {
- return dart.equals(expected, actual);
- }
- });
- }
- dart.fn(equals, () => dart.definiteFunctionType(Matcher, [core.Object]));
- function same(expected) {
- return dart.fn(actual => core.identical(expected, actual), core.bool, [dart.dynamic]);
- }
- dart.fn(same, () => dart.definiteFunctionType(Matcher, [core.Object]));
- function isNot(matcher) {
- if (!dart.is(matcher, Matcher))
- matcher = equals(matcher);
- return dart.fn(actual => !dart.notNull(dart.as(dart.dcall(matcher, actual), core.bool)), core.bool, [dart.dynamic]);
- }
- dart.fn(isNot, () => dart.definiteFunctionType(Matcher, [dart.dynamic]));
- function isTrue(actual) {
- return dart.equals(actual, true);
- }
- dart.fn(isTrue, core.bool, [dart.dynamic]);
- function isNull(actual) {
- return actual == null;
- }
- dart.fn(isNull, core.bool, [dart.dynamic]);
- dart.defineLazyProperties(exports, {
- get isNotNull() {
- return isNot(isNull);
+ toString() {
+ return this.message;
}
- });
- function isRangeError(actual) {
- return dart.is(actual, core.RangeError);
- }
- dart.fn(isRangeError, core.bool, [dart.dynamic]);
- function isNoSuchMethodError(actual) {
- return dart.is(actual, core.NoSuchMethodError);
- }
- dart.fn(isNoSuchMethodError, core.bool, [dart.dynamic]);
- function lessThan(expected) {
- return dart.fn(actual => dart.dsend(actual, '<', expected));
}
- dart.fn(lessThan, () => dart.definiteFunctionType(Matcher, [dart.dynamic]));
- function greaterThan(expected) {
- return dart.fn(actual => dart.dsend(actual, '>', expected));
- }
- dart.fn(greaterThan, () => dart.definiteFunctionType(Matcher, [dart.dynamic]));
- function throwsA(matcher) {
- if (!dart.is(matcher, Matcher))
- matcher = equals(matcher);
- return dart.fn(actual => {
- try {
- dart.dcall(actual);
- return false;
- } catch (e) {
- return dart.dcall(matcher, e);
+ dart.setSignature(TestFailure, {
+ constructors: () => ({TestFailure: [TestFailure, [core.String]]})
+ });
+ let ErrorFormatter = dart.typedef('ErrorFormatter', () => dart.functionType(core.String, [dart.dynamic, interfaces.Matcher, core.String, core.Map, core.bool]));
+ function expect(actual, matcher, opts) {
+ let reason = opts && 'reason' in opts ? opts.reason : null;
+ let verbose = opts && 'verbose' in opts ? opts.verbose : false;
+ let formatter = opts && 'formatter' in opts ? opts.formatter : null;
+ matcher = util.wrapMatcher(matcher);
+ let matchState = dart.map();
+ try {
+ if (dart.notNull(dart.as(dart.dsend(matcher, 'matches', actual, matchState), core.bool)))
+ return;
+ } catch (e) {
+ let trace = dart.stackTrace(e);
+ if (reason == null) {
+ reason = `${typeof e == 'string' ? e : dart.toString(e)} at ${trace}`;
}
+ }
- });
+ if (formatter == null)
+ formatter = _defaultFailFormatter;
+ fail(dart.dcall(formatter, actual, matcher, reason, matchState, verbose));
}
- dart.fn(throwsA, () => dart.definiteFunctionType(Matcher, [dart.dynamic]));
- dart.defineLazyProperties(exports, {
- get throws() {
- return throwsA(dart.fn(a => true, core.bool, [dart.dynamic]));
+ dart.fn(expect, dart.void, [dart.dynamic, dart.dynamic], {reason: core.String, verbose: core.bool, formatter: ErrorFormatter});
+ function fail(message) {
+ return dart.throw(new TestFailure(message));
+ }
+ dart.fn(fail, dart.void, [core.String]);
+ function _defaultFailFormatter(actual, matcher, reason, matchState, verbose) {
+ let description = new description$.StringDescription();
+ description.add('Expected: ').addDescriptionOf(matcher).add('\n');
+ description.add(' Actual: ').addDescriptionOf(actual).add('\n');
+ let mismatchDescription = new description$.StringDescription();
+ matcher.describeMismatch(actual, mismatchDescription, matchState, verbose);
+ if (dart.notNull(mismatchDescription.length) > 0) {
+ description.add(` Which: ${mismatchDescription}\n`);
}
- });
- let Matcher = dart.typedef('Matcher', () => dart.functionType(dart.dynamic, [dart.dynamic]));
+ if (reason != null)
+ description.add(reason).add('\n');
+ return dart.toString(description);
+ }
+ dart.fn(_defaultFailFormatter, core.String, [dart.dynamic, interfaces.Matcher, core.String, core.Map, core.bool]);
// Exports:
exports.group = group;
exports.test = test;
+ exports.TestFailure = TestFailure;
+ exports.ErrorFormatter = ErrorFormatter;
exports.expect = expect;
exports.fail = fail;
- exports.equals = equals;
- exports.same = same;
- exports.isNot = isNot;
- exports.isTrue = isTrue;
- exports.isNull = isNull;
- exports.isRangeError = isRangeError;
- exports.isNoSuchMethodError = isNoSuchMethodError;
- exports.lessThan = lessThan;
- exports.greaterThan = greaterThan;
- exports.throwsA = throwsA;
- exports.Matcher = Matcher;
});
« karma.conf.js ('K') | « karma.conf.js ('k') | test/codegen/expect/unittest.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698