Skip to content
Snippets Groups Projects
Commit a778819d authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Add tests for bad initialization when NDEBUG is not defined

parent 129c04ee
No related branches found
No related tags found
1 merge request!101Initialize arrays types with invalid data (non Release mode)
This commit is part of merge request !101. Comments created here will be created in the context of that merge request.
......@@ -243,5 +243,23 @@ TEST_CASE("Array", "[utils]")
Array<int> b{2 * a.size()};
REQUIRE_THROWS_AS(copy_to(a, b), AssertError);
}
SECTION("checking for nan initialization")
{
Array<double> array(10);
for (size_t i = 0; i < array.size(); ++i) {
REQUIRE(std::isnan(array[i]));
}
}
SECTION("checking for bad initialization")
{
Array<int> array(10);
for (size_t i = 0; i < array.size(); ++i) {
REQUIRE(array[i] == std::numeric_limits<int>::max() / 2);
}
}
#endif // NDEBUG
}
......@@ -145,12 +145,14 @@ TEST_CASE("CRSMatrixDescriptor", "[algebra]")
SECTION("incompatible non zero vector size and number of columns")
{
Array<int> non_zeros(3);
non_zeros.fill(1);
REQUIRE_THROWS_AS((CRSMatrixDescriptor<int>{2, 4, non_zeros}), AssertError);
}
SECTION("bad row number")
{
Array<int> non_zeros(2);
non_zeros.fill(1);
CRSMatrixDescriptor<int> S{2, 4, non_zeros};
REQUIRE_THROWS_AS(S(2, 3) = 1, AssertError);
}
......@@ -158,6 +160,7 @@ TEST_CASE("CRSMatrixDescriptor", "[algebra]")
SECTION("bad column number")
{
Array<int> non_zeros(2);
non_zeros.fill(2);
CRSMatrixDescriptor<int> S{2, 4, non_zeros};
REQUIRE_THROWS_AS(S(0, 5) = 1, AssertError);
}
......
......@@ -199,5 +199,27 @@ TEST_CASE("Table", "[utils]")
REQUIRE_THROWS_AS(copy_to(a, c), AssertError);
}
}
SECTION("checking for nan initialization")
{
Table<double> B(3, 4);
for (size_t i = 0; i < B.numberOfRows(); ++i) {
for (size_t j = 0; j < B.numberOfColumns(); ++j) {
REQUIRE(std::isnan(B(i, j)));
}
}
}
SECTION("checking for bad initialization")
{
Table<int> B(4, 2);
for (size_t i = 0; i < B.numberOfRows(); ++i) {
for (size_t j = 0; j < B.numberOfColumns(); ++j) {
REQUIRE(B(i, j) == std::numeric_limits<int>::max() / 2);
}
}
}
#endif // NDEBUG
}
......@@ -238,5 +238,27 @@ TEST_CASE("TinyMatrix", "[algebra]")
REQUIRE_THROWS_AS(constA(3, 0), AssertError);
REQUIRE_THROWS_AS(constA(0, 3), AssertError);
}
SECTION("checking for nan initialization")
{
TinyMatrix<3, double> B;
for (size_t i = 0; i < B.numberOfRows(); ++i) {
for (size_t j = 0; j < B.numberOfColumns(); ++j) {
REQUIRE(std::isnan(B(i, j)));
}
}
}
SECTION("checking for bad initialization")
{
TinyMatrix<3, int> B;
for (size_t i = 0; i < B.numberOfRows(); ++i) {
for (size_t j = 0; j < B.numberOfColumns(); ++j) {
REQUIRE(B(i, j) == std::numeric_limits<int>::max() / 2);
}
}
}
#endif // NDEBUG
}
......@@ -87,5 +87,24 @@ TEST_CASE("TinyVector", "[algebra]")
const TinyVector<3, int>& const_x = x;
REQUIRE_THROWS_AS(const_x[-1], AssertError);
}
SECTION("checking for nan initialization")
{
TinyVector<3, double> y;
for (size_t i = 0; i < y.dimension(); ++i) {
REQUIRE(std::isnan(y[i]));
}
}
SECTION("checking for bad initialization")
{
TinyVector<3, int> y;
for (size_t i = 0; i < y.dimension(); ++i) {
REQUIRE(y[i] == std::numeric_limits<int>::max() / 2);
}
}
#endif // NDEBUG
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment