mock_jasmine.ts 1.75 KiB
/**
 * Mock fonction describe de Jasmine
 * @param sTxt Texte de la suite de test
 * @param fFun Fonction de la suite de test
 */
export function describe(sTxt: string, fFun: Function) {
    //console.group();
    console.log(sTxt);
    fFun();
    //console.groupEnd();
/**
 * Mock fonction it de jasmine
 * @param sTxt Texte à afficher pour la spec
 * @param fFun Function à lancer pour la spec
export function it(sTxt: string, fFun: Function) {
    console.log(sTxt);
    fFun();
/** 
 * Mock expect et toBeCloseTo de Jasmine. 
 * Ne fonctionne pas à cause de this = undefined dans le contexte "use strict"
export function expect(obj: Object) {
    this.testResult = obj;
    this.toBeCloseTo = function(expected: number, precision: number) {
        var pow = Math.pow(10, precision + 1);
        var delta = Math.abs(expected - this.testResult);
        var maxDelta = Math.pow(10, -precision) / 2;
        if (Math.round(delta * pow) / pow > maxDelta) {
            console.error("Expected "+this.testResult+" to be close to "+expected+","+precision);
        return this;
    return this;
/** 
 * Mock de la function chainée à expect de test d'une valeur à un epsilon près
 * @param actual Valeur numérique sortie du test
 * @param expected Valeur numérique attendue
 * @param precision Précision attendue (nombre de chiffre après la virgule)
export function toBeCloseTo (actual: number, expected: number, precision: number) {
    var pow = Math.pow(10, precision + 1);
    var delta = Math.abs(expected - actual);
    var maxDelta = Math.pow(10, -precision) / 2;
    if (Math.round(delta * pow) / pow > maxDelta) {
        console.error("Expected "+actual+" to be close to "+expected+","+precision);
    return this;