123 lines
3.4 KiB
C++
123 lines
3.4 KiB
C++
#ifdef WITH_TESTS
|
|
|
|
#include "../Tests.h"
|
|
#include "../../floorplan/v2/Floorplan.h"
|
|
#include "../../floorplan/v2/FloorplanReader.h"
|
|
#include "../../floorplan/v2/FloorplanWriter.h"
|
|
|
|
#include <cstdlib>
|
|
|
|
TEST(NewFloorplan, saveAndLoad) {
|
|
Floorplan::Reader r;
|
|
Floorplan::Writer w;
|
|
}
|
|
|
|
/*
|
|
TEST(NewFloorplan, saveAndLoad) {
|
|
|
|
std::string xml;
|
|
|
|
float f1AtHeight = 1.1f;
|
|
float f2AtHeight = 3.3f;
|
|
|
|
Floorplan::AccessPoint ap0("ap0", "11:11:11:22:22:22", Point3(1,1,1));
|
|
Floorplan::AccessPoint ap1("ap1", "01:23:45:67:89:ab", Point3(1,2,3));
|
|
Floorplan::AccessPoint ap2("ap2", "22:33:44:55:66:77", Point3(4,5,6));
|
|
|
|
Floorplan::Beacon b0("b0", "22:22:22:11:11:11", Point3(2,2,2));
|
|
Floorplan::Beacon b1("b1", "aa:bb:cc:dd:ee:ff", Point3(3,2,1));
|
|
Floorplan::Beacon b2("b2", "77:66:55:44:33:22", Point3(6,5,4));
|
|
|
|
Floorplan::FloorObstacle fo0(Floorplan::ObstacleType::WALL, Floorplan::Material::CONCRETE, Point2(3,2), Point2(1,2));
|
|
Floorplan::FloorObstacle fo1(Floorplan::ObstacleType::DOOR, Floorplan::Material::WOOD, Point2(4,5), Point2(7,8));
|
|
|
|
Floorplan::FloorOutlinePolygon pa0("pa0", {Point2(1,2), Point2(4,5), Point2(7,8)});
|
|
Floorplan::FloorOutlinePolygon pr0("pr0", {Point2(3,2), Point2(6,5), Point2(9,8)});
|
|
|
|
Floorplan::FloorOutlinePolygon pa1("pa1", {Point2(1,2), Point2(7,8)});
|
|
Floorplan::FloorOutlinePolygon pa2("pa2", {Point2(4,5), Point2(7,8)});
|
|
|
|
// create and export
|
|
{
|
|
|
|
Floorplan::IndoorMap im;
|
|
im.width = 123;
|
|
im.depth = 456;
|
|
|
|
// floor1
|
|
Floorplan::Floor f1;
|
|
f1.atHeight = f1AtHeight;
|
|
f1.accesspoints.push_back(ap0);
|
|
f1.beacons.push_back(b0);
|
|
f1.obstacles.push_back(fo0);
|
|
f1.obstacles.push_back(fo1);
|
|
f1.outline.add.push_back(pa0);
|
|
f1.outline.remove.push_back(pr0);
|
|
im.floors.push_back(f1);
|
|
|
|
// floor2
|
|
Floorplan::Floor f2;
|
|
f2.atHeight = f2AtHeight;
|
|
f2.accesspoints.push_back(ap1);
|
|
f2.accesspoints.push_back(ap2);
|
|
f2.beacons.push_back(b1);
|
|
f2.beacons.push_back(b2);
|
|
f2.outline.add.push_back(pa1);
|
|
f2.outline.add.push_back(pa2);
|
|
im.floors.push_back(f2);
|
|
|
|
xml = Floorplan::Writer::writeToString(im);
|
|
|
|
}
|
|
|
|
// load and check
|
|
{
|
|
|
|
const float delta = 0.0001;
|
|
|
|
Floorplan::IndoorMap im = Floorplan::Reader::readFromString(xml);
|
|
ASSERT_NEAR(123, im.width, delta);
|
|
ASSERT_NEAR(456, im.depth, delta);
|
|
ASSERT_EQ(2, im.floors.size());
|
|
|
|
// floor1
|
|
ASSERT_NEAR(f1AtHeight, im.floors[0].atHeight, delta);
|
|
ASSERT_EQ(1, im.floors[0].accesspoints.size());
|
|
ASSERT_EQ(1, im.floors[0].beacons.size());
|
|
ASSERT_EQ(2, im.floors[0].obstacles.size());
|
|
ASSERT_EQ(1, im.floors[0].outline.add.size());
|
|
ASSERT_EQ(1, im.floors[0].outline.remove.size());
|
|
|
|
ASSERT_EQ(ap0, im.floors[0].accesspoints[0]);
|
|
ASSERT_EQ(b0, im.floors[0].beacons[0]);
|
|
ASSERT_EQ(fo0, im.floors[0].obstacles[0]);
|
|
ASSERT_EQ(fo1, im.floors[0].obstacles[1]);
|
|
ASSERT_EQ(pa0, im.floors[0].outline.add[0]);
|
|
ASSERT_EQ(pr0, im.floors[0].outline.remove[0]);
|
|
|
|
// floor2
|
|
ASSERT_NEAR(f2AtHeight, im.floors[1].atHeight, delta);
|
|
ASSERT_EQ(2, im.floors[1].accesspoints.size());
|
|
ASSERT_EQ(2, im.floors[1].beacons.size());
|
|
ASSERT_EQ(0, im.floors[1].obstacles.size());
|
|
ASSERT_EQ(2, im.floors[1].outline.add.size());
|
|
ASSERT_EQ(0, im.floors[1].outline.remove.size());
|
|
|
|
ASSERT_EQ(ap1, im.floors[1].accesspoints[0]);
|
|
ASSERT_EQ(ap2, im.floors[1].accesspoints[1]);
|
|
ASSERT_EQ(b1, im.floors[1].beacons[0]);
|
|
ASSERT_EQ(b2, im.floors[1].beacons[1]);
|
|
ASSERT_EQ(pa1, im.floors[1].outline.add[0]);
|
|
ASSERT_EQ(pa2, im.floors[1].outline.add[1]);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
*/
|
|
|
|
|
|
|
|
#endif
|