diff --git a/src/field.h b/src/field.h index 4fb8f804599c14198ce51f0280a013e53e3d6956..31cc3d9a74a3478f668c029e68766284bcaffb2b 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 5ac60a649974370c999a4bafed6a8aaa5deab681..2eec4041d7b8c124292bb912e85290354c1da83f 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() {