Модульные тесты для арифметических операций с векторами и комплексными числами

This commit is contained in:
Andrey Pokidov 2025-03-13 02:41:21 +07:00
parent 2e902bc040
commit f06b35ae34
14 changed files with 1317 additions and 0 deletions

View file

Internal server error - Personal Git Server: Beyond coding. We Forge.

500

Internal server error

Forgejo version: 11.0.1+gitea-1.22.0

@ -0,0 +1,380 @@
#include "./vector3_arithmetics.h"
#include "./../../helpers.h"
// ==================== Add ===================== //
void test_vector3_add_fp32()
{
BgcVector3FP32 vector1, vector2, result;
print_testing_name("bgc_vector3_add_fp32");
bgc_vector3_set_values_fp32(10.0f, -20.0f, 30.0f, &vector1);
bgc_vector3_set_values_fp32(4.0f, 5.0f, -6.0f, &vector2);
bgc_vector3_add_fp32(&vector1, &vector2, &result);
if (!bgc_are_close_fp32(result.x1, 14.0f) || !bgc_are_close_fp32(result.x2, -15.0f) || !bgc_are_close_fp32(result.x3, 24.0f)) {
print_testing_error("first test failed");
return;
}
bgc_vector3_set_values_fp32(-0.28f, 100.1f, -1.6f, &vector1);
bgc_vector3_set_values_fp32(1.78f, -0.1f, 0.4f, &vector2);
bgc_vector3_add_fp32(&vector1, &vector2, &result);
if (!bgc_are_close_fp32(result.x1, 1.5f) || !bgc_are_close_fp32(result.x2, 100.0f) || !bgc_are_close_fp32(result.x3, -1.2f)) {
print_testing_error("second test failed");
return;
}
print_testing_success();
}
void test_vector3_add_scaled_fp32()
{
BgcVector3FP32 vector1, vector2, result;
print_testing_name("bgc_vector3_add_scaled_fp32");
bgc_vector3_set_values_fp32(10.0f, -20.0f, 24.0f, &vector1);
bgc_vector3_set_values_fp32(4.0f, 5.0f, 6.0f, &vector2);
bgc_vector3_add_scaled_fp32(&vector1, & vector2, -2.0f, &result);
if (!bgc_are_close_fp32(result.x1, 2.0f) || !bgc_are_close_fp32(result.x2, -30.0f) || !bgc_are_close_fp32(result.x3, 12.0f)) {
print_testing_error("first test failed");
return;
}
bgc_vector3_set_values_fp32(-0.27f, 100.3f, -1.2f, &vector1);
bgc_vector3_set_values_fp32(1.59f, -0.1f, 0.4f, &vector2);
bgc_vector3_add_scaled_fp32(&vector1, &vector2, 3.0f, &result);
if (!bgc_are_close_fp32(result.x1, 4.5f) || !bgc_are_close_fp32(result.x2, 100.0f) || !bgc_are_close_fp32(result.x3, 0.0f)) {
print_testing_error("second test failed");
return;
}
print_testing_success();
}
void test_vector3_add_fp64()
{
BgcVector3FP64 vector1, vector2, result;
print_testing_name("bgc_vector3_add_fp64");
bgc_vector3_set_values_fp64(10.0, -20.0, 30.0, &vector1);
bgc_vector3_set_values_fp64(4.0, 8.0, -9.0, &vector2);
bgc_vector3_add_fp64(&vector1, &vector2, &result);
if (!bgc_are_close_fp64(result.x1, 14.0) || !bgc_are_close_fp64(result.x2, -12.0) || !bgc_are_close_fp64(result.x3, 21.0)) {
print_testing_error("first test failed");
return;
}
bgc_vector3_set_values_fp64(-0.27, 100.3, -8.2, &vector1);
bgc_vector3_set_values_fp64(1.29, -0.2, 14.1, &vector2);
bgc_vector3_add_fp64(&vector1, &vector2, &result);
if (!bgc_are_close_fp64(result.x1, 1.02) || !bgc_are_close_fp64(result.x2, 100.1) || !bgc_are_close_fp64(result.x3, 5.9)) {
print_testing_error("second test failed");
return;
}
print_testing_success();
}
void test_vector3_add_scaled_fp64()
{
BgcVector3FP64 vector1, vector2, result;
print_testing_name("bgc_vector3_add_scaled_fp64");
bgc_vector3_set_values_fp64(10.0, -20.0, 7.5, &vector1);
bgc_vector3_set_values_fp64(4.0, 5.0, 1.25, &vector2);
bgc_vector3_add_scaled_fp64(&vector1, &vector2, -2.0, &result);
if (!bgc_are_close_fp64(result.x1, 2.0) || !bgc_are_close_fp64(result.x2, -30.0) || !bgc_are_close_fp64(result.x3, 5.0)) {
print_testing_error("first test failed");
return;
}
bgc_vector3_set_values_fp64(-0.27, 100.3, -20.0, &vector1);
bgc_vector3_set_values_fp64(1.59, -0.1, 5.0, &vector2);
bgc_vector3_add_scaled_fp64(&vector1, &vector2, 3.0, &result);
if (!bgc_are_close_fp64(result.x1, 4.5) || !bgc_are_close_fp64(result.x2, 100.0) || !bgc_are_close_fp64(result.x3, -5.0)) {
print_testing_error("second test failed");
return;
}
print_testing_success();
}
void test_vector3_add()
{
test_vector3_add_fp32();
test_vector3_add_fp64();
test_vector3_add_scaled_fp32();
test_vector3_add_scaled_fp64();
}
// ================== Subtract ================== //
void test_vector3_subtract_fp32()
{
BgcVector3FP32 vector1, vector2, result;
print_testing_name("bgc_vector3_subtract_fp32");
bgc_vector3_set_values_fp32(10.0f, -20.0f, 16.0f, &vector1);
bgc_vector3_set_values_fp32(4.0f, 5.0f, -4.0f, &vector2);
bgc_vector3_subtract_fp32(&vector1, &vector2, &result);