vibe coding an orbital mechanics simulation to try out claude code
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

47 lines
1.4 KiB

#include <catch2/catch_test_macros.hpp>
#include "../src/physics.h"
#include "../src/test_utilities.h"
#include <cmath>
TEST_CASE("Vector math utilities", "[utilities]") {
Vec3 a = {1.0, 2.0, 3.0};
Vec3 b = {4.0, 5.0, 6.0};
SECTION("Vector addition") {
Vec3 sum = vec3_add(a, b);
REQUIRE(compare_double(sum.x, 5.0, 1e-10));
REQUIRE(compare_double(sum.y, 7.0, 1e-10));
REQUIRE(compare_double(sum.z, 9.0, 1e-10));
}
SECTION("Vector subtraction") {
Vec3 diff = vec3_sub(b, a);
REQUIRE(compare_double(diff.x, 3.0, 1e-10));
REQUIRE(compare_double(diff.y, 3.0, 1e-10));
REQUIRE(compare_double(diff.z, 3.0, 1e-10));
}
SECTION("Vector scaling") {
Vec3 scaled = vec3_scale(a, 2.0);
REQUIRE(compare_double(scaled.x, 2.0, 1e-10));
REQUIRE(compare_double(scaled.y, 4.0, 1e-10));
REQUIRE(compare_double(scaled.z, 6.0, 1e-10));
}
SECTION("Vector magnitude") {
double mag = vec3_magnitude(a);
REQUIRE(compare_double(mag, sqrt(14.0), 1e-10));
}
SECTION("Vector distance") {
double dist = vec3_distance(a, b);
REQUIRE(compare_double(dist, sqrt(27.0), 1e-10));
}
SECTION("Vector normalization") {
Vec3 unit = vec3_normalize(a);
double expected_mag = 1.0;
double actual_mag = vec3_magnitude(unit);
REQUIRE(compare_double(actual_mag, expected_mag, 1e-10));
}
}