From 23aef1828f5e36ec4572b5eaf3b50f62151b7b21 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Cl=C3=A9ment=20Bailly?=
 <clement.bailly3@etu.univ-lorraine.fr>
Date: Wed, 7 May 2025 11:04:38 +0200
Subject: [PATCH] Ajout des exo

---
 SAE/sae                                       |  1 +
 deno.lock                                     | 24 ++++++++++
 qualdev/qualdev/Point.ts                      | 35 ++++++++++++++
 qualdev/qualdev/Test/Point.test.ts            |  8 ++++
 qualdev/qualdev/Test/deno.json                |  5 ++
 qualdev/qualdev/Test/deno.lock                | 24 ++++++++++
 qualdev/qualdev/Test/mesMaths.test.ts         | 12 +++++
 qualdev/qualdev/Test/puissanceMult.test.ts    |  9 ++++
 qualdev/qualdev/ex1/FizzBuzzle.ts             | 17 +++++++
 qualdev/qualdev/ex1/Test/FizzBuzzle.test.ts   | 14 ++++++
 qualdev/qualdev/ex2/FizzBuzzleSpoutnik.ts     | 25 ++++++++++
 .../ex2/Test/FizzBuzzleSpoutnik.test.ts       | 23 +++++++++
 qualdev/qualdev/math.ts                       |  0
 qualdev/qualdev/mesMaths.ts                   | 47 +++++++++++++++++++
 qualdev/qualdev/test.ts                       |  2 -
 15 files changed, 244 insertions(+), 2 deletions(-)
 create mode 160000 SAE/sae
 create mode 100644 deno.lock
 create mode 100644 qualdev/qualdev/Point.ts
 create mode 100644 qualdev/qualdev/Test/Point.test.ts
 create mode 100644 qualdev/qualdev/Test/deno.json
 create mode 100644 qualdev/qualdev/Test/deno.lock
 create mode 100644 qualdev/qualdev/Test/mesMaths.test.ts
 create mode 100644 qualdev/qualdev/Test/puissanceMult.test.ts
 create mode 100644 qualdev/qualdev/ex1/FizzBuzzle.ts
 create mode 100644 qualdev/qualdev/ex1/Test/FizzBuzzle.test.ts
 create mode 100644 qualdev/qualdev/ex2/FizzBuzzleSpoutnik.ts
 create mode 100644 qualdev/qualdev/ex2/Test/FizzBuzzleSpoutnik.test.ts
 create mode 100644 qualdev/qualdev/math.ts
 create mode 100644 qualdev/qualdev/mesMaths.ts
 delete mode 100644 qualdev/qualdev/test.ts

diff --git a/SAE/sae b/SAE/sae
new file mode 160000
index 0000000..e796556
--- /dev/null
+++ b/SAE/sae
@@ -0,0 +1 @@
+Subproject commit e796556a52454114b55d1d4f244e7bbda8394db4
diff --git a/deno.lock b/deno.lock
new file mode 100644
index 0000000..04a47e6
--- /dev/null
+++ b/deno.lock
@@ -0,0 +1,24 @@
+{
+  "version": "4",
+  "specifiers": {
+    "jsr:@std/assert@*": "1.0.12",
+    "jsr:@std/assert@^1.0.12": "1.0.12",
+    "jsr:@std/internal@^1.0.6": "1.0.6"
+  },
+  "jsr": {
+    "@std/assert@1.0.12": {
+      "integrity": "08009f0926dda9cbd8bef3a35d3b6a4b964b0ab5c3e140a4e0351fbf34af5b9a",
+      "dependencies": [
+        "jsr:@std/internal"
+      ]
+    },
+    "@std/internal@1.0.6": {
+      "integrity": "9533b128f230f73bd209408bb07a4b12f8d4255ab2a4d22a1fd6d87304aca9a4"
+    }
+  },
+  "workspace": {
+    "dependencies": [
+      "jsr:@std/assert@^1.0.12"
+    ]
+  }
+}
diff --git a/qualdev/qualdev/Point.ts b/qualdev/qualdev/Point.ts
new file mode 100644
index 0000000..889f3e8
--- /dev/null
+++ b/qualdev/qualdev/Point.ts
@@ -0,0 +1,35 @@
+export class Point {
+  private _x: number;
+  private _y: number;
+
+  constructor(x = 0, y = 0) {
+    this._x = x;
+    this._y = y;
+  }
+
+  get x(): number {
+    return this._x;
+  }
+
+  set x(value : number) {
+    this._x = value;
+  }
+
+  get y(): number {
+    return this._y;
+  }
+
+  set y(value : number) {
+    this._y = value;
+  }
+
+  deplacer(x: number, y: number): void {
+    this._x += x;
+    this._y += y;
+  }
+
+  public distance(p: Point): number {
+    return Math.sqrt((this._x - p._x) ** 2 + (this._y - p._y) ** 2);
+  }
+
+}
diff --git a/qualdev/qualdev/Test/Point.test.ts b/qualdev/qualdev/Test/Point.test.ts
new file mode 100644
index 0000000..fd98140
--- /dev/null
+++ b/qualdev/qualdev/Test/Point.test.ts
@@ -0,0 +1,8 @@
+import { Point } from "../Point.ts";
+import { assertEquals } from "jsr:@std/assert/equals";
+
+Deno.test("constructeur par défaut", () => {
+  const p = new Point();
+  assertEquals(p.x, 0);
+  assertEquals(p.y, 0);
+});
diff --git a/qualdev/qualdev/Test/deno.json b/qualdev/qualdev/Test/deno.json
new file mode 100644
index 0000000..6dffbcc
--- /dev/null
+++ b/qualdev/qualdev/Test/deno.json
@@ -0,0 +1,5 @@
+{
+  "imports": {
+    "@std/assert": "jsr:@std/assert@^1.0.12"
+  }
+}
diff --git a/qualdev/qualdev/Test/deno.lock b/qualdev/qualdev/Test/deno.lock
new file mode 100644
index 0000000..04a47e6
--- /dev/null
+++ b/qualdev/qualdev/Test/deno.lock
@@ -0,0 +1,24 @@
+{
+  "version": "4",
+  "specifiers": {
+    "jsr:@std/assert@*": "1.0.12",
+    "jsr:@std/assert@^1.0.12": "1.0.12",
+    "jsr:@std/internal@^1.0.6": "1.0.6"
+  },
+  "jsr": {
+    "@std/assert@1.0.12": {
+      "integrity": "08009f0926dda9cbd8bef3a35d3b6a4b964b0ab5c3e140a4e0351fbf34af5b9a",
+      "dependencies": [
+        "jsr:@std/internal"
+      ]
+    },
+    "@std/internal@1.0.6": {
+      "integrity": "9533b128f230f73bd209408bb07a4b12f8d4255ab2a4d22a1fd6d87304aca9a4"
+    }
+  },
+  "workspace": {
+    "dependencies": [
+      "jsr:@std/assert@^1.0.12"
+    ]
+  }
+}
diff --git a/qualdev/qualdev/Test/mesMaths.test.ts b/qualdev/qualdev/Test/mesMaths.test.ts
new file mode 100644
index 0000000..30a9b50
--- /dev/null
+++ b/qualdev/qualdev/Test/mesMaths.test.ts
@@ -0,0 +1,12 @@
+import { multAdd } from "../mesMaths.ts";
+import { assertEquals } from "jsr:@std/assert/equals";
+
+Deno.test("cas général", () => {
+  assertEquals(multAdd(3, 8), 24);
+});
+Deno.test("multiplication par 0", () => {
+  assertEquals(multAdd(3, 0), 0);
+});
+Deno.test("multiplication par un nombre négatif", () => {
+  assertEquals(multAdd(3, -8), -24);
+});
diff --git a/qualdev/qualdev/Test/puissanceMult.test.ts b/qualdev/qualdev/Test/puissanceMult.test.ts
new file mode 100644
index 0000000..cf1dccb
--- /dev/null
+++ b/qualdev/qualdev/Test/puissanceMult.test.ts
@@ -0,0 +1,9 @@
+import { ErreurPuissanceMult, puissanceMult } from "../mesMaths.ts";
+import { assertEquals } from "jsr:@std/assert/equals";
+import { assertThrows } from "jsr:@std/assert/throws";
+
+Deno.test("cas général", () => assertEquals(puissanceMult(3, 2), 9));
+Deno.test("cas si x négatif", () => assertEquals(puissanceMult(-3, 2), 9));
+Deno.test("cas si y négatif", () => assertThrows(()=>{puissanceMult(3,-3)},ErreurPuissanceMult,"y ne peut pas etre négatif"));
+Deno.test("cas si deux nombres négatifs", () =>  assertThrows(()=>{puissanceMult(-3,-3)},ErreurPuissanceMult,"y ne peut pas etre négatif"));
+Deno.test("cas si nombre nul", () => assertEquals(puissanceMult(-1, 0), 1));
diff --git a/qualdev/qualdev/ex1/FizzBuzzle.ts b/qualdev/qualdev/ex1/FizzBuzzle.ts
new file mode 100644
index 0000000..11ad25c
--- /dev/null
+++ b/qualdev/qualdev/ex1/FizzBuzzle.ts
@@ -0,0 +1,17 @@
+export function getFizzBuzzle(i: number) {
+    if ((i % 3 === 0) && (i % 5 === 0)) {
+        return "FizzBuzzle";
+    } else if (i % 3 === 0) {
+        return "Fizz";
+    } else if (i % 5 === 0) {
+        return "Buzzle";
+    } else {
+        return i;
+    }
+}
+
+export function fizzBuzzle(n: number): void {
+    for (let i = 1; i <= n; i++) {
+        console.log(getFizzBuzzle(i));
+    }
+}
diff --git a/qualdev/qualdev/ex1/Test/FizzBuzzle.test.ts b/qualdev/qualdev/ex1/Test/FizzBuzzle.test.ts
new file mode 100644
index 0000000..2cab93d
--- /dev/null
+++ b/qualdev/qualdev/ex1/Test/FizzBuzzle.test.ts
@@ -0,0 +1,14 @@
+import { getFizzBuzzle } from "../FizzBuzzle.ts";
+import { assertEquals } from "jsr:@std/assert/equals";
+Deno.test("Cas si i est un multiple de 3", () => {
+  assertEquals(getFizzBuzzle(6), "Fizz");
+});
+Deno.test("Cas si i est un multiple de 3", () => {
+  assertEquals(getFizzBuzzle(10), "Buzzle");
+});
+Deno.test("Cas si i est un multiple de 3 et 5", () => {
+  assertEquals(getFizzBuzzle(15), "FizzBuzzle");
+});
+Deno.test("Cas si i n'est pas un multiple de 3 et 5", () => {
+  assertEquals(getFizzBuzzle(11), 11);
+});
diff --git a/qualdev/qualdev/ex2/FizzBuzzleSpoutnik.ts b/qualdev/qualdev/ex2/FizzBuzzleSpoutnik.ts
new file mode 100644
index 0000000..4c33d39
--- /dev/null
+++ b/qualdev/qualdev/ex2/FizzBuzzleSpoutnik.ts
@@ -0,0 +1,25 @@
+export function getFizzBuzzleSpoutnik(i: number) {
+    if ((i % 3 === 0) && (i % 5 === 0) && (i % 4 === 0)) {
+        return "FizzBuzzleSpoutnik";
+    } else if ((i % 3 === 0) && (i % 4 === 0)) {
+        return "FizzSpoutnik";
+    } else if ((i % 3 === 0) && (i % 5 === 0)) {
+        return "FizzBuzzle";
+    } else if ((i % 4 === 0) && (i % 5 === 0)) {
+        return "BuzzleSpoutnik";
+    } else if (i % 3 === 0) {
+        return "Fizz";
+    } else if (i % 5 === 0) {
+        return "Buzzle";
+    } else if (i % 4 === 0) {
+        return "Spoutnik";
+    } else {
+        return i;
+    }
+}
+
+export function fizzBuzzleSpoutnik(n: number): void {
+    for (let i = 1; i <= n; i++) {
+        console.log(getFizzBuzzleSpoutnik(i));
+    }
+}
diff --git a/qualdev/qualdev/ex2/Test/FizzBuzzleSpoutnik.test.ts b/qualdev/qualdev/ex2/Test/FizzBuzzleSpoutnik.test.ts
new file mode 100644
index 0000000..d958613
--- /dev/null
+++ b/qualdev/qualdev/ex2/Test/FizzBuzzleSpoutnik.test.ts
@@ -0,0 +1,23 @@
+import { getFizzBuzzleSpoutnik } from "../FizzBuzzleSpoutnik.ts";
+import { assertEquals } from "jsr:@std/assert/equals";
+Deno.test("Cas si i est un multiple de 3", () => {
+  assertEquals(getFizzBuzzleSpoutnik(6), "Fizz");
+});
+Deno.test("Cas si i est un multiple de 3", () => {
+  assertEquals(getFizzBuzzleSpoutnik(10), "Buzzle");
+});
+Deno.test("Cas si i est un multiple de 3 et 5", () => {
+  assertEquals(getFizzBuzzleSpoutnik(15), "FizzBuzzle");
+});
+Deno.test("Cas si i n'est pas un multiple de 3 et 5", () => {
+  assertEquals(getFizzBuzzleSpoutnik(11), 11);
+});
+Deno.test("Cas si i n'est pas un multiple de 3, 4 et 5", () => {
+  assertEquals(getFizzBuzzleSpoutnik(120), "FizzBuzzleSpoutnik");
+});
+Deno.test("Cas si i n'est pas un multiple de 3 et 4", () => {
+  assertEquals(getFizzBuzzleSpoutnik(24), "FizzSpoutnik");
+});
+Deno.test("Cas si i n'est pas un multiple de 4 et 5", () => {
+  assertEquals(getFizzBuzzleSpoutnik(40), "BuzzleSpoutnik");
+});
diff --git a/qualdev/qualdev/math.ts b/qualdev/qualdev/math.ts
new file mode 100644
index 0000000..e69de29
diff --git a/qualdev/qualdev/mesMaths.ts b/qualdev/qualdev/mesMaths.ts
new file mode 100644
index 0000000..ee535bc
--- /dev/null
+++ b/qualdev/qualdev/mesMaths.ts
@@ -0,0 +1,47 @@
+export function multAdd(x: number, y: number): number {
+  let resultat = 0;
+  if (x < 0 && y > 0) {
+    x = -x;
+    for (let i = 0; i < y; i++) {
+      resultat += x;
+    }
+    return -resultat;
+  }
+  if (x > 0 && y < 0) {
+    y = -y;
+    for (let i = 0; i < y; i++) {
+      resultat += x;
+    }
+    return -resultat;
+  }
+  if (x < 0 && y < 0) {
+    x = -x;
+    y = -y;
+    for (let i = 0; i < y; i++) {
+      resultat += x;
+    }
+    return resultat;
+  }
+  for (let i = 0; i < y; i++) {
+    resultat += x;
+  }
+  return resultat;
+}
+
+export class ErreurPuissanceMult extends Error {
+  constructor(msg: string){
+    super(msg);
+    this.name = "ErreurPuissanceMult";
+  }
+}
+
+export function puissanceMult(x: number, y: number): number {
+  if (y < 0){
+    throw new ErreurPuissanceMult("y ne peut pas etre négatif")
+  }
+  let val = 1;
+  for (let i = 0; i < y; i++) {
+    val *= x;
+  }
+  return val;
+}
diff --git a/qualdev/qualdev/test.ts b/qualdev/qualdev/test.ts
deleted file mode 100644
index a65ab57..0000000
--- a/qualdev/qualdev/test.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-console.log("1");
-console.log("2");
\ No newline at end of file
-- 
GitLab