#ifndef RUNTIMETESTS_H #define RUNTIMETESTS_H #include #include "ipin/Scaler.h" class RuntimeTests { public: static void run() { testFingerprint(); testScaler(); } private: static void testScaler() { IPINScaler scaler = IPINScaler(1869, 1869, 40.51312440, -3.34959080, -40.73112000, 0.07596002); // map center const float cenX = 1869/2.0*0.07596002; const float cenY = 1869/2.0*0.07596002; const IPIN lonlat = scaler.toIPIN3(cenX, cenY, 0); Assert::isNear(40.51312440, lonlat.lat, 0.000001, "scaler error"); // lat = up/down Assert::isNear(-3.34959080, lonlat.lon, 0.000001, "scaler error"); // lon = left/right Assert::isNear(0.0, lonlat.floorNr, 0.1, "scaler error"); const Point3 p3 = scaler.convert3D(lonlat); Assert::isNear(cenX, p3.x, 0.01f, "scaler error"); Assert::isNear(cenY, p3.y, 0.01f, "scaler error"); Assert::isNear(0.0f, p3.z, 0.01f, "scaler error"); } static void testFingerprint() { MACAddress mac1("00:00:00:00:00:01"); MACAddress mac2("00:00:00:00:00:02"); WiFiFingerprint fp; fp.measurements.entries.push_back( WiFiMeasurement(AccessPoint(mac1), -60)); fp.measurements.entries.push_back( WiFiMeasurement(AccessPoint(mac1), -62)); fp.measurements.entries.push_back( WiFiMeasurement(AccessPoint(mac1), -63)); fp.measurements.entries.push_back( WiFiMeasurement(AccessPoint(mac2), -71)); fp.measurements.entries.push_back( WiFiMeasurement(AccessPoint(mac2), -72)); WiFiMeasurements avg = fp.average(); Assert::equal(2, (int)avg.entries.size(), "size mismatch"); Assert::isNear(-61.666f, avg.entries[1].getRSSI(), 0.01f, "rssi avg mismatch"); Assert::isNear(-71.500f, avg.entries[0].getRSSI(), 0.01f, "rssi avg mismatch"); } }; #endif // RUNTIMETESTS_H