/// <reference path="../node_modules/@types/jasmine/index.d.ts" /> import { Result } from "../src/base"; import { precDist, equalEpsilon } from "./nubtest"; import { ParamsSectionRectang, cSnRectang } from "../src/section/section_rectang"; import { cLog } from "../src/util/log"; import { MessageCode } from "../src/util/message"; let paramSection: ParamsSectionRectang; let sect: cSnRectang; function check(val1: number, val2: number) { expect(equalEpsilon(val1, val2)).toBeTruthy("expected " + val2 + ", got " + val1); } describe('Section paramétrée rectangulaire : ', () => { beforeEach(() => { paramSection = new ParamsSectionRectang(0.8, // tirant d'eau 2.5, // largeur de fond 40, // Ks=Strickler 10, // Q=Débit 0.001, // If=pente du fond 1e-10, // précision 1 // YB= hauteur de berge ); sect = new cSnRectang(new cLog(), paramSection); sect.newtonMaxIter = 5; }); describe('non convergence de la méthode de Newton :', () => { it('hauteur critique', () => { sect.Calc("Yc"); expect(sect.log.messages.length).toEqual(1); expect(sect.log.messages[0].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE); }); it('hauteur normale', () => { sect.Calc("Yn"); expect(sect.log.messages.length).toEqual(2); expect(sect.log.messages[0].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE); expect(sect.log.messages[1].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HNORMALE); }); it('hauteur normale, pente négative', () => { sect.prms.If.v = -0.001; sect.Calc("Yn"); expect(sect.log.messages.length).toEqual(1); expect(sect.log.messages[0].code).toEqual(MessageCode.ERROR_SECTION_PENTE_NEG_NULLE_HNORMALE_INF); }); it('hauteur fluviale, Y < Yc', () => { sect.Calc("Yf"); expect(sect.log.messages.length).toEqual(3); expect(sect.log.messages[0].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE); expect(sect.log.messages[1].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE); expect(sect.log.messages[2].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HFLU); }); it('hauteur fluviale, Y > Yc', () => { sect.prms.Y.v = 2; sect.Calc("Yf"); expect(sect.log.messages.length).toEqual(1); expect(sect.log.messages[0].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE); }); it('hauteur torrentielle, Y < Yc', () => { sect.Calc("Yt"); expect(sect.log.messages.length).toEqual(1); expect(sect.log.messages[0].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE); }); it('hauteur torrentielle, Y > Yc', () => { sect.prms.Y.v = 2; sect.Calc("Yt"); expect(sect.log.messages.length).toEqual(2); expect(sect.log.messages[0].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE); expect(sect.log.messages[1].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HTOR); }); it('hauteur conjuguée, Froude < 1', () => { sect.prms.Y.v = 2; sect.Calc("Yco"); console.log(sect.log.toString()); expect(sect.log.messages.length).toEqual(3); expect(sect.log.messages[0].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE); expect(sect.log.messages[1].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HTOR); expect(sect.log.messages[2].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCONJUG); }); it('hauteur conjuguée, Froude > 1', () => { sect.Calc("Yco"); expect(sect.log.messages.length).toEqual(4); expect(sect.log.messages[0].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE); expect(sect.log.messages[1].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCRITIQUE); expect(sect.log.messages[2].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HFLU); expect(sect.log.messages[3].code).toEqual(MessageCode.ERROR_SECTION_NON_CONVERGENCE_NEWTON_HCONJUG); }); }); });