From 2343770c01c45b31738c9d87d5ef1f740fef70bf Mon Sep 17 00:00:00 2001
From: JM <crewgan@pop-os.localdomain>
Date: Mon, 23 May 2022 16:01:15 +0200
Subject: [PATCH] Ajout test unitaire de force_in_screen

---
 src/field.h       |  1 +
 src/field_tests.c | 45 ++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 45 insertions(+), 1 deletion(-)

diff --git a/src/field.h b/src/field.h
index 4fb8f80..31cc3d9 100644
--- a/src/field.h
+++ b/src/field.h
@@ -28,6 +28,7 @@ bool line_reach_charge(vec2 pos, charge_t *charges, int num_charges, double dx);
 
 bool is_in_screen(coordinates_t pos);
 
+void force_in_screen(coordinates_t *pos);
 
 void draw_everything(
 		struct gfx_context_t *ctxt,
diff --git a/src/field_tests.c b/src/field_tests.c
index 5ac60a6..2eec404 100644
--- a/src/field_tests.c
+++ b/src/field_tests.c
@@ -168,8 +168,51 @@ test_result t_is_in_screen_0()
     return (test_result){.passed = passed, .name = "Test is_in_screen 0"};
 }
 
+test_result t_force_in_screen_0()
+{
+    bool passed = true;
+
+	coordinates_t p[] = {
+		coordinates_create(99 / WID * 100, 1 / HEI * 100),
+		coordinates_create(50 / WID * 100, 50 / HEI * 100),
+		coordinates_create(1 / WID * 100, 99 / HEI * 100),
+		coordinates_create(WID, HEI),
+		coordinates_create(-1, HEI / 2),
+		coordinates_create(WID / 2, -1),
+		coordinates_create(-1, -1),
+		coordinates_create(WID + 10, HEI/2),
+		coordinates_create(WID / 2, HEI + 10),
+		coordinates_create(WID + 10, HEI + 10)
+	};
+	coordinates_t p_results[] = {
+		coordinates_create(99 / WID * 100, 1 / HEI * 100),
+		coordinates_create(50 / WID * 100, 50 / HEI * 100),
+		coordinates_create(1 / WID * 100, 99 / HEI * 100),
+		coordinates_create(WID-1, HEI-1),
+		coordinates_create(0, HEI / 2),
+		coordinates_create(WID / 2, 0),
+		coordinates_create(0, 0),
+		coordinates_create(WID -1, HEI/2),
+		coordinates_create(WID / 2, HEI -1),
+		coordinates_create(WID -1, HEI -1)
+	};
+
+	uint32_t nb_tests = sizeof(p_results) / sizeof(coordinates_t);
+
+	for (size_t i = 0; i < nb_tests; i++)
+	{
+		force_in_screen(&p[i]);
+		if(p[i].column != p_results[i].column || p[i].row != p_results[i].row){
+			passed = false;
+			break;
+		}
+	}
+
+    return (test_result){.passed = passed, .name = "Test is_in_screen 0"};
+}
+
 // Add or remove your test function name here
-const unit_test_t tests[] = {t_compute_e_0, t_compute_total_normalized_e_0, t_line_reach_charge_0, t_is_in_screen_0};
+const unit_test_t tests[] = {t_compute_e_0, t_compute_total_normalized_e_0, t_line_reach_charge_0, t_is_in_screen_0, t_force_in_screen_0};
 
 int main()
 {
-- 
GitLab