186 lines
5.1 KiB
TypeScript
186 lines
5.1 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright Google Inc. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
* found in the LICENSE file at https://angular.io/license
|
|
*/
|
|
|
|
import '../lib/mocha/mocha';
|
|
declare const global: any;
|
|
|
|
((context: any) => {
|
|
context['jasmine'] = context['jasmine'] || {};
|
|
context['jasmine'].createSpy = function(spyName: string) {
|
|
let spy: any = function(...params: any[]) {
|
|
spy.countCall++;
|
|
spy.callArgs = params;
|
|
};
|
|
|
|
spy.countCall = 0;
|
|
|
|
return spy;
|
|
};
|
|
|
|
function eq(a: any, b: any) {
|
|
if (a === b) {
|
|
return true;
|
|
} else if (Array.isArray(a) && Array.isArray(b)) {
|
|
if (a.length !== b.length) {
|
|
return false;
|
|
}
|
|
|
|
let isEqual = true;
|
|
|
|
for (let prop in a) {
|
|
if (a.hasOwnProperty(prop)) {
|
|
if (!eq(a[prop], b[prop])) {
|
|
isEqual = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return isEqual;
|
|
} else if (typeof a === 'object' && typeof b === 'object') {
|
|
if (Object.keys(a).length !== Object.keys(b).length) {
|
|
return false;
|
|
}
|
|
|
|
let isEqual = true;
|
|
|
|
for (let prop in a) {
|
|
if (a.hasOwnProperty(prop)) {
|
|
if (!eq(a[prop], b[prop])) {
|
|
isEqual = false;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
return isEqual;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
context['expect'] = function(expected: any) {
|
|
return {
|
|
toBe: function(actual: any) {
|
|
if (expected !== actual) {
|
|
throw new Error(`Expected ${expected} to be ${actual}`);
|
|
}
|
|
},
|
|
toEqual: function(actual: any) {
|
|
if (!eq(expected, actual)) {
|
|
throw new Error(`Expected ${expected} to be ${actual}`);
|
|
}
|
|
},
|
|
toBeGreaterThan: function(actual: number) {
|
|
if (expected <= actual) {
|
|
throw new Error(`Expected ${expected} to be greater than ${actual}`);
|
|
}
|
|
},
|
|
toBeLessThan: function(actual: number) {
|
|
if (expected >= actual) {
|
|
throw new Error(`Expected ${expected} to be lesser than ${actual}`);
|
|
}
|
|
},
|
|
toBeDefined: function() {
|
|
if (!expected) {
|
|
throw new Error(`Expected ${expected} to be defined`);
|
|
}
|
|
},
|
|
toThrow: function() {
|
|
try {
|
|
expected();
|
|
} catch (error) {
|
|
return;
|
|
}
|
|
|
|
throw new Error(`Expected ${expected} to throw`);
|
|
},
|
|
toThrowError: function(errorToBeThrow: any) {
|
|
try {
|
|
expected();
|
|
} catch (error) {
|
|
return;
|
|
}
|
|
|
|
throw Error(`Expected ${expected} to throw: ${errorToBeThrow}`);
|
|
},
|
|
toBeTruthy: function() {
|
|
if (!expected) {
|
|
throw new Error(`Expected ${expected} to be truthy`);
|
|
}
|
|
},
|
|
toBeFalsy: function(actual: any) {
|
|
if (!!actual) {
|
|
throw new Error(`Expected ${actual} to be falsy`);
|
|
}
|
|
},
|
|
toContain: function(actual: any) {
|
|
if (expected.indexOf(actual) === -1) {
|
|
throw new Error(`Expected ${expected} to contain ${actual}`);
|
|
}
|
|
},
|
|
toHaveBeenCalled: function() {
|
|
if (expected.countCall === 0) {
|
|
throw new Error(`Expected ${expected} to been called`);
|
|
}
|
|
},
|
|
toHaveBeenCalledWith: function(...params: any[]) {
|
|
if (!eq(expected.callArgs, params)) {
|
|
throw new Error(`Expected ${expected} to been called with ${
|
|
expected.callArgs}, called with: ${params}`);
|
|
}
|
|
},
|
|
toMatch: function(actual: any) {
|
|
if (!new RegExp(actual).test(expected)) {
|
|
throw new Error(`Expected ${expected} to match ${actual}`);
|
|
}
|
|
},
|
|
not: {
|
|
toBe: function(actual: any) {
|
|
if (expected === actual) {
|
|
throw new Error(`Expected ${expected} not to be ${actual}`);
|
|
}
|
|
},
|
|
toHaveBeenCalled: function() {
|
|
if (expected.countCall > 0) {
|
|
throw new Error(`Expected ${expected} to not been called`);
|
|
}
|
|
},
|
|
toThrow: function() {
|
|
try {
|
|
expected();
|
|
} catch (error) {
|
|
throw new Error(`Expected ${expected} to not throw`);
|
|
}
|
|
},
|
|
toThrowError: function() {
|
|
try {
|
|
expected();
|
|
} catch (error) {
|
|
throw Error(`Expected ${expected} to not throw error`);
|
|
}
|
|
},
|
|
toBeGreaterThan: function(actual: number) {
|
|
if (expected > actual) {
|
|
throw new Error(`Expected ${expected} not to be greater than ${actual}`);
|
|
}
|
|
},
|
|
toBeLessThan: function(actual: number) {
|
|
if (expected < actual) {
|
|
throw new Error(`Expected ${expected} not to be lesser than ${actual}`);
|
|
}
|
|
},
|
|
toHaveBeenCalledWith: function(params: any[]) {
|
|
if (!eq(expected.callArgs, params)) {
|
|
throw new Error(`Expected ${expected} to not been called with ${params}`);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
};
|
|
})(typeof window !== 'undefined' && window || typeof self !== 'undefined' && self || global); |