diff --git a/owlps-positioning/Makefile b/owlps-positioning/Makefile index 5752d7d..c592c02 100644 --- a/owlps-positioning/Makefile +++ b/owlps-positioning/Makefile @@ -51,6 +51,7 @@ OBJ_LIST = \ measurement.o \ request.o \ calibrationrequest.o \ + result.o \ configuration.o \ userinterface.o \ input.o \ @@ -125,7 +126,7 @@ inputcsv.o: \ $(OBJ_DIR)/calibrationrequest.o \ $(OBJ_DIR)/stock.o inputlogcsv.o: \ - $(OBJ_DIR)/inputlogmedium.hh \ + $(SRC_DIR)/inputlogmedium.hh \ $(OBJ_DIR)/request.o input.o: \ $(OBJ_DIR)/posexcept.o diff --git a/owlps-positioning/TODO b/owlps-positioning/TODO index 3d28104..5694220 100644 --- a/owlps-positioning/TODO +++ b/owlps-positioning/TODO @@ -1,4 +1,8 @@ +- Tests unitaires + Remplacer TS_ASSERT_DIFFERS(a, b) par TS_ASSERT(a != b) pour tester + operator!=() au lieu de !operator==(). + - Input ° Finir le test unitaire. diff --git a/owlps-positioning/src/result.cc b/owlps-positioning/src/result.cc new file mode 100644 index 0000000..86d3c9d --- /dev/null +++ b/owlps-positioning/src/result.cc @@ -0,0 +1,25 @@ +#include "result.hh" + + + +/* *** Operators *** */ + + +const Result& Result::operator=(const Result &source) +{ + if (this == &source) + return *this ; + + position = source.position ; + request = source.request ; + + return *this ; +} + + +bool Result::operator==(const Result &source) +{ + return + position == source.position && + request == source.request ; +} diff --git a/owlps-positioning/src/result.hh b/owlps-positioning/src/result.hh new file mode 100644 index 0000000..a103415 --- /dev/null +++ b/owlps-positioning/src/result.hh @@ -0,0 +1,64 @@ +#ifndef _OWLPS_POSITIONING_RESULT_HH_ +#define _OWLPS_POSITIONING_RESULT_HH_ + +class Request ; + +#include "point3d.hh" + +/// Represents a result computed by a positioning algorithm +class Result +{ +protected: + Point3D position ; + Request *request ; + +public: + Result(const Request *_request = NULL): + request(const_cast(_request)) {} + Result(const Request *_request, const Point3D &_position): + position(_position), request(const_cast(_request)) {} + ~Result(void) {} + + /** @name Read accessors */ + //@{ + const Point3D& get_position(void) ; + const Request* get_request(void) ; + //@} + + /** @name Operators */ + //@{ + const Result& operator=(const Result &source) ; + bool operator==(const Result &source) ; + bool operator!=(const Result &source) ; + //@} +} ; + + + +/* *** Read accessors *** */ + + +inline const Point3D& Result::get_position() +{ + return position ; +} + + +inline const Request* Result::get_request() +{ + return request ; +} + + + +/* *** Operators *** */ + + +inline bool Result::operator!=(const Result &source) +{ + return !(*this == source) ; +} + + + +#endif // _OWLPS_POSITIONING_RESULT_HH_ diff --git a/owlps-positioning/tests/result_test.hh b/owlps-positioning/tests/result_test.hh new file mode 100644 index 0000000..9f68aee --- /dev/null +++ b/owlps-positioning/tests/result_test.hh @@ -0,0 +1,53 @@ +#include + +#include "result.hh" +#include "request.hh" + +class Result_test: public CxxTest::TestSuite +{ +public: + + void test_constructor(void) + { + // Default constructor + Result result1 ; + Result result2(NULL) ; + Result result3(NULL, Point3D()) ; + TS_ASSERT_EQUALS(result1, result2) ; + TS_ASSERT_EQUALS(result1, result3) ; + + Request request1 ; + Result result4(&request1) ; + TS_ASSERT_DIFFERS(result1, result4) ; + } + + void test_accessors(void) + { + Timestamp timestamp1 ; + timestamp1.now() ; + Request request1(timestamp1) ; + Point3D point3d1(3,4,2) ; + Result result1(&request1, point3d1) ; + + TS_ASSERT_EQUALS(result1.get_position(), point3d1) ; + TS_ASSERT_EQUALS(result1.get_request(), &request1) ; + } + + void test_operators(void) + { + Timestamp timestamp1 ; + timestamp1.now() ; + Request request1(timestamp1) ; + Point3D point3d1(3,4,2) ; + Result result1(&request1, point3d1) ; + Result result2(&request1, point3d1) ; + TS_ASSERT_EQUALS(result1, result2) ; + + Result result3 ; + TS_ASSERT(result1 != result3) ; + + result3 = result1 ; + TS_ASSERT_EQUALS(result1, result3) ; + } + +} ;