2014-09-25 14:04:46 -07:00
|
|
|
export var describe = window.describe;
|
2014-10-01 22:05:46 -07:00
|
|
|
export var xdescribe = window.xdescribe;
|
2014-09-28 13:55:01 -07:00
|
|
|
export var ddescribe = window.ddescribe;
|
2014-09-25 14:04:46 -07:00
|
|
|
export var it = window.it;
|
2014-10-01 22:05:46 -07:00
|
|
|
export var xit = window.xit;
|
2014-09-28 13:55:01 -07:00
|
|
|
export var iit = window.iit;
|
2014-09-25 14:04:46 -07:00
|
|
|
export var beforeEach = window.beforeEach;
|
|
|
|
export var afterEach = window.afterEach;
|
|
|
|
export var expect = window.expect;
|
2014-11-07 09:31:51 -08:00
|
|
|
export var IS_DARTIUM = false;
|
2014-09-25 14:04:46 -07:00
|
|
|
|
|
|
|
// To make testing consistent between dart and js
|
2014-09-26 17:38:38 -07:00
|
|
|
window.print = function(msg) {
|
|
|
|
if (window.dump) {
|
|
|
|
window.dump(msg);
|
|
|
|
} else {
|
|
|
|
window.console.log(msg);
|
|
|
|
}
|
|
|
|
};
|
2014-09-30 14:56:33 -04:00
|
|
|
|
|
|
|
window.beforeEach(function() {
|
|
|
|
jasmine.addMatchers({
|
2014-11-17 17:39:39 -08:00
|
|
|
// Custom handler for Map to give nice error messages in JavaScript
|
|
|
|
toEqual: function(util, customEqualityTesters) {
|
|
|
|
return {
|
|
|
|
compare: function(actual, expected) {
|
|
|
|
var pass;
|
|
|
|
if (actual instanceof Map) {
|
|
|
|
pass = actual.size === expected.size;
|
|
|
|
if (pass) {
|
|
|
|
actual.forEach( (v,k) => {
|
|
|
|
pass = pass && util.equals(v, expected.get(k));
|
|
|
|
});
|
|
|
|
}
|
|
|
|
return {
|
|
|
|
pass: pass,
|
|
|
|
get message() {
|
|
|
|
return `Expected ${mapToString(actual)} ${(pass ? 'not' : '')} to equal to ${mapToString(expected)}`;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
} else {
|
|
|
|
return {
|
|
|
|
pass: util.equals(actual, expected)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
},
|
|
|
|
|
2014-10-10 15:44:56 -04:00
|
|
|
toBePromise: function() {
|
2014-09-30 14:56:33 -04:00
|
|
|
return {
|
|
|
|
compare: function (actual, expectedClass) {
|
|
|
|
var pass = typeof actual === 'object' && typeof actual.then === 'function';
|
|
|
|
return {
|
|
|
|
pass: pass,
|
|
|
|
get message() {
|
2014-10-10 15:44:56 -04:00
|
|
|
return 'Expected ' + actual + ' to be a promise';
|
2014-09-30 14:56:33 -04:00
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
};
|
|
|
|
},
|
|
|
|
|
|
|
|
toBeAnInstanceOf: function() {
|
|
|
|
return {
|
|
|
|
compare: function(actual, expectedClass) {
|
|
|
|
var pass = typeof actual === 'object' && actual instanceof expectedClass;
|
|
|
|
return {
|
|
|
|
pass: pass,
|
|
|
|
get message() {
|
|
|
|
return 'Expected ' + actual + ' to be an instance of ' + expectedClass;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
};
|
2014-11-25 15:16:53 -08:00
|
|
|
},
|
|
|
|
|
|
|
|
toImplement: function() {
|
|
|
|
return {
|
|
|
|
compare: function(actualObject, expectedInterface) {
|
|
|
|
var objProps = Object.keys(actualObject.constructor.prototype);
|
|
|
|
var intProps = Object.keys(expectedInterface.prototype);
|
|
|
|
|
|
|
|
var missedMethods = [];
|
|
|
|
intProps.forEach((k) => {
|
|
|
|
if (!actualObject.constructor.prototype[k]) missedMethods.push(k);
|
|
|
|
});
|
|
|
|
|
|
|
|
return {
|
|
|
|
pass: missedMethods.length == 0,
|
|
|
|
get message() {
|
|
|
|
return 'Expected ' + actualObject + ' to have the following methods: ' + missedMethods.join(", ");
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|
|
|
|
};
|
2014-09-30 14:56:33 -04:00
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
2014-11-17 17:39:39 -08:00
|
|
|
|
2014-11-25 15:16:53 -08:00
|
|
|
export class SpyObject {
|
|
|
|
spy(name){
|
|
|
|
if (! this[name]) {
|
|
|
|
this[name] = this._createGuinnessCompatibleSpy();
|
|
|
|
}
|
|
|
|
return this[name];
|
|
|
|
}
|
|
|
|
|
|
|
|
rttsAssert(value) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
_createGuinnessCompatibleSpy(){
|
|
|
|
var newSpy = jasmine.createSpy();
|
|
|
|
newSpy.andCallFake = newSpy.and.callFake;
|
|
|
|
return newSpy;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2014-11-17 17:39:39 -08:00
|
|
|
function mapToString(m) {
|
|
|
|
if (!m) {
|
|
|
|
return ''+m;
|
|
|
|
}
|
|
|
|
var res = [];
|
|
|
|
m.forEach( (v,k) => {
|
|
|
|
res.push(`${k}:${v}`);
|
|
|
|
});
|
|
|
|
return `{ ${res.join(',')} }`;
|
|
|
|
}
|