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); |