From 4d57e60ecb5a03a5832e912d6f0ba5b3788e3aca Mon Sep 17 00:00:00 2001 From: NADAL Jean-Baptiste Date: Wed, 14 Feb 2024 18:36:02 +0100 Subject: [PATCH] [ADD] Add skeleton form normal test --- tests/05_rays.cpp | 2 - tests/06_light_shading.cpp | 107 +++++++++++++++++++++++++++++++++++++ tests/CMakeLists.txt | 1 + 3 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 tests/06_light_shading.cpp diff --git a/tests/05_rays.cpp b/tests/05_rays.cpp index cc059ab..93d45dd 100644 --- a/tests/05_rays.cpp +++ b/tests/05_rays.cpp @@ -33,8 +33,6 @@ using namespace Raytracer; /* ------------------------------------------------------------------------- */ -/* ------------------------------------------------------------------------- */ - SCENARIO("Creating and querying a ray", "[features/rays.feature]") { GIVEN("origin <- point(1, 2, 3)") diff --git a/tests/06_light_shading.cpp b/tests/06_light_shading.cpp new file mode 100644 index 0000000..aec573b --- /dev/null +++ b/tests/06_light_shading.cpp @@ -0,0 +1,107 @@ +/*! + * 06_light_shading.cpp + * + * Copyright (c) 2015-2024, NADAL Jean-Baptiste. All rights reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + * + * @Author: NADAL Jean-Baptiste + * @Date: 14/02/2024 + * + */ + +/*---------------------------------------------------------------------------*/ + +#include + +#include "raytracing.h" + +using namespace Raytracer; + +/* ------------------------------------------------------------------------- */ + +SCENARIO("The normal on a sphere at point a on the x axis", "[features/spheres.feature]") +{ + GIVEN("s <- sphere()") + { + WHEN("n <- normal_at(s, point(1,0,0))") + { + THEN("n = vector(1,0,0)") + { + } + } + } +} + +/* ------------------------------------------------------------------------- */ + +SCENARIO("The normal on a sphere at point a on the y axis", "[features/spheres.feature]") +{ + GIVEN("s <- sphere()") + { + WHEN("n <- normal_at(s, point(0,1,0))") + { + THEN("n = vector(0,1,0)") + { + } + } + } +} + +/* ------------------------------------------------------------------------- */ + +SCENARIO("The normal on a sphere at point a on the z axis", "[features/spheres.feature]") +{ + GIVEN("s <- sphere()") + { + WHEN("n <- normal_at(s, point(0,0,1))") + { + THEN("n = vector(0,0,1)") + { + } + } + } +} + +/* ------------------------------------------------------------------------- */ + +SCENARIO("The normal on a sphere at a nonaxial point", "[features/spheres.feature]") +{ + GIVEN("s <- sphere()") + { + WHEN("n <- normal_at(s, point(sqrt(3)/3,sqrt(3)/3,sqrt(3)/3))") + { + THEN("n = vector(sqrt(3)/3,sqrt(3)/3,sqrt(3)/3)") + { + } + } + } +} + +/* ------------------------------------------------------------------------- */ + +SCENARIO("The normal is a normalized vector", "[features/spheres.feature]") +{ + GIVEN("s <- sphere()") + { + WHEN("n <- normal_at(s, point(sqrt(3)/3,sqrt(3)/3,sqrt(3)/3))") + { + THEN("n = normalize(n)") + { + } + } + } +} diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 395df7a..478fbd4 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -16,6 +16,7 @@ add_executable(raytracing_test 03_matrix.cpp 04_transformations.cpp 05_rays.cpp + 06_light_shading.cpp ) include_directories("${CMAKE_SOURCE_DIR}/tests")