LCOV - code coverage report
Current view: top level - projectors/tests - test_BoundingBox.cpp (source / functions) Hit Total Coverage
Test: test_coverage.info.cleaned Lines: 51 51 100.0 %
Date: 2022-02-28 03:37:41 Functions: 2 2 100.0 %

          Line data    Source code
       1             : /**
       2             :  * @file test_BoundingBox.cpp
       3             :  *
       4             :  * @brief Test for BoundingBox struct
       5             :  *
       6             :  * @author David Frank - initial code
       7             :  */
       8             : 
       9             : #include "doctest/doctest.h"
      10             : #include "BoundingBox.h"
      11             : #include "testHelpers.h"
      12             : 
      13             : using namespace elsa;
      14             : using namespace doctest;
      15             : 
      16           2 : TEST_CASE("BoundingBox: Testing 2D AABB")
      17             : {
      18           4 :     GIVEN("An aabb of size 10x15")
      19             :     {
      20             :         // setup
      21           2 :         std::size_t dim = 2;
      22           2 :         index_t x = 10;
      23           2 :         index_t y = 15;
      24           4 :         IndexVector_t volumeDims(dim);
      25           2 :         volumeDims << x, y;
      26             : 
      27           3 :         WHEN("instantiating the AABB")
      28             :         {
      29           2 :             BoundingBox aabb(volumeDims);
      30             : 
      31           2 :             THEN("The min is set to the origin (0, 0) and the max is (10, 15)")
      32             :             {
      33           1 :                 REQUIRE_EQ(aabb._dim, dim);
      34             : 
      35           1 :                 REQUIRE_UNARY(checkApproxEq(aabb._min(0), 0));
      36           1 :                 REQUIRE_UNARY(checkApproxEq(aabb._min(1), 0));
      37             : 
      38           1 :                 REQUIRE_UNARY(checkApproxEq(aabb._max(0), (real_t) x));
      39           1 :                 REQUIRE_UNARY(checkApproxEq(aabb._max(1), (real_t) y));
      40             : 
      41           1 :                 REQUIRE_UNARY(checkApproxEq(aabb._voxelCoordToIndexVector(0), 1));
      42           1 :                 REQUIRE_UNARY(checkApproxEq(aabb._voxelCoordToIndexVector(1), y));
      43             :             }
      44             :         }
      45             : 
      46           3 :         WHEN("copying the AABB")
      47             :         {
      48           2 :             BoundingBox aabb(volumeDims);
      49           2 :             auto aabbcopy = aabb;
      50             : 
      51           2 :             THEN("A copy is created succesfully")
      52             :             {
      53           1 :                 REQUIRE_EQ(aabbcopy._dim, dim);
      54             : 
      55           1 :                 REQUIRE_UNARY(checkApproxEq(aabbcopy._min(0), 0));
      56           1 :                 REQUIRE_UNARY(checkApproxEq(aabbcopy._min(1), 0));
      57             : 
      58           1 :                 REQUIRE_UNARY(checkApproxEq(aabbcopy._max(0), (real_t) x));
      59           1 :                 REQUIRE_UNARY(checkApproxEq(aabbcopy._max(1), (real_t) y));
      60             : 
      61           1 :                 REQUIRE_EQ(aabbcopy._voxelCoordToIndexVector(0), 1);
      62           1 :                 REQUIRE_EQ(aabbcopy._voxelCoordToIndexVector(1), y);
      63             :             }
      64             :         }
      65             :     }
      66           2 : }
      67             : 
      68           1 : TEST_CASE("BoundingBox: Testing 3D aabb")
      69             : {
      70           2 :     GIVEN("An aabb of size 10x15x20 with uniform")
      71             :     {
      72             :         // setup
      73           1 :         size_t dim = 3;
      74           1 :         index_t x = 10;
      75           1 :         index_t y = 15;
      76           1 :         index_t z = 20;
      77           2 :         IndexVector_t volumeDims(dim);
      78           1 :         volumeDims << x, y, z;
      79             : 
      80           2 :         WHEN("instantiating the AABB")
      81             :         {
      82           2 :             BoundingBox aabb(volumeDims);
      83             : 
      84           2 :             THEN("The min is set to the origin (0, 0, 0) and the max is (10, 15, 20)")
      85             :             {
      86           1 :                 REQUIRE_EQ(aabb._dim, dim);
      87             : 
      88           1 :                 REQUIRE_UNARY(checkApproxEq(aabb._min(0), 0));
      89           1 :                 REQUIRE_UNARY(checkApproxEq(aabb._min(1), 0));
      90           1 :                 REQUIRE_UNARY(checkApproxEq(aabb._min(2), 0));
      91             : 
      92           1 :                 REQUIRE_UNARY(checkApproxEq(aabb._max(0), (real_t) x));
      93           1 :                 REQUIRE_UNARY(checkApproxEq(aabb._max(1), (real_t) y));
      94           1 :                 REQUIRE_UNARY(checkApproxEq(aabb._max(2), (real_t) z));
      95             : 
      96           1 :                 REQUIRE_EQ(aabb._voxelCoordToIndexVector(0), 1);
      97           1 :                 REQUIRE_EQ(aabb._voxelCoordToIndexVector(1), y);
      98           1 :                 REQUIRE_EQ(aabb._voxelCoordToIndexVector(2), (z * z));
      99             :             }
     100             :         }
     101             :     }
     102           1 : }

Generated by: LCOV version 1.15