owlps/owlps-positioning/tests/testutil.cc

244 lines
6.9 KiB
C++
Raw Normal View History

#include "testutil.hh"
#include <cxxtest/TestSuite.h>
#include "measurement.hh"
#include <fstream>
#include <sstream>
#include <boost/tr1/unordered_map.hpp>
using namespace std ;
using std::tr1::unordered_map ;
vector<AccessPoint> TestUtil::aps ;
vector<Mobile> TestUtil::mobiles ;
vector<Request> TestUtil::requests ;
void TestUtil::tear_down()
{
aps.clear() ;
mobiles.clear() ;
requests.clear() ;
}
void TestUtil::set_up()
{
tear_down() ;
// Create mobile list
mobiles.push_back(Mobile("192.168.0.42", "aa:bb:cc:dd:ee:ff")) ;
mobiles.push_back(Mobile("192.168.1.87", "aa:bb:cc:dd:ee:77")) ;
// Create AP list
aps.push_back(AccessPoint(Point3D(1,2,3), "10.0.0.1", "11:22:33:44:55:01")) ;
aps.push_back(AccessPoint(Point3D(4,5,6), "10.0.0.2", "11:22:33:44:55:02")) ;
aps.push_back(AccessPoint(Point3D(7,8,9), "10.0.0.3", "11:22:33:44:55:03")) ;
// Create measurement list
vector < unordered_map<string,Measurement> > measurements(3) ;
Measurement measurement1 ;
measurement1.add_ss(-58) ;
measurement1.add_ss(-55) ;
measurement1.set_ap(&aps[0]) ;
measurements[0][aps[0].get_mac_addr()] = measurement1 ;
measurement1.clear() ;
measurement1.add_ss(-50) ;
measurement1.set_ap(&aps[2]) ;
measurements[0][aps[2].get_mac_addr()] = measurement1 ;
measurement1.clear() ;
measurement1.add_ss(-42) ;
measurement1.add_ss(-37) ;
measurement1.set_ap(&aps[1]) ;
measurements[0][aps[1].get_mac_addr()] = measurement1 ;
measurement1.clear() ;
measurement1.add_ss(-51) ;
measurement1.add_ss(-19) ;
measurement1.set_ap(&aps[0]) ;
measurements[1][aps[0].get_mac_addr()] = measurement1 ;
measurement1.clear() ;
measurement1.add_ss(-70) ;
measurement1.add_ss(-21) ;
measurement1.set_ap(&aps[1]) ;
measurements[1][aps[1].get_mac_addr()] = measurement1 ;
measurement1.clear() ;
measurement1.add_ss(-59) ;
measurement1.set_ap(&aps[2]) ;
measurements[1][aps[2].get_mac_addr()] = measurement1 ;
measurement1.clear() ;
measurement1.add_ss(-54) ;
measurement1.add_ss(-32) ;
measurement1.set_ap(&aps[0]) ;
measurements[2][aps[0].get_mac_addr()] = measurement1 ;
measurement1.clear() ;
measurement1.add_ss(-45) ;
measurement1.add_ss(-23) ;
measurement1.set_ap(&aps[1]) ;
measurements[2][aps[1].get_mac_addr()] = measurement1 ;
measurement1.clear() ;
measurement1.add_ss(-56) ;
measurement1.set_ap(&aps[2]) ;
measurements[2][aps[2].get_mac_addr()] = measurement1 ;
// Create timestamp list
vector<Timestamp> timestamps ;
timestamps.push_back(Timestamp(1265120910725)) ;
timestamps.push_back(Timestamp(1265120911234)) ;
timestamps.push_back(Timestamp(1265120912345)) ;
// Create request list
requests.push_back(Request(timestamps[0], measurements[0])) ;
requests.push_back(Request(timestamps[1], measurements[1])) ;
requests.push_back(Request(timestamps[2], measurements[2])) ;
}
// Create the file output_file_name and fill it with the contents of
// output_lines
void TestUtil::fill_file(const string &output_file_name,
const vector<string> output_lines)
{
// Open the file
std::ofstream output_file ;
output_file.open(output_file_name.c_str()) ;
if (! output_file)
TS_FAIL("Cannot open test file `"+ output_file_name
+"` for creation!") ;
// Write contents to the file
for (std::vector<std::string>::const_iterator i = output_lines.begin() ;
i != output_lines.end() ; ++i)
output_file << *i ;
output_file.close() ;
}
void TestUtil::remove_file(const string &file_name)
{
if (remove(file_name.c_str()) == -1)
TS_WARN("Cannot remove test file `"+ file_name +"`!") ;
}
void TestUtil::
create_test_csv_file(const string &file_name, bool with_spaces)
{
// Fill name and contents of the test CSV file
vector<string> csv_lines ;
ostringstream line ;
if (with_spaces)
line << "\n \n " ;
line << mobiles[0].get_mac_addr() ;
line << ';' ;
line << requests[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 << '\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] ;
line << '\n' ;
if (with_spaces)
line << " \n\
\n\t\n\
\n \t \n\
\n" ;
csv_lines.push_back(line.str()) ;
line.str("") ;
if (with_spaces)
line << '\t' ;
line << mobiles[0].get_mac_addr() ;
line << ';' ;
line << requests[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 << '\n' ;
if (with_spaces)
line << "\n\t\n" ;
csv_lines.push_back(line.str()) ;
// Create and fill the test CSV file
fill_file(file_name, csv_lines) ;
}