From 88160dfeeab7ea61e54487c968a91b153c1008d7 Mon Sep 17 00:00:00 2001 From: Sam Mercer Date: Sun, 25 Feb 2024 13:16:43 +0000 Subject: [PATCH] Test setFaceNormal class method #12 --- tests/CMakeLists.txt | 2 +- tests/object_test.cpp | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 tests/object_test.cpp diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 3cd54eb..93166e2 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -6,7 +6,7 @@ FetchContent_Declare( FetchContent_MakeAvailable(googletest) -add_executable(raydiance_test vec3_test.cpp colour_test.cpp ray_test.cpp globals_test.cpp) +add_executable(raydiance_test vec3_test.cpp colour_test.cpp ray_test.cpp globals_test.cpp object_test.cpp) target_link_libraries(raydiance_test raydiance_lib GTest::gtest_main) diff --git a/tests/object_test.cpp b/tests/object_test.cpp new file mode 100644 index 0000000..e85acd2 --- /dev/null +++ b/tests/object_test.cpp @@ -0,0 +1,24 @@ +#include "raydiance/object.h" +#include + +TEST(IntersectionTest, SetFaceNormal) { + ray r1(point3{0, 0, 0}, vec3{0, 0, 1}); + vec3 on1{0, 0, -1}; + intersection i1; + i1.setFaceNormal(r1, on1); + + EXPECT_TRUE(i1.frontFace); + EXPECT_DOUBLE_EQ(i1.normal.x(), 0); + EXPECT_DOUBLE_EQ(i1.normal.y(), 0); + EXPECT_DOUBLE_EQ(i1.normal.z(), -1); + + ray r2(point3{0, 0, 0}, vec3{0, 0, -1}); + vec3 on2{0, 0, -1}; + intersection i2; + i2.setFaceNormal(r2, on2); + + EXPECT_FALSE(i2.frontFace); + EXPECT_DOUBLE_EQ(i2.normal.x(), 0); + EXPECT_DOUBLE_EQ(i2.normal.y(), 0); + EXPECT_DOUBLE_EQ(i2.normal.z(), 1); +} \ No newline at end of file