[Positioning] Tests: add global set up & tear down

Work on unit tests:
- TestUtil:
  - Add set_up(), that sets up lists of Request, Mobile and AccessPoint,
    primarily to be used with create_test_csv_file().
  - Add public attributes for these lists.
  - Update create_test_csv_file() to use these lists.
- Update InputCSV_test to use new TestUtil.
- Add class TestSetUp, a global fixture class. Before all tests off all
  test suites, it calls TestUtil::set_up().
- Update and clean Makefile.
This commit is contained in:
Matteo Cypriani 2010-02-15 20:39:08 +01:00
parent dbd58f8178
commit 8257e9e67d
6 changed files with 290 additions and 105 deletions

View File

@ -1,10 +1,6 @@
.PHONY : all test doc clean purge install uninstall style check .PHONY : all test doc clean purge install uninstall style check
TEST_DIR = tests TESTS_DIR = tests
TEST_XX = $(TEST_DIR)/tests.cc
TEST_OBJ = $(TEST_DIR)/tests.o
TESTUTIL_OBJ = $(TEST_DIR)/testutil.o
TEST_TARGET = $(TEST_DIR)/tests
DOXYGEN_DIR = doc DOXYGEN_DIR = doc
DOXYFILE = Doxyfile DOXYFILE = Doxyfile
@ -25,7 +21,7 @@ DOXYGEN = doxygen
# Compilation tools and flags # Compilation tools and flags
GXX = g++-4.4 GXX = g++-4.4
#DEBUG = -g #DEBUG = -g
TESTSGXXFLAGS = -I$(TEST_DIR) -I. TESTSGXXFLAGS = -I$(TESTS_DIR) -I.
GXXFLAGS = $(DEBUG) -Wall -Wextra GXXFLAGS = $(DEBUG) -Wall -Wextra
LD = $(GXX) LD = $(GXX)
LDFLAGS = -lm -lrt -lboost_program_options LDFLAGS = -lm -lrt -lboost_program_options
@ -38,17 +34,26 @@ OBJ = posutil.o stock.o timestamp.o point3d.o referencepoint.o \
inputcsv.o configuration.o userinterface.o input.o inputcsv.o configuration.o userinterface.o input.o
OBJ_NOTEST = posexcept.o OBJ_NOTEST = posexcept.o
TESTS_XX = $(TESTS_DIR)/tests.cc
TESTS_OBJ = $(TESTS_DIR)/tests.o
TESTS_TARGET = $(TESTS_DIR)/tests
TESTUTIL_OBJ = $(TESTS_DIR)/testutil.o
TESTSETUP_OBJ = $(TESTS_DIR)/testsetup.o
SOURCE_TESTS = $(OBJ:%.o=$(TESTS_DIR)/%_test.hh)
OBJ_TESTS = $(TESTUTIL_OBJ) $(TESTSETUP_OBJ)
INCLUDES_TESTS = $(TESTS_DIR)/valuetraits.hh
all: $(TARGET) all: $(TARGET)
# Generic targets # Generic targets
%: %.o $(TESTS_DIR)/%.o: $(TESTS_DIR)/%.cc $(TESTS_DIR)/%.hh
$(LD) $(LDFLAGS) -o $@ $^ $(GXX) $(GXXFLAGS) $(TESTSGXXFLAGS) -o $@ -c $<
%.o: %.cc %.hh %.o: %.cc %.hh
$(GXX) $(GXXFLAGS) -c $< $(GXX) $(GXXFLAGS) -c $<
$(TEST_DIR)/%_test.o: %.o %: %.o
$(GXX) $(GXXFLAGS) $(TESTSGXXFLAGS) -c $< $(LD) $(LDFLAGS) -o $@ $^
# Dependencies # Dependencies
userinterface.o: configuration.o userinterface.o: configuration.o
@ -67,35 +72,32 @@ input.o: posexcept.o
# Specific targets # Specific targets
$(TARGET): $(OBJ) $(OBJ_NOTEST) $(TARGET): $(OBJ) $(OBJ_NOTEST)
$(TEST_XX): $(OBJ:%.o=$(TEST_DIR)/%_test.hh) $(TESTS_XX): $(SOURCE_TESTS)
$(TEST_DIR)/cxxtestgen.pl --error-printer \ $(TESTS_DIR)/cxxtestgen.pl --error-printer \
--include=$(TEST_DIR)/valuetraits.hh \ --include=$(TESTS_DIR)/valuetraits.hh \
--include=$(TESTUTIL_OBJ:.o=.hh) \ --include=$(TESTUTIL_OBJ:.o=.hh) \
-o $@ $^ -o $@ $^
$(TEST_OBJ): $(TEST_XX) $(OBJ) $(TESTUTIL_OBJ) $(TEST_DIR)/valuetraits.hh $(TESTS_OBJ): $(TESTS_XX) $(OBJ) $(INCLUDES_TESTS)
$(GXX) $(GXXFLAGS) $(TESTSGXXFLAGS) -o $@ -c $< $(GXX) $(GXXFLAGS) $(TESTSGXXFLAGS) -o $@ -c $<
$(TESTUTIL_OBJ): $(TESTUTIL_OBJ:.o=.cc) $(TESTUTIL_OBJ:.o=.hh) $(TESTS_TARGET): $(TESTS_OBJ) $(OBJ_TESTS)
$(GXX) $(GXXFLAGS) $(TESTSGXXFLAGS) -o $@ -c $<
$(TEST_TARGET): $(TEST_OBJ) $(TESTUTIL_OBJ)
$(LD) $(LDFLAGS) -o $@ $^ $(OBJ) $(OBJ_NOTEST) $(LD) $(LDFLAGS) -o $@ $^ $(OBJ) $(OBJ_NOTEST)
test: $(TEST_TARGET) test: $(TESTS_TARGET)
@$(TEST_TARGET) @$(TESTS_TARGET)
doc: doc:
@$(DOXYGEN) $(DOXYFILE) @$(DOXYGEN) $(DOXYFILE)
clean: clean:
@$(RM) *~ *.o *.gch *.orig @$(RM) *~ *.o *.gch *.orig
@$(RM) $(TEST_XX) $(TEST_DIR)/*~ $(TEST_DIR)/*.o \ @$(RM) $(TESTS_XX) $(TESTS_DIR)/*~ $(TESTS_DIR)/*.o \
$(TEST_DIR)/*.orig $(TESTS_DIR)/*.orig
purge: clean purge: clean
@$(RM) $(TARGET) @$(RM) $(TARGET)
@$(RM) $(TEST_TARGET) @$(RM) $(TESTS_TARGET)
@$(RM_RECURSIVE) $(DOXYGEN_DIR) @$(RM_RECURSIVE) $(DOXYGEN_DIR)
install: $(TARGET) install: $(TARGET)
@ -113,7 +115,8 @@ style:
$(OBJ_NOTEST:.o=.hh) \ $(OBJ_NOTEST:.o=.hh) \
$(OBJ_NOTEST:.o=.cc) \ $(OBJ_NOTEST:.o=.cc) \
inputmedium.hh \ inputmedium.hh \
$(OBJ:%.o=$(TEST_DIR)/%_test.hh) $(TESTS_DIR)/*.hh \
$(TESTS_DIR)/*.cc
check: check:
@$(CPPCHECK) \ @$(CPPCHECK) \

View File

@ -24,7 +24,7 @@ public:
Stock::clear() ; Stock::clear() ;
csv_file_name = "/tmp/InputCSV_test_csv_file.csv" ; csv_file_name = "/tmp/InputCSV_test_csv_file.csv" ;
aps = TestUtil::create_test_csv_file(csv_file_name) ; TestUtil::create_test_csv_file(csv_file_name, true) ;
// Back to the normal behaviour (i.e. do not abort on fail) // Back to the normal behaviour (i.e. do not abort on fail)
CxxTest::setAbortTestOnFail(false) ; CxxTest::setAbortTestOnFail(false) ;
@ -61,30 +61,24 @@ public:
TS_ASSERT(! inputcsv1.eof()) ; TS_ASSERT(! inputcsv1.eof()) ;
Request request1 ; Request request1 ;
std::tr1::unordered_map<std::string, Measurement> measurements ;
// First Request // // First Request //
request1 = inputcsv1.get_next_request() ; request1 = inputcsv1.get_next_request() ;
TS_ASSERT_EQUALS(request1.get_mobile()->get_mac_addr(), TS_ASSERT_EQUALS(request1.get_mobile()->get_mac_addr(),
"aa:bb:cc:dd:ee:ff") ; TestUtil::mobiles[0].get_mac_addr()) ;
TS_ASSERT_EQUALS(request1.get_timestamp().get_timestamp_ms(), TS_ASSERT_EQUALS(request1.get_timestamp(),
1265120910725llu) ; TestUtil::requests[0].get_timestamp()) ;
measurements[aps[0].get_mac_addr()].add_ss(-58) ; for (std::vector<AccessPoint>::const_iterator i = TestUtil::aps.begin() ;
measurements[aps[2].get_mac_addr()].add_ss(-50) ; i != TestUtil::aps.end() ; ++i)
measurements[aps[1].get_mac_addr()].add_ss(-42) ;
measurements[aps[0].get_mac_addr()].add_ss(-55) ;
measurements[aps[1].get_mac_addr()].add_ss(-37) ;
for (std::vector<AccessPoint>::const_iterator i = aps.begin() ;
i != aps.end() ; ++i)
{ {
std::tr1::unordered_map<std::string, Measurement>::const_iterator std::tr1::unordered_map<std::string, Measurement>::const_iterator
measurement_it1 = measurement_it1 =
request1.get_measurements().find(i->get_mac_addr()) ; request1.get_measurements().find(i->get_mac_addr()) ;
TS_ASSERT_DIFFERS(request1.get_measurements().end(), measurement_it1) ; TS_ASSERT_DIFFERS(request1.get_measurements().end(), measurement_it1) ;
TS_ASSERT_EQUALS(measurements[i->get_mac_addr()].get_ss_list(), TS_ASSERT_EQUALS(TestUtil::requests[0].get_measurements().
at(i->get_mac_addr()).get_ss_list(),
measurement_it1->second.get_ss_list()) ; measurement_it1->second.get_ss_list()) ;
} }
@ -95,25 +89,19 @@ public:
request1 = inputcsv1.get_next_request() ; request1 = inputcsv1.get_next_request() ;
TS_ASSERT_EQUALS(request1.get_mobile()->get_mac_addr(), TS_ASSERT_EQUALS(request1.get_mobile()->get_mac_addr(),
"aa:bb:cc:dd:ee:77") ; TestUtil::mobiles[1].get_mac_addr()) ;
TS_ASSERT_EQUALS(request1.get_timestamp().get_timestamp_ms(), TS_ASSERT_EQUALS(request1.get_timestamp(),
1265120911234llu) ; TestUtil::requests[1].get_timestamp()) ;
measurements.clear() ; for (std::vector<AccessPoint>::const_iterator i = TestUtil::aps.begin() ;
measurements[aps[2].get_mac_addr()].add_ss(-59) ; i != TestUtil::aps.end() ; ++i)
measurements[aps[0].get_mac_addr()].add_ss(-51) ;
measurements[aps[1].get_mac_addr()].add_ss(-70) ;
measurements[aps[1].get_mac_addr()].add_ss(-21) ;
measurements[aps[0].get_mac_addr()].add_ss(-19) ;
for (std::vector<AccessPoint>::const_iterator i = aps.begin() ;
i != aps.end() ; ++i)
{ {
std::tr1::unordered_map<std::string, Measurement>::const_iterator std::tr1::unordered_map<std::string, Measurement>::const_iterator
measurement_it1 = measurement_it1 =
request1.get_measurements().find(i->get_mac_addr()) ; request1.get_measurements().find(i->get_mac_addr()) ;
TS_ASSERT_DIFFERS(request1.get_measurements().end(), measurement_it1) ; TS_ASSERT_DIFFERS(request1.get_measurements().end(), measurement_it1) ;
TS_ASSERT_EQUALS(measurements[i->get_mac_addr()].get_ss_list(), TS_ASSERT_EQUALS(TestUtil::requests[1].get_measurements().
at(i->get_mac_addr()).get_ss_list(),
measurement_it1->second.get_ss_list()) ; measurement_it1->second.get_ss_list()) ;
} }
@ -124,25 +112,19 @@ public:
request1 = inputcsv1.get_next_request() ; request1 = inputcsv1.get_next_request() ;
TS_ASSERT_EQUALS(request1.get_mobile()->get_mac_addr(), TS_ASSERT_EQUALS(request1.get_mobile()->get_mac_addr(),
"aa:bb:cc:dd:ee:ff") ; TestUtil::mobiles[0].get_mac_addr()) ;
TS_ASSERT_EQUALS(request1.get_timestamp().get_timestamp_ms(), TS_ASSERT_EQUALS(request1.get_timestamp(),
1265120912345llu) ; TestUtil::requests[2].get_timestamp()) ;
measurements.clear() ; for (std::vector<AccessPoint>::const_iterator i = TestUtil::aps.begin() ;
measurements[aps[2].get_mac_addr()].add_ss(-56) ; i != TestUtil::aps.end() ; ++i)
measurements[aps[1].get_mac_addr()].add_ss(-45) ;
measurements[aps[0].get_mac_addr()].add_ss(-54) ;
measurements[aps[1].get_mac_addr()].add_ss(-23) ;
measurements[aps[0].get_mac_addr()].add_ss(-32) ;
for (std::vector<AccessPoint>::const_iterator i = aps.begin() ;
i != aps.end() ; ++i)
{ {
std::tr1::unordered_map<std::string, Measurement>::const_iterator std::tr1::unordered_map<std::string, Measurement>::const_iterator
measurement_it1 = measurement_it1 =
request1.get_measurements().find(i->get_mac_addr()) ; request1.get_measurements().find(i->get_mac_addr()) ;
TS_ASSERT_DIFFERS(request1.get_measurements().end(), measurement_it1) ; TS_ASSERT_DIFFERS(request1.get_measurements().end(), measurement_it1) ;
TS_ASSERT_EQUALS(measurements[i->get_mac_addr()].get_ss_list(), TS_ASSERT_EQUALS(TestUtil::requests[2].get_measurements().
at(i->get_mac_addr()).get_ss_list(),
measurement_it1->second.get_ss_list()) ; measurement_it1->second.get_ss_list()) ;
} }

View File

@ -0,0 +1,19 @@
#include "testsetup.hh"
// Create the global fixture
static TestSetUp testsetup ;
bool TestSetUp::setUpWorld(void)
{
TestUtil::set_up() ;
return true ;
}
bool TestSetUp::tearDownWorld(void)
{
TestUtil::tear_down() ;
return true ;
}

View File

@ -0,0 +1,10 @@
#include <cxxtest/GlobalFixture.h>
#include "testutil.hh"
class TestSetUp: public CxxTest::GlobalFixture
{
public:
bool setUpWorld(void) ;
bool tearDownWorld(void) ;
} ;

View File

@ -1,9 +1,100 @@
#include "testutil.hh" #include "testutil.hh"
#include <cxxtest/TestSuite.h> #include <cxxtest/TestSuite.h>
#include "measurement.hh"
#include <fstream> #include <fstream>
#include <sstream>
#include <boost/tr1/unordered_map.hpp>
using namespace std ; 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 // Create the file output_file_name and fill it with the contents of
@ -34,48 +125,119 @@ void TestUtil::remove_file(const string &file_name)
} }
vector<AccessPoint> TestUtil:: void TestUtil::
create_test_csv_file(const string &file_name) create_test_csv_file(const string &file_name, bool with_spaces)
{ {
// Create AP list
vector<AccessPoint> aps ;
aps.push_back(AccessPoint(Point3D(1,2,3), "11:22:33:44:55:01")) ;
aps.push_back(AccessPoint(Point3D(4,5,6), "11:22:33:44:55:02")) ;
aps.push_back(AccessPoint(Point3D(7,8,9), "11:22:33:44:55:03")) ;
// Fill name and contents of the test CSV file // Fill name and contents of the test CSV file
vector<string> csv_lines ; vector<string> csv_lines ;
csv_lines.push_back("\ ostringstream line ;
\n \n\
aa:bb:cc:dd:ee:ff;1265120910725;0;0;0;0\ if (with_spaces)
;" + aps[0].get_mac_addr() + ";-58\ line << "\n \n " ;
;" + aps[2].get_mac_addr() + ";-50\ line << mobiles[0].get_mac_addr() ;
;" + aps[1].get_mac_addr() + ";-42\ line << ';' ;
;" + aps[0].get_mac_addr() + ";-55\ line << requests[0].get_timestamp().get_timestamp_ms() ;
;" + aps[1].get_mac_addr() + ";-37\ line << ";0;0;0;0;" ;
\n") ; line << aps[0].get_mac_addr() ;
csv_lines.push_back("\ line << ";" ;
aa:bb:cc:dd:ee:77;1265120911234;0;0;0;0\ line << requests[0].get_measurements().at(aps[0].get_mac_addr())
;" + aps[2].get_mac_addr() + ";-59\ .get_ss_list()[0] ;
;" + aps[0].get_mac_addr() + ";-51\ line << ";" ;
;" + aps[1].get_mac_addr() + ";-70\ line << aps[2].get_mac_addr() ;
;" + aps[1].get_mac_addr() + ";-21\ line << ";" ;
;" + aps[0].get_mac_addr() + ";-19\ line << requests[0].get_measurements().at(aps[2].get_mac_addr())
\n \n\ .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 \t \n\ \n \t \n\
\n") ; \n" ;
csv_lines.push_back("\ csv_lines.push_back(line.str()) ;
\taa:bb:cc:dd:ee:ff;1265120912345;0;0;0;0\
;" + aps[2].get_mac_addr() + ";-56\ line.str("") ;
;" + aps[1].get_mac_addr() + ";-45\ if (with_spaces)
;" + aps[0].get_mac_addr() + ";-54\ line << '\t' ;
;" + aps[1].get_mac_addr() + ";-23\ line << mobiles[0].get_mac_addr() ;
;" + aps[0].get_mac_addr() + ";-32\ line << ';' ;
\n\n\t\n") ; 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 // Create and fill the test CSV file
fill_file(file_name, csv_lines) ; fill_file(file_name, csv_lines) ;
return aps ;
} }

View File

@ -1,20 +1,29 @@
#ifndef _OWLPS_POSITIONING_TESTS_TESTUTIL_HH_ #ifndef _OWLPS_POSITIONING_TESTS_TESTUTIL_HH_
#define _OWLPS_POSITIONING_TESTS_TESTUTIL_HH_ #define _OWLPS_POSITIONING_TESTS_TESTUTIL_HH_
#include "accesspoint.hh"
#include "mobile.hh"
#include "request.hh"
#include <string> #include <string>
#include <vector> #include <vector>
#include "accesspoint.hh"
class TestUtil class TestUtil
{ {
public: public:
static std::vector<AccessPoint> aps ;
static std::vector<Mobile> mobiles ;
static std::vector<Request> requests ;
static void set_up(void) ;
static void tear_down(void) ;
static void fill_file(const std::string &output_file_name, static void fill_file(const std::string &output_file_name,
const std::vector<std::string> output_lines) ; const std::vector<std::string> output_lines) ;
static void remove_file(const std::string &file_name) ; static void remove_file(const std::string &file_name) ;
static std::vector<AccessPoint> static void create_test_csv_file(const std::string &file_name,
create_test_csv_file(const std::string &file_name) ; bool with_spaces = false) ;
} ; } ;
#endif // _OWLPS_POSITIONING_TESTS_TESTUTIL_HH_ #endif // _OWLPS_POSITIONING_TESTS_TESTUTIL_HH_