initial version
This commit is contained in:
47
tests/grid/TestBBox.cpp
Executable file
47
tests/grid/TestBBox.cpp
Executable file
@@ -0,0 +1,47 @@
|
||||
#ifdef WITH_TESTS
|
||||
|
||||
#include "../Tests.h"
|
||||
#include "../../grid/GridNodeBBox.h"
|
||||
|
||||
TEST(BBox, equals) {
|
||||
|
||||
GridNodeBBox bb1(GridPoint(2,2,2), 2);
|
||||
GridNodeBBox bb2(GridPoint(2,2,2), 2);
|
||||
|
||||
GridNodeBBox bb3(GridPoint(3,2,2), 2);
|
||||
GridNodeBBox bb4(GridPoint(2,3,2), 2);
|
||||
GridNodeBBox bb5(GridPoint(2,2,3), 2);
|
||||
GridNodeBBox bb6(GridPoint(2,2,2), 4);
|
||||
|
||||
ASSERT_TRUE(bb1 == bb2);
|
||||
ASSERT_TRUE(bb1 == bb5); // z doesnt matter for the bbox
|
||||
|
||||
ASSERT_FALSE(bb1 == bb3);
|
||||
ASSERT_FALSE(bb1 == bb4);
|
||||
ASSERT_FALSE(bb1 == bb6);
|
||||
|
||||
}
|
||||
|
||||
TEST(BBox, intersect) {
|
||||
|
||||
GridNodeBBox bb1(GridPoint(20,20,20), 20);
|
||||
|
||||
// left
|
||||
ASSERT_FALSE(bb1.intersects( Line2D(9, -999, 9, +999) ));
|
||||
ASSERT_TRUE (bb1.intersects( Line2D(11, -999, 11, +999) ));
|
||||
|
||||
// right
|
||||
ASSERT_TRUE (bb1.intersects( Line2D(29, -999, 29, +999) ));
|
||||
ASSERT_FALSE(bb1.intersects( Line2D(31, -999, 31, +999) ));
|
||||
|
||||
// top
|
||||
ASSERT_FALSE(bb1.intersects( Line2D(-999, 9, +999, 9) ));
|
||||
ASSERT_TRUE (bb1.intersects( Line2D(-999, 11, +999, 11) ));
|
||||
|
||||
// bottom
|
||||
ASSERT_TRUE (bb1.intersects( Line2D(-999, 29, +999, 29) ));
|
||||
ASSERT_FALSE(bb1.intersects( Line2D(-999, 31, +999, 31) ));
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
112
tests/grid/TestGrid.cpp
Executable file
112
tests/grid/TestGrid.cpp
Executable file
@@ -0,0 +1,112 @@
|
||||
#ifdef WITH_TESTS
|
||||
|
||||
#include "../Tests.h"
|
||||
#include "../../grid/Grid.h"
|
||||
#include "../../grid/GridPoint.h"
|
||||
#include "../../grid/GridNode.h"
|
||||
|
||||
class GP : public GridNode, public GridPoint {
|
||||
public:
|
||||
GP() : GridNode(), GridPoint() {;}
|
||||
GP(int x, int y, int z) : GridNode(), GridPoint(x,y,z) {;}
|
||||
|
||||
};
|
||||
|
||||
TEST(Grid, add) {
|
||||
|
||||
Grid<20, GP> grid;
|
||||
ASSERT_EQ(0, grid.add(GP()));
|
||||
ASSERT_EQ(1, grid.add(GP()));
|
||||
ASSERT_EQ(2, grid.add(GP()));
|
||||
ASSERT_EQ(3, grid.add(GP()));
|
||||
|
||||
// not aligned? -> error
|
||||
ASSERT_THROW(grid.add(GP(10,10,10)), std::exception);
|
||||
ASSERT_THROW(grid.add(GP(10,20,20)), std::exception);
|
||||
ASSERT_THROW(grid.add(GP(20,10,20)), std::exception);
|
||||
ASSERT_THROW(grid.add(GP(20,20,10)), std::exception);
|
||||
ASSERT_EQ(4, grid.add(GP(20,20,20)));
|
||||
|
||||
// access
|
||||
ASSERT_EQ(GP(20,20,20), grid[4]);
|
||||
|
||||
}
|
||||
|
||||
TEST(Grid, BBox) {
|
||||
|
||||
Grid<20, GP> grid;
|
||||
int idx = grid.add(GP(40,40,40));
|
||||
ASSERT_EQ(30, grid.getBBox(idx).x1_cm);
|
||||
ASSERT_EQ(50, grid.getBBox(idx).x2_cm);
|
||||
ASSERT_EQ(30, grid.getBBox(idx).y1_cm);
|
||||
ASSERT_EQ(50, grid.getBBox(idx).y2_cm);
|
||||
|
||||
}
|
||||
|
||||
|
||||
TEST(Grid, neighbors) {
|
||||
|
||||
Grid<1, GP> grid;
|
||||
|
||||
int idx1 = grid.add(GP( 0, 0, 0));
|
||||
int idx2 = grid.add(GP( 0, 1, 0));
|
||||
int idx3 = grid.add(GP( 0,-1, 0));
|
||||
int idx4 = grid.add(GP( 1, 0, 0));
|
||||
int idx5 = grid.add(GP(-1, 0, 0));
|
||||
|
||||
grid.connect(idx1, idx2);
|
||||
grid.connect(idx1, idx3);
|
||||
grid.connect(idx1, idx4);
|
||||
grid.connect(idx1, idx5);
|
||||
|
||||
ASSERT_EQ(4, grid.getNumNeighbors(idx1));
|
||||
ASSERT_EQ(1, grid.getNumNeighbors(idx2));
|
||||
ASSERT_EQ(1, grid.getNumNeighbors(idx3));
|
||||
ASSERT_EQ(1, grid.getNumNeighbors(idx4));
|
||||
ASSERT_EQ(1, grid.getNumNeighbors(idx5));
|
||||
|
||||
}
|
||||
|
||||
TEST(Grid, uid) {
|
||||
|
||||
Grid<20, GP> grid;
|
||||
|
||||
GP gp(20,40,60);
|
||||
uint64_t uid = grid.getUID(gp);
|
||||
|
||||
const int mask = (1 << 20) - 1; // 20-bit mask
|
||||
ASSERT_EQ(3, uid >> 40 & mask); // x
|
||||
ASSERT_EQ(2, uid >> 20 & mask); // y
|
||||
ASSERT_EQ(1, uid >> 0 & mask); // z
|
||||
|
||||
}
|
||||
|
||||
TEST(Grid, nearest) {
|
||||
|
||||
Grid<20, GP> grid;
|
||||
|
||||
GP c1(20,20,20);
|
||||
GP c2(40,40,40);
|
||||
|
||||
grid.add(c1);
|
||||
grid.add(c2);
|
||||
|
||||
ASSERT_EQ(c1, grid.getNodeFor(GP(15,20,20)));
|
||||
ASSERT_EQ(c1, grid.getNodeFor(GP(20,15,20)));
|
||||
ASSERT_EQ(c1, grid.getNodeFor(GP(20,20,15)));
|
||||
|
||||
ASSERT_EQ(c1, grid.getNodeFor(GP(25,20,20)));
|
||||
ASSERT_EQ(c1, grid.getNodeFor(GP(20,25,20)));
|
||||
ASSERT_EQ(c1, grid.getNodeFor(GP(20,20,25)));
|
||||
|
||||
ASSERT_EQ(c2, grid.getNodeFor(GP(35,40,40)));
|
||||
ASSERT_EQ(c2, grid.getNodeFor(GP(40,35,40)));
|
||||
ASSERT_EQ(c2, grid.getNodeFor(GP(40,40,35)));
|
||||
|
||||
ASSERT_EQ(c2, grid.getNodeFor(GP(45,40,40)));
|
||||
ASSERT_EQ(c2, grid.getNodeFor(GP(40,45,40)));
|
||||
ASSERT_EQ(c2, grid.getNodeFor(GP(40,40,45)));
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
45
tests/grid/TestGridFactory.cpp
Executable file
45
tests/grid/TestGridFactory.cpp
Executable file
@@ -0,0 +1,45 @@
|
||||
#ifdef WITH_TESTS
|
||||
|
||||
#include "../Tests.h"
|
||||
#include "../../grid/factory/GridFactory.h"
|
||||
#include "../../floorplan/FloorplanFactorySVG.h"
|
||||
|
||||
#include <KLib/misc/gnuplot/Gnuplot.h>
|
||||
#include <KLib/misc/gnuplot/GnuplotSplot.h>
|
||||
#include <KLib/misc/gnuplot/GnuplotSplotElementPoints.h>
|
||||
|
||||
class GP : public GridNode, public GridPoint {
|
||||
public:
|
||||
GP() : GridNode(), GridPoint() {;}
|
||||
GP(int x, int y, int z) : GridNode(), GridPoint(x,y,z) {;}
|
||||
|
||||
};
|
||||
|
||||
TEST(GridFactory, create) {
|
||||
|
||||
Grid<20, GP> g;
|
||||
GridFactory<20, GP> gf(g);
|
||||
FloorplanFactorySVG fpf(getDataFile("test.svg"), 2);
|
||||
Floor f1 = fpf.getFloor("1");
|
||||
|
||||
gf.addFloor(f1, 0);
|
||||
|
||||
K::Gnuplot gp;
|
||||
K::GnuplotSplot splot;
|
||||
K::GnuplotSplotElementPoints points;
|
||||
|
||||
for (int i = 0; i < g.getNumNodes(); ++i) {
|
||||
const GP& node = g[i];
|
||||
points.add(K::GnuplotPoint3(node.x_cm, node.y_cm, node.z_cm));
|
||||
}
|
||||
|
||||
splot.add(&points);
|
||||
gp.draw(splot);
|
||||
gp.flush();
|
||||
|
||||
sleep(10);
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
20
tests/grid/TestGridPoint.cpp
Executable file
20
tests/grid/TestGridPoint.cpp
Executable file
@@ -0,0 +1,20 @@
|
||||
#ifdef WITH_TESTS
|
||||
|
||||
#include "../Tests.h"
|
||||
|
||||
#include "../../grid/GridPoint.h"
|
||||
|
||||
TEST(GridPoint, distance) {
|
||||
|
||||
GridPoint p1(0,0,0);
|
||||
GridPoint p2(100,0,0);
|
||||
GridPoint p3(0,100,0);
|
||||
GridPoint p4(0,0,100);
|
||||
|
||||
ASSERT_EQ(1, p1.getDistanceInMeter(p2));
|
||||
ASSERT_EQ(1, p1.getDistanceInMeter(p3));
|
||||
ASSERT_EQ(1, p1.getDistanceInMeter(p4));
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user