mirror of
https://git.gfz-potsdam.de/naaice/tug.git
synced 2025-12-13 09:28:23 +01:00
68 lines
3.3 KiB
C++
68 lines
3.3 KiB
C++
#include <stdio.h>
|
|
#include <doctest/doctest.h>
|
|
#include <tug/Boundary.hpp>
|
|
#include <string>
|
|
#include <typeinfo>
|
|
#include <iostream>
|
|
|
|
TEST_CASE("BoundaryElement"){
|
|
|
|
SUBCASE("Closed case"){
|
|
BoundaryElement boundaryElementClosed = BoundaryElement();
|
|
CHECK_NOTHROW(BoundaryElement());
|
|
CHECK_EQ(boundaryElementClosed.getType(), BC_TYPE_CLOSED);
|
|
CHECK_EQ(isnan(boundaryElementClosed.getValue()), isnan(NAN));
|
|
CHECK_THROWS(boundaryElementClosed.setValue(0.2));
|
|
}
|
|
|
|
SUBCASE("Constant case"){
|
|
BoundaryElement boundaryElementConstant = BoundaryElement(0.1);
|
|
CHECK_NOTHROW(BoundaryElement(0.1));
|
|
CHECK_EQ(boundaryElementConstant.getType(), BC_TYPE_CONSTANT);
|
|
CHECK_EQ(boundaryElementConstant.getValue(), 0.1);
|
|
CHECK_NOTHROW(boundaryElementConstant.setValue(0.2));
|
|
CHECK_EQ(boundaryElementConstant.getValue(), 0.2);
|
|
}
|
|
}
|
|
|
|
TEST_CASE("Boundary Class"){
|
|
Grid grid1D = Grid(10);
|
|
Grid grid2D = Grid(10, 12);
|
|
Boundary boundary1D = Boundary(grid1D);
|
|
Boundary boundary2D = Boundary(grid2D);
|
|
vector<BoundaryElement> boundary1DVector(1, BoundaryElement(1.0));
|
|
|
|
SUBCASE("Boundaries 1D case"){
|
|
CHECK_NOTHROW(Boundary boundary(grid1D));
|
|
CHECK_EQ(boundary1D.getBoundarySide(BC_SIDE_LEFT).size(), 1);
|
|
CHECK_EQ(boundary1D.getBoundarySide(BC_SIDE_RIGHT).size(), 1);
|
|
CHECK_EQ(boundary1D.getBoundaryElementType(BC_SIDE_LEFT, 0), BC_TYPE_CLOSED);
|
|
CHECK_THROWS(boundary1D.getBoundarySide(BC_SIDE_TOP));
|
|
CHECK_THROWS(boundary1D.getBoundarySide(BC_SIDE_BOTTOM));
|
|
CHECK_NOTHROW(boundary1D.setBoundarySideClosed(BC_SIDE_LEFT));
|
|
CHECK_THROWS(boundary1D.setBoundarySideClosed(BC_SIDE_TOP));
|
|
CHECK_NOTHROW(boundary1D.setBoundarySideConstant(BC_SIDE_LEFT, 1.0));
|
|
CHECK_EQ(boundary1D.getBoundaryElementValue(BC_SIDE_LEFT, 0), 1.0);
|
|
CHECK_THROWS(boundary1D.getBoundaryElementValue(BC_SIDE_LEFT, 2));
|
|
CHECK_EQ(boundary1D.getBoundaryElementType(BC_SIDE_LEFT, 0), BC_TYPE_CONSTANT);
|
|
CHECK_EQ(boundary1D.getBoundaryElement(BC_SIDE_LEFT, 0).getType(), boundary1DVector[0].getType());
|
|
}
|
|
|
|
SUBCASE("Boundaries 2D case"){
|
|
CHECK_NOTHROW(Boundary boundary(grid1D));
|
|
CHECK_EQ(boundary2D.getBoundarySide(BC_SIDE_LEFT).size(), 10);
|
|
CHECK_EQ(boundary2D.getBoundarySide(BC_SIDE_RIGHT).size(), 10);
|
|
CHECK_EQ(boundary2D.getBoundarySide(BC_SIDE_TOP).size(), 12);
|
|
CHECK_EQ(boundary2D.getBoundarySide(BC_SIDE_BOTTOM).size(), 12);
|
|
CHECK_EQ(boundary2D.getBoundaryElementType(BC_SIDE_LEFT, 0), BC_TYPE_CLOSED);
|
|
CHECK_NOTHROW(boundary2D.getBoundarySide(BC_SIDE_TOP));
|
|
CHECK_NOTHROW(boundary2D.getBoundarySide(BC_SIDE_BOTTOM));
|
|
CHECK_NOTHROW(boundary2D.setBoundarySideClosed(BC_SIDE_LEFT));
|
|
CHECK_NOTHROW(boundary2D.setBoundarySideClosed(BC_SIDE_TOP));
|
|
CHECK_NOTHROW(boundary2D.setBoundarySideConstant(BC_SIDE_LEFT, 1.0));
|
|
CHECK_EQ(boundary2D.getBoundaryElementValue(BC_SIDE_LEFT, 0), 1.0);
|
|
CHECK_THROWS(boundary2D.getBoundaryElementValue(BC_SIDE_LEFT, 12));
|
|
CHECK_EQ(boundary2D.getBoundaryElementType(BC_SIDE_LEFT, 0), BC_TYPE_CONSTANT);
|
|
CHECK_EQ(boundary2D.getBoundaryElement(BC_SIDE_LEFT, 0).getType(), boundary1DVector[0].getType());
|
|
}
|
|
} |