many changes and updates

- changed the wifi-estimation api
- adjusted test-cases
- worked on grid-bulding and grid-importance
- new walking modules
- fixed some minor issues
This commit is contained in:
2016-08-29 19:02:32 +02:00
parent a2c9e575a2
commit a203305628
23 changed files with 505 additions and 251 deletions

View File

@@ -32,7 +32,9 @@ TEST(Grid, add) {
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_THROW(grid.add(GP(20,20,11)), std::exception); // unaligned z is OK
// aligned -> OK
ASSERT_EQ(1, grid.add(GP(20,20,20)));
// access
@@ -127,13 +129,64 @@ TEST(Grid, uid) {
Grid<GP> grid(20);
GP gp(20,40,60);
uint64_t uid = grid.getUID(gp);
GP gp1(+20, +40, +60);
GP gp2(-20, -40, -60);
const uint64_t uid1 = grid.getUID(gp1);
const uint64_t uid2 = grid.getUID(gp2);
// must be different
ASSERT_NE(uid1, uid2);
const uint64_t center = 1 << 19;
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
ASSERT_EQ(center+60/20*5, (uid1) >> 40 & mask); // z (z UID has a higher resolution: * 5
ASSERT_EQ(center+40/20, (uid1) >> 20 & mask); // y
ASSERT_EQ(center+20/20, (uid1) >> 0 & mask); // x
ASSERT_EQ(center-60/20*5, (uid2) >> 40 & mask); // z (z UID has a higher resolution: * 5
ASSERT_EQ(center-40/20, (uid2) >> 20 & mask); // y
ASSERT_EQ(center-20/20, (uid2) >> 0 & mask); // x
}
TEST(Grid, unconnect) {
Grid<GP> grid(1);
int idx1 = grid.add(GP(0,0,0));
int idx2 = grid.add(GP(1,0,0));
int idx3 = grid.add(GP(1,1,0));
grid.connectBiDir(idx1,idx2);
grid.connectBiDir(idx2,idx3);
grid.connectBiDir(idx3,idx1);
ASSERT_EQ(2, grid.getNumNeighbors(idx1));
ASSERT_EQ(2, grid.getNumNeighbors(idx2));
ASSERT_EQ(2, grid.getNumNeighbors(idx3));
grid.disconnectUniDir(idx1, idx2);
ASSERT_EQ(1, grid.getNumNeighbors(idx1)); ASSERT_EQ(idx3, grid.getNeighbor(idx1,0).getIdx());
ASSERT_EQ(2, grid.getNumNeighbors(idx2));
grid.disconnectUniDir(idx2,idx1);
ASSERT_EQ(1, grid.getNumNeighbors(idx1)); ASSERT_EQ(idx3, grid.getNeighbor(idx1,0).getIdx());
ASSERT_EQ(1, grid.getNumNeighbors(idx2)); ASSERT_EQ(idx3, grid.getNeighbor(idx2,0).getIdx());
grid.disconnectUniDir(idx1, idx3);
ASSERT_EQ(0, grid.getNumNeighbors(idx1));
ASSERT_EQ(2, grid.getNumNeighbors(idx3));
grid.disconnectUniDir(idx3, idx1);
ASSERT_EQ(0, grid.getNumNeighbors(idx1));
ASSERT_EQ(1, grid.getNumNeighbors(idx3)); ASSERT_EQ(idx2, grid.getNeighbor(idx3,0).getIdx());
grid.disconnectUniDir(idx2, idx3);
ASSERT_EQ(0, grid.getNumNeighbors(idx2));
ASSERT_EQ(1, grid.getNumNeighbors(idx3));
grid.disconnectUniDir(idx3, idx2);
ASSERT_EQ(0, grid.getNumNeighbors(idx2));
ASSERT_EQ(0, grid.getNumNeighbors(idx3));
}
@@ -230,19 +283,19 @@ TEST(Grid, nearest) {
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(20,20,15))); // Z has a higher resolution!
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(c1, grid.getNodeFor(GP(20,20,25))); // Z has a higher resolution!
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(40,40,35))); // Z has a higher resolution!
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)));
//ASSERT_EQ(c2, grid.getNodeFor(GP(40,40,45))); // Z has a higher resolution!
}