From b68fbb6fd0a086010ea0b210523ca96acf8a487f Mon Sep 17 00:00:00 2001
From: CORONA Nikola <git config --local user.email>
Date: Wed, 23 Apr 2025 11:26:34 +0200
Subject: [PATCH] TD5 Exercice 4

---
 TD5 Test/Exercice.test.ts | 41 +++++++++++++++++++++++-----
 TD5 Test/MesMaths.ts      | 57 ++++++++++++++++++++++++++-------------
 2 files changed, 73 insertions(+), 25 deletions(-)

diff --git a/TD5 Test/Exercice.test.ts b/TD5 Test/Exercice.test.ts
index 91720d9..66b96f0 100644
--- a/TD5 Test/Exercice.test.ts	
+++ b/TD5 Test/Exercice.test.ts	
@@ -1,7 +1,10 @@
-import { multAdd, puissanceMult } from "./MesMaths.ts";
+import { multAdd, puissanceMult,creeInitiales, ErreurPuissanceMult } from "./MesMaths.ts";
 import { assertEquals } from "jsr:@std/assert/equals";
+import { assertThrows } from "jsr:@std/assert/throws";
 import { assertAlmostEquals } from "jsr:@std/assert/almost-equals";
 
+// Exercice 1
+
 Deno.test("cas général", () => {
     assertEquals(multAdd(3, 8), 24);
 });
@@ -14,11 +17,37 @@ Deno.test("multiplication par un nombre négatif", () => {
 Deno.test("multiplication par 2 nombre négatif", () => {
     assertEquals(multAdd(-8, -8), 64);
 });
-Deno.test("Puissance par un nombre négatif", () => {
-    assertEquals(puissanceMult(-5, 9), -1953125);
-});
-Deno.test("Puissance par un nombre négatif", () => {
-    assertEquals(puissanceMult(5, -9), -1953125);
+
+//Exercice 2
+
+Deno.test("puissanceMult cas normaux", () => {
+    assertEquals(puissanceMult(2, 3), 8);
+    assertEquals(puissanceMult(5, 0), 1);
+    assertEquals(puissanceMult(0, 5), 0);
+    assertEquals(puissanceMult(-2, 3), -8);
+    assertEquals(puissanceMult(3, 1), 3);
+  });
+  
+  Deno.test("puissanceMult erreur exposant négatif", () => {
+    assertThrows(
+      () => puissanceMult(3, -2),
+      ErreurPuissanceMult,
+      "L'exposant ne peut pas être négatif."
+    );
+  });
+  
+  Deno.test("puissanceMult erreur exposant non entier", () => {
+    assertThrows(
+      () => puissanceMult(2, 3.14),
+      ErreurPuissanceMult,
+      "Le second paramètre doit être un entier."
+    );
+  });
+
+// Exercice 3 
+
+Deno.test("Teste de la fonction creeInitiales avec Nikola Corona", () => {
+    assertEquals(creeInitiales("corona","nikola"),"CN")
 });
 
 
diff --git a/TD5 Test/MesMaths.ts b/TD5 Test/MesMaths.ts
index 72a9de0..a60a851 100644
--- a/TD5 Test/MesMaths.ts	
+++ b/TD5 Test/MesMaths.ts	
@@ -1,36 +1,55 @@
+// Exercice 1 
+
 export function multAdd(x: number, y: number): number {
     let resultat = 0;
     let inf = 0;
-    if (y < 0){
-        y = -y
-        inf = 1 ;
+    if (y < 0) {
+        y = -y;
+        inf = 1;
     }
     for (let i = 0; i < y; i++) {
-    resultat += x;
+        resultat += x;
     }
 
-    if (inf === 1 ) return -resultat ;
+    if (inf === 1) return -resultat;
     else return resultat;
-   }
+}
 
-   export function puissanceMult(x: number, y: number): number {
-    let val = 1;
-    let inf = 0;
-    if (y < 0){
-        y = -y
-        inf = 1 ;
+// Exercice 2 
+
+export function puissanceMult(x: number, y: number): number {
+    if (!Number.isInteger(y)) {
+      throw new ErreurPuissanceMult("Le second paramètre doit être un entier.");
+    }
+    if (y < 0) {
+      throw new ErreurPuissanceMult("L'exposant ne peut pas être négatif.");
     }
+  
+    let val = 1;
     for (let i = 0; i < y; i++) {
-    val *= x;
+      val *= x;
     }
-    if (inf === 1 ) return -val ;
-    else return val;
+    return val;
+  }
 
-   }
+export class ErreurPuissanceMult extends Error {
+    constructor(msg: string) {
+      super(msg);
+      this.name = "ErreurPuissanceMult";
+    }
+  }
+
+// 1) on doit tester pour y negatif car il renvoit 1
 
-// 1) on doit tester pour y negatif car il renvoit 1 
-   
 const x = 2.1;
 const y = 3.14;
 console.log("Number.isInteger(x) =", Number.isInteger(x));
-console.log("Number.isInteger(y) =", Number.isInteger(y));
\ No newline at end of file
+console.log("Number.isInteger(y) =", Number.isInteger(y));
+
+// Exercice 3
+
+export function creeInitiales(nom: string, prenom: string): string {
+    return nom[0].toUpperCase() + prenom[0].toUpperCase();
+}
+
+console.log(creeInitiales("corona","nikola"))
-- 
GitLab