[Positioning] InputLogCSV: Handle calib. requests
InputLogCSV now handles calibration requests. TestUtil: - Request list become a Request pointer list (to handle polymorphism). - Add a ReferencePoint list. - Reorganise create_test_csv_file().
This commit is contained in:
parent
e70a255083
commit
49ba6ab320
|
@ -1,6 +1,8 @@
|
|||
#include "inputlogcsv.hh"
|
||||
#include "posexcept.hh"
|
||||
#include "mobile.hh"
|
||||
#include "calibrationrequest.hh"
|
||||
#include "referencepoint.hh"
|
||||
|
||||
#include <sstream>
|
||||
|
||||
|
@ -56,8 +58,20 @@ const string InputLogCSV::request_to_csv(const Request &request) const
|
|||
ostringstream csv_line ;
|
||||
if (request.get_mobile() != NULL)
|
||||
csv_line << request.get_mobile()->get_mac_addr() ;
|
||||
csv_line << ';' << request.get_timestamp().get_timestamp_ms() ;
|
||||
csv_line << ";0;0;0;0" ; // TODO: handle calibration request
|
||||
csv_line << ';' << request.get_timestamp().get_timestamp_ms() << ';' ;
|
||||
|
||||
const CalibrationRequest *calibration_request =
|
||||
dynamic_cast<const CalibrationRequest*>(&request) ;
|
||||
if (calibration_request == NULL)
|
||||
csv_line << "0;0;0;0" ;
|
||||
else
|
||||
{
|
||||
csv_line
|
||||
<< calibration_request->get_reference_point()->get_x() << ';'
|
||||
<< calibration_request->get_reference_point()->get_y() << ';'
|
||||
<< calibration_request->get_reference_point()->get_z() << ';'
|
||||
<< static_cast<int>(calibration_request->get_direction()) ;
|
||||
}
|
||||
|
||||
const unordered_map<string, Measurement> &measurements =
|
||||
request.get_measurements() ;
|
||||
|
|
|
@ -68,7 +68,7 @@ public:
|
|||
TS_ASSERT_EQUALS(request1.get_mobile()->get_mac_addr(),
|
||||
TestUtil::mobiles[0].get_mac_addr()) ;
|
||||
TS_ASSERT_EQUALS(request1.get_timestamp(),
|
||||
TestUtil::requests[0].get_timestamp()) ;
|
||||
TestUtil::requests.at(0)->get_timestamp()) ;
|
||||
|
||||
for (std::vector<AccessPoint>::const_iterator i = TestUtil::aps.begin() ;
|
||||
i != TestUtil::aps.end() ; ++i)
|
||||
|
@ -77,7 +77,7 @@ public:
|
|||
measurement_it1 =
|
||||
request1.get_measurements().find(i->get_mac_addr()) ;
|
||||
TS_ASSERT_DIFFERS(request1.get_measurements().end(), measurement_it1) ;
|
||||
TS_ASSERT_EQUALS(TestUtil::requests[0].get_measurements().
|
||||
TS_ASSERT_EQUALS(TestUtil::requests.at(0)->get_measurements().
|
||||
at(i->get_mac_addr()).get_ss_list(),
|
||||
measurement_it1->second.get_ss_list()) ;
|
||||
}
|
||||
|
@ -91,7 +91,7 @@ public:
|
|||
TS_ASSERT_EQUALS(request1.get_mobile()->get_mac_addr(),
|
||||
TestUtil::mobiles[1].get_mac_addr()) ;
|
||||
TS_ASSERT_EQUALS(request1.get_timestamp(),
|
||||
TestUtil::requests[1].get_timestamp()) ;
|
||||
TestUtil::requests.at(1)->get_timestamp()) ;
|
||||
|
||||
for (std::vector<AccessPoint>::const_iterator i = TestUtil::aps.begin() ;
|
||||
i != TestUtil::aps.end() ; ++i)
|
||||
|
@ -100,7 +100,7 @@ public:
|
|||
measurement_it1 =
|
||||
request1.get_measurements().find(i->get_mac_addr()) ;
|
||||
TS_ASSERT_DIFFERS(request1.get_measurements().end(), measurement_it1) ;
|
||||
TS_ASSERT_EQUALS(TestUtil::requests[1].get_measurements().
|
||||
TS_ASSERT_EQUALS(TestUtil::requests.at(1)->get_measurements().
|
||||
at(i->get_mac_addr()).get_ss_list(),
|
||||
measurement_it1->second.get_ss_list()) ;
|
||||
}
|
||||
|
@ -114,7 +114,7 @@ public:
|
|||
TS_ASSERT_EQUALS(request1.get_mobile()->get_mac_addr(),
|
||||
TestUtil::mobiles[0].get_mac_addr()) ;
|
||||
TS_ASSERT_EQUALS(request1.get_timestamp(),
|
||||
TestUtil::requests[2].get_timestamp()) ;
|
||||
TestUtil::requests.at(2)->get_timestamp()) ;
|
||||
|
||||
for (std::vector<AccessPoint>::const_iterator i = TestUtil::aps.begin() ;
|
||||
i != TestUtil::aps.end() ; ++i)
|
||||
|
@ -123,7 +123,7 @@ public:
|
|||
measurement_it1 =
|
||||
request1.get_measurements().find(i->get_mac_addr()) ;
|
||||
TS_ASSERT_DIFFERS(request1.get_measurements().end(), measurement_it1) ;
|
||||
TS_ASSERT_EQUALS(TestUtil::requests[2].get_measurements().
|
||||
TS_ASSERT_EQUALS(TestUtil::requests.at(2)->get_measurements().
|
||||
at(i->get_mac_addr()).get_ss_list(),
|
||||
measurement_it1->second.get_ss_list()) ;
|
||||
}
|
||||
|
|
|
@ -56,10 +56,10 @@ public:
|
|||
// instance in order to be able to close the file (and therefore
|
||||
// flush the stream) before to read it with InputCSV
|
||||
InputLogCSV *inputlogcsv1 = new InputLogCSV(log_file_name) ;
|
||||
for (std::vector<Request>::const_iterator i =
|
||||
for (std::vector<Request*>::const_iterator i =
|
||||
TestUtil::requests.begin() ;
|
||||
i != TestUtil::requests.end() ; ++i)
|
||||
inputlogcsv1->log_request(*i) ;
|
||||
inputlogcsv1->log_request(**i) ;
|
||||
delete inputlogcsv1 ; // Close the output file
|
||||
|
||||
// Even if data is not in the same order, size of the two files
|
||||
|
@ -69,17 +69,17 @@ public:
|
|||
// Read the two files and compare to the reference Request list
|
||||
InputCSV inputcsv_csv(csv_file_name) ;
|
||||
InputCSV inputcsv_log(log_file_name) ;
|
||||
for (std::vector<Request>::const_iterator i =
|
||||
for (std::vector<Request*>::const_iterator i =
|
||||
TestUtil::requests.begin() ;
|
||||
i != TestUtil::requests.end() ; ++i)
|
||||
{
|
||||
Stock::clear() ;
|
||||
Request request_csv = inputcsv_csv.get_next_request() ;
|
||||
TS_ASSERT(TestUtil::request_equals(*i, request_csv)) ;
|
||||
TS_ASSERT(TestUtil::request_equals(**i, request_csv)) ;
|
||||
|
||||
Stock::clear() ;
|
||||
Request request_log = inputcsv_log.get_next_request() ;
|
||||
TS_ASSERT(TestUtil::request_equals(*i, request_log)) ;
|
||||
TS_ASSERT(TestUtil::request_equals(**i, request_log)) ;
|
||||
}
|
||||
|
||||
TS_ASSERT(inputcsv_csv.eof()) ;
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#include "testutil.hh"
|
||||
#include <cxxtest/TestSuite.h>
|
||||
|
||||
#include "calibrationrequest.hh"
|
||||
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
#include <sys/stat.h>
|
||||
|
@ -10,13 +12,19 @@ using std::tr1::unordered_map ;
|
|||
|
||||
vector<AccessPoint> TestUtil::aps ;
|
||||
vector<Mobile> TestUtil::mobiles ;
|
||||
vector<Request> TestUtil::requests ;
|
||||
vector<Request*> TestUtil::requests ;
|
||||
vector<ReferencePoint> TestUtil::reference_points ;
|
||||
|
||||
|
||||
void TestUtil::tear_down()
|
||||
{
|
||||
aps.clear() ;
|
||||
mobiles.clear() ;
|
||||
reference_points.clear() ;
|
||||
|
||||
for (vector<Request*>::const_iterator i = requests.begin() ;
|
||||
i != requests.end() ; ++i)
|
||||
delete *i ;
|
||||
requests.clear() ;
|
||||
}
|
||||
|
||||
|
@ -96,12 +104,22 @@ void TestUtil::set_up()
|
|||
timestamps.push_back(Timestamp(1265120912345)) ;
|
||||
|
||||
// Create request list
|
||||
requests.push_back(Request(&mobiles[0], timestamps[0],
|
||||
measurements[0])) ;
|
||||
requests.push_back(Request(&mobiles[1], timestamps[1],
|
||||
measurements[1])) ;
|
||||
requests.push_back(Request(&mobiles[0], timestamps[2],
|
||||
measurements[2])) ;
|
||||
requests.push_back(new Request(&mobiles[0], timestamps[0],
|
||||
measurements[0])) ;
|
||||
|
||||
Request request2(&mobiles[1], timestamps[1], measurements[1]) ;
|
||||
reference_points.push_back(ReferencePoint(3.2, 4.1, 3.4)) ;
|
||||
requests.push_back(new CalibrationRequest(
|
||||
request2, &reference_points.at(0),
|
||||
Direction(2))) ;
|
||||
|
||||
CalibrationRequest *calibration_request =
|
||||
dynamic_cast<CalibrationRequest*>(requests.at(1)) ;
|
||||
if (calibration_request != NULL)
|
||||
calibration_request->reference_point_backward_link() ;
|
||||
|
||||
requests.push_back(new Request(&mobiles[0], timestamps[2],
|
||||
measurements[2])) ;
|
||||
}
|
||||
|
||||
|
||||
|
@ -143,65 +161,51 @@ create_test_csv_file(const string &file_name, bool with_spaces)
|
|||
if (with_spaces)
|
||||
line << "\n \n " ;
|
||||
line << mobiles[0].get_mac_addr() ;
|
||||
line << ';' ;
|
||||
line << requests[0].get_timestamp().get_timestamp_ms() ;
|
||||
line << ';' << requests.at(0)->get_timestamp().get_timestamp_ms() ;
|
||||
line << ";0;0;0;0;" ;
|
||||
line << aps[0].get_mac_addr() ;
|
||||
line << ";" ;
|
||||
line << requests[0].get_measurements().at(aps[0].get_mac_addr())
|
||||
.get_ss_list()[0] ;
|
||||
line << ";" ;
|
||||
line << aps[2].get_mac_addr() ;
|
||||
line << ";" ;
|
||||
line << requests[0].get_measurements().at(aps[2].get_mac_addr())
|
||||
.get_ss_list()[0] ;
|
||||
line << ";" ;
|
||||
line << aps[1].get_mac_addr() ;
|
||||
line << ";" ;
|
||||
line << requests[0].get_measurements().at(aps[1].get_mac_addr())
|
||||
.get_ss_list()[0] ;
|
||||
line << ";" ;
|
||||
line << aps[0].get_mac_addr() ;
|
||||
line << ";" ;
|
||||
line << requests[0].get_measurements().at(aps[0].get_mac_addr())
|
||||
.get_ss_list()[1] ;
|
||||
line << ";" ;
|
||||
line << aps[1].get_mac_addr() ;
|
||||
line << ";" ;
|
||||
line << requests[0].get_measurements().at(aps[1].get_mac_addr())
|
||||
.get_ss_list()[1] ;
|
||||
line << ';' << requests.at(0)->get_measurements()
|
||||
.at(aps[0].get_mac_addr()).get_ss_list()[0] ;
|
||||
line << ';' << aps[2].get_mac_addr() ;
|
||||
line << ';' << requests.at(0)->get_measurements()
|
||||
.at(aps[2].get_mac_addr()).get_ss_list()[0] ;
|
||||
line << ';' << aps[1].get_mac_addr() ;
|
||||
line << ';' << requests.at(0)->get_measurements()
|
||||
.at(aps[1].get_mac_addr()).get_ss_list()[0] ;
|
||||
line << ';' << aps[0].get_mac_addr() ;
|
||||
line << ';' << requests.at(0)->get_measurements()
|
||||
.at(aps[0].get_mac_addr()).get_ss_list()[1] ;
|
||||
line << ';' << aps[1].get_mac_addr() ;
|
||||
line << ';' << requests.at(0)->get_measurements()
|
||||
.at(aps[1].get_mac_addr()).get_ss_list()[1] ;
|
||||
line << '\n' ;
|
||||
csv_lines.push_back(line.str()) ;
|
||||
|
||||
line.str("") ;
|
||||
line << mobiles[1].get_mac_addr() ;
|
||||
line << ';' ;
|
||||
line << requests[1].get_timestamp().get_timestamp_ms() ;
|
||||
line << ";0;0;0;0;" ;
|
||||
line << aps[2].get_mac_addr() ;
|
||||
line << ";" ;
|
||||
line << requests[1].get_measurements().at(aps[2].get_mac_addr())
|
||||
.get_ss_list()[0] ;
|
||||
line << ";" ;
|
||||
line << aps[0].get_mac_addr() ;
|
||||
line << ";" ;
|
||||
line << requests[1].get_measurements().at(aps[0].get_mac_addr())
|
||||
.get_ss_list()[0] ;
|
||||
line << ";" ;
|
||||
line << aps[1].get_mac_addr() ;
|
||||
line << ";" ;
|
||||
line << requests[1].get_measurements().at(aps[1].get_mac_addr())
|
||||
.get_ss_list()[0] ;
|
||||
line << ";" ;
|
||||
line << aps[1].get_mac_addr() ;
|
||||
line << ";" ;
|
||||
line << requests[1].get_measurements().at(aps[1].get_mac_addr())
|
||||
.get_ss_list()[1] ;
|
||||
line << ";" ;
|
||||
line << aps[0].get_mac_addr() ;
|
||||
line << ";" ;
|
||||
line << requests[1].get_measurements().at(aps[0].get_mac_addr())
|
||||
.get_ss_list()[1] ;
|
||||
CalibrationRequest *calibration_request =
|
||||
dynamic_cast<CalibrationRequest*>(requests.at(1)) ;
|
||||
assert(calibration_request) ;
|
||||
line << ';' << calibration_request->get_timestamp().get_timestamp_ms() ;
|
||||
line << ';' << reference_points.at(0).get_x() ;
|
||||
line << ';' << reference_points.at(0).get_y() ;
|
||||
line << ';' << reference_points.at(0).get_z() ;
|
||||
line << ';' << static_cast<int>(calibration_request->get_direction()) ;
|
||||
line << ';' << aps[2].get_mac_addr() ;
|
||||
line << ';' << calibration_request->get_measurements()
|
||||
.at(aps[2].get_mac_addr()).get_ss_list()[0] ;
|
||||
line << ';' << aps[0].get_mac_addr() ;
|
||||
line << ';' << calibration_request->get_measurements()
|
||||
.at(aps[0].get_mac_addr()).get_ss_list()[0] ;
|
||||
line << ';' << aps[1].get_mac_addr() ;
|
||||
line << ';' << calibration_request->get_measurements()
|
||||
.at(aps[1].get_mac_addr()).get_ss_list()[0] ;
|
||||
line << ';' << aps[1].get_mac_addr() ;
|
||||
line << ';' << calibration_request->get_measurements()
|
||||
.at(aps[1].get_mac_addr()).get_ss_list()[1] ;
|
||||
line << ';' << aps[0].get_mac_addr() ;
|
||||
line << ';' << calibration_request->get_measurements()
|
||||
.at(aps[0].get_mac_addr()).get_ss_list()[1] ;
|
||||
line << '\n' ;
|
||||
if (with_spaces)
|
||||
line << " \n\
|
||||
|
@ -214,33 +218,23 @@ create_test_csv_file(const string &file_name, bool with_spaces)
|
|||
if (with_spaces)
|
||||
line << '\t' ;
|
||||
line << mobiles[0].get_mac_addr() ;
|
||||
line << ';' ;
|
||||
line << requests[2].get_timestamp().get_timestamp_ms() ;
|
||||
line << ';' << requests.at(2)->get_timestamp().get_timestamp_ms() ;
|
||||
line << ";0;0;0;0;" ;
|
||||
line << aps[2].get_mac_addr() ;
|
||||
line << ";" ;
|
||||
line << requests[2].get_measurements().at(aps[2].get_mac_addr())
|
||||
.get_ss_list()[0] ;
|
||||
line << ";" ;
|
||||
line << aps[1].get_mac_addr() ;
|
||||
line << ";" ;
|
||||
line << requests[2].get_measurements().at(aps[1].get_mac_addr())
|
||||
.get_ss_list()[0] ;
|
||||
line << ";" ;
|
||||
line << aps[0].get_mac_addr() ;
|
||||
line << ";" ;
|
||||
line << requests[2].get_measurements().at(aps[0].get_mac_addr())
|
||||
.get_ss_list()[0] ;
|
||||
line << ";" ;
|
||||
line << aps[1].get_mac_addr() ;
|
||||
line << ";" ;
|
||||
line << requests[2].get_measurements().at(aps[1].get_mac_addr())
|
||||
.get_ss_list()[1] ;
|
||||
line << ";" ;
|
||||
line << aps[0].get_mac_addr() ;
|
||||
line << ";" ;
|
||||
line << requests[2].get_measurements().at(aps[0].get_mac_addr())
|
||||
.get_ss_list()[1] ;
|
||||
line << ';' << requests.at(2)->get_measurements()
|
||||
.at(aps[2].get_mac_addr()).get_ss_list()[0] ;
|
||||
line << ';' << aps[1].get_mac_addr() ;
|
||||
line << ';' << requests.at(2)->get_measurements()
|
||||
.at(aps[1].get_mac_addr()).get_ss_list()[0] ;
|
||||
line << ';' << aps[0].get_mac_addr() ;
|
||||
line << ';' << requests.at(2)->get_measurements()
|
||||
.at(aps[0].get_mac_addr()).get_ss_list()[0] ;
|
||||
line << ';' << aps[1].get_mac_addr() ;
|
||||
line << ';' << requests.at(2)->get_measurements()
|
||||
.at(aps[1].get_mac_addr()).get_ss_list()[1] ;
|
||||
line << ';' << aps[0].get_mac_addr() ;
|
||||
line << ';' << requests.at(2)->get_measurements()
|
||||
.at(aps[0].get_mac_addr()).get_ss_list()[1] ;
|
||||
line << '\n' ;
|
||||
if (with_spaces)
|
||||
line << "\n\t\n" ;
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#include "mobile.hh"
|
||||
#include "request.hh"
|
||||
#include "measurement.hh"
|
||||
#include "referencepoint.hh"
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
@ -15,7 +16,8 @@ class TestUtil
|
|||
public:
|
||||
static std::vector<AccessPoint> aps ;
|
||||
static std::vector<Mobile> mobiles ;
|
||||
static std::vector<Request> requests ;
|
||||
static std::vector<Request*> requests ;
|
||||
static std::vector<ReferencePoint> reference_points ;
|
||||
|
||||
static void set_up(void) ;
|
||||
static void tear_down(void) ;
|
||||
|
|
Loading…
Reference in New Issue