#include "TestHarness.h" #include TEST(constructors, vector) { vector_t zero_zero_zero = vector0(); CHECK(zero_zero_zero.x == 0.0f); CHECK(zero_zero_zero.y == 0.0f); CHECK(zero_zero_zero.z == 0.0f); vector_t one_zero_zero = vector1(1.0f); CHECK(one_zero_zero.x == 1.0f); CHECK(one_zero_zero.y == 0.0f); CHECK(one_zero_zero.z == 0.0f); vector_t one_one_zero = vector2(1.0f, 1.0f); CHECK(one_one_zero.x == 1.0f); CHECK(one_one_zero.y == 1.0f); CHECK(one_one_zero.z == 0.0f); vector_t one_one_one = vector3(1.0f, 1.0f, 1.0f); CHECK(one_one_one.x == 1.0f); CHECK(one_one_one.y == 1.0f); CHECK(one_one_one.z == 1.0f); } TEST(vector_add, vector) { vector_t one_two_three = vector3(1.0f, 2.0f, 3.0f); vector_t four_five_six = vector3(4.0f, 5.0f, 6.0f); vector_t five_seven_nine = vector_add(one_two_three, four_five_six); CHECK(five_seven_nine.x == 5.0f); CHECK(five_seven_nine.y == 7.0f); CHECK(five_seven_nine.z == 9.0f); vector_t two_four_six = vector_add(one_two_three, one_two_three); CHECK(two_four_six.x == 2.0f); CHECK(two_four_six.y == 4.0f); CHECK(two_four_six.z == 6.0f); vector_t eight_ten_twelve = vector_add(four_five_six, four_five_six); CHECK(eight_ten_twelve.x == 8.0f); CHECK(eight_ten_twelve.y == 10.0f); CHECK(eight_ten_twelve.z == 12.0f); } TEST(vector_subtract, vector) { vector_t one_two_three = vector3(1.0f, 2.0f, 3.0f); vector_t four_five_six = vector3(4.0f, 5.0f, 6.0f); vector_t negative_three_negative_three_negative_three = vector_subtract(one_two_three, four_five_six); CHECK(negative_three_negative_three_negative_three.x == -3.0f); CHECK(negative_three_negative_three_negative_three.y == -3.0f); CHECK(negative_three_negative_three_negative_three.z == -3.0f); vector_t zero_zero_zero = vector_subtract(one_two_three, one_two_three); CHECK(zero_zero_zero.x == 0.0f); CHECK(zero_zero_zero.y == 0.0f); CHECK(zero_zero_zero.z == 0.0f); vector_t three_three_three = vector_subtract(four_five_six, one_two_three); CHECK(three_three_three.x == 3.0f); CHECK(three_three_three.y == 3.0f); CHECK(three_three_three.z == 3.0f); } TEST(vector_scale, vector) { vector_t one_two_three = vector3(1.0f, 2.0f, 3.0f); vector_t two_four_six = vector_scale(one_two_three, 2.0f); CHECK(two_four_six.x == 2.0f); CHECK(two_four_six.y == 4.0f); CHECK(two_four_six.z == 6.0f); vector_t half_one_one_and_a_half = vector_scale(one_two_three, 0.5f); CHECK(half_one_one_and_a_half.x == 0.5f); CHECK(half_one_one_and_a_half.y == 1.0f); CHECK(half_one_one_and_a_half.z == 1.5f); } TEST(vector_dot_product, vector) { vector_t one_two_three = vector3(1.0f, 2.0f, 3.0f); vector_t four_five_six = vector3(4.0f, 5.0f, 6.0f); CHECK(vector_dot_product(one_two_three, four_five_six) == 32.0f); CHECK(vector_dot_product(one_two_three, one_two_three) == 14.0f); CHECK(vector_dot_product(four_five_six, four_five_six) == 77.0f); } TEST(vector_componentwise_product, vector) { vector_t one_two_three = vector3(1.0f, 2.0f, 3.0f); vector_t four_five_six = vector3(4.0f, 5.0f, 6.0f); vector_t four_ten_eighteen = vector_componentwise_product(one_two_three, four_five_six); CHECK(four_ten_eighteen.x == 4.0f); CHECK(four_ten_eighteen.y == 10.0f); CHECK(four_ten_eighteen.z == 18.0f); vector_t one_four_nine = vector_componentwise_product(one_two_three, one_two_three); CHECK(one_four_nine.x == 1.0f); CHECK(one_four_nine.y == 4.0f); CHECK(one_four_nine.z == 9.0f); vector_t sixteen_twenty_five_thirty_six = vector_componentwise_product(four_five_six, four_five_six); CHECK(sixteen_twenty_five_thirty_six.x == 16.0f); CHECK(sixteen_twenty_five_thirty_six.y == 25.0f); CHECK(sixteen_twenty_five_thirty_six.z == 36.0f); } TEST(vector_cross_product, vector) { vector_t one_two_three = vector3(1.0f, 2.0f, 3.0f); vector_t four_five_six = vector3(4.0f, 5.0f, 6.0f); vector_t negative_three_six_negative_three = vector_cross_product(one_two_three, four_five_six); CHECK(negative_three_six_negative_three.x == -3.0f); CHECK(negative_three_six_negative_three.y == 6.0f); CHECK(negative_three_six_negative_three.z == -3.0f); vector_t three_negative_six_three = vector_cross_product(four_five_six, one_two_three); CHECK(three_negative_six_three.x == 3.0f); CHECK(three_negative_six_three.y == -6.0f); CHECK(three_negative_six_three.z == 3.0f); vector_t zero_zero_zero = vector_cross_product(one_two_three, one_two_three); CHECK(zero_zero_zero.x == 0.0f); CHECK(zero_zero_zero.y == 0.0f); CHECK(zero_zero_zero.z == 0.0f); } TEST(vector_norm, vector) { vector_t one_two_three = vector3(1.0f, 2.0f, 3.0f); vector_t four_five_six = vector3(4.0f, 5.0f, 6.0f); CHECK(vector_norm(one_two_three) == 14.0f); CHECK(vector_norm(four_five_six) == 77.0f); } TEST(vector_length, vector) { vector_t zero_three_four = vector3(0.0f, 3.0f, 4.0f); vector_t five_zero_twelve = vector3(5.0f, 0.0f, 12.0f); CHECK(vector_length(zero_three_four) == 5.0f); CHECK(vector_length(five_zero_twelve) == 13.0f); } TEST(vector_normalized, vector) { vector_t six_zero_zero = vector1(6.0f); vector_t one_zero_zero = vector_normalized(six_zero_zero); CHECK(one_zero_zero.x == 1.0f); CHECK(one_zero_zero.y == 0.0f); CHECK(one_zero_zero.z == 0.0f); } TEST(vector_linear_interpolate, vector) { vector_t one_one_one = vector3(1.0f, 1.0f, 1.0f); vector_t two_two_two = vector3(2.0f, 2.0f, 2.0f); vector_t one_and_a_quarter_one_and_a_quarter_one_and_a_quarter = vector_linear_interpolate(one_one_one, two_two_two, 0.25f); CHECK(one_and_a_quarter_one_and_a_quarter_one_and_a_quarter.x == 1.25); CHECK(one_and_a_quarter_one_and_a_quarter_one_and_a_quarter.y == 1.25); CHECK(one_and_a_quarter_one_and_a_quarter_one_and_a_quarter.z == 1.25); vector_t one_and_three_quarters_one_and_three_quarters_one_and_three_quarters = vector_linear_interpolate(one_one_one, two_two_two, 0.75f); CHECK(one_and_three_quarters_one_and_three_quarters_one_and_three_quarters.x == 1.75); CHECK(one_and_three_quarters_one_and_three_quarters_one_and_three_quarters.y == 1.75); CHECK(one_and_three_quarters_one_and_three_quarters_one_and_three_quarters.z == 1.75); }