• Mathias Chouet's avatar
    refactor nubs · 7b6e5403
    Mathias Chouet authored
    merged cParamsCanal and ParamsSection
    Structures are now only defined by their LoiDebit (no more StructureType)
    Session : fixed serialization of lately registered Nubs
    Sections are now defined by a CalculatorType and a NodeType
    fixed bug in findFirstSingleParameter
    added tests for session serialisation
    7b6e5403
mock_jasmine.ts 5.51 KiB
// tslint:disable:no-console
/**
 * 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: () => void) {
    console.log(sTxt);
    fFun();
/**
 * Mock fonction xdescribe de Jasmine
 * @param sTxt Texte de la suite de test
 * @param fFun Fonction de la suite de test
export function xdescribe(sTxt: string, fFun: () => void) {
    console.log(sTxt + " ignored ***");
/**
 * 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: () => void) {
    console.log(sTxt);
    fFun();
/**
 * Mock fonction xit de Jasmine
 * @param sTxt Texte de la suite de test
 * @param fFun Fonction de la suite de test
export function xit(sTxt: string, fFun: () => void) {
    console.warn("*** " + sTxt + " ignored ***");
export function fail(m?: string) {
    let s = "Test failed";
    if (m !== undefined) {
        s += ` (${m})`;
    console.error(s);
/**
 * Classe contenant les méthodes de comparaison de Jasmine.
class Expect {
    /**
     * Mock la function expect de Jasmine
     * @param actual Objet à tester
    public constructor(private actual: any) {
    /**
     * Mock de la function chainée à expect de test d'une valeur à un epsilon près
     * @param expected Valeur numérique attendue
     * @param precision Précision attendue (nombre de chiffre après la virgule)
    public toBeCloseTo(expected: number, precision: number = 0.0001) {
        const pow = Math.pow(10, precision + 1);
        const delta = Math.abs(expected - this.actual);
        const maxDelta = Math.pow(10, -precision) / 2;
        if (typeof this.actual !== "number" || Math.round(delta * pow) / pow > maxDelta) {
            console.error("Expected " + this.actual + " to be close to " + expected + " with precision " + precision);
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
} return this; } /** * Mock de la fonction toBe de Jasmine : the actual value to be `===` to the expected value * @param expected Objet de référence */ public toBe(expected: any) { const res = this.actual === expected; if (!res) { console.error("Expected " + this.actual + " to be " + expected); } return res; } public toBeLessThanOrEqual(expected: any) { const res = this.actual <= expected; if (!res) { console.error("Expected " + this.actual + " to be less than or equal to " + expected); } return res; } /** * Mock de la fonction toEqual de Jasmine : the actual value to be `===` to the expected value * @param expected Objet de référence */ public toEqual(expected: any) { const res = this.actual === expected; if (!res) { console.warn(`Test ${this.actual} 'to be equal to' ${expected} failed`); } return res; } /** * Mock de la fonction toBeTruthy de Jasmine : the actual value should be true * @param message message d'erreur */ public toBeTruthy(message?: string) { if (!this.actual) { if (message !== undefined) { console.error(message); } else { console.error(`${this.actual} should be true`); } } } /** * Mock de la fonction toBeFalsy de Jasmine : the actual value should be false * @param message message d'erreur */ public toBeFalsy(message?: string) { if (this.actual) { if (message !== undefined) { console.error(message); } else { console.error(`${this.actual} should be false`); } } } public toBeDefined(message?: string) { if (this.actual === undefined) { if (message !== undefined) { console.error(message); } else { console.error(`${this.actual} should be defined`);
141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
} } } public toBeUndefined(message?: string) { if (this.actual !== undefined) { if (message !== undefined) { console.error(message); } else { console.error(`${this.actual} should be undefined`); } } } public toContain(expected: any) { const res = Array.isArray(this.actual) && this.actual.includes(expected); if (!res) { console.error("Expected " + this.actual + " to contain " + expected); } return res; } public toThrow(expected?: any) { let exception: Error; if (typeof this.actual !== "function") { throw new Error("Actual is not a function"); } try { this.actual(); } catch (e) { exception = e; } if (exception === undefined) { console.error("Expected tested function to throw an error"); } else { if (expected) { if (exception.message !== expected.message) { console.error(`Function throws '${exception.message}' but '${expected.message}' was expected`); } } else if (exception.message) { console.error(`Function throws '${exception.message}' but no message was expected`); } } } } /** * Mock la function expect de Jasmine * @param actual Objet à tester */ export function expect(expected: any) { return new Expect(expected); }