15 #define BOOST_TEST_DYN_LINK 16 #define BOOST_TEST_MAIN 17 #define BOOST_TEST_MODULE OptimiseTestSuite 18 #include <boost/test/unit_test.hpp> 19 #include <boost/version.hpp> 21 #include <stdair/basic/BasLogParams.hpp> 22 #include <stdair/basic/BasDBParams.hpp> 23 #include <stdair/service/Logger.hpp> 28 namespace boost_utf = boost::unit_test;
31 std::ofstream utfReportStream (
"bomsforforecaster_utfresults.xml");
36 struct UnitTestConfig {
39 boost_utf::unit_test_log.set_stream (utfReportStream);
40 #if BOOST_VERSION >= 105900 41 boost_utf::unit_test_log.set_format (boost_utf::OF_XML);
43 boost_utf::unit_test_log.set_format (boost_utf::XML);
45 boost_utf::unit_test_log.set_threshold_level (boost_utf::log_test_units);
57 struct BookingClassData {
66 BookingClassData (
const double iBookingCount,
const double iFare,
67 const double iSellupFactor,
const bool iCensorshipFlag)
68 : _bookingCount(iBookingCount), _fare(iFare),
69 _sellupFactor(iSellupFactor), _censorshipFlag(iCensorshipFlag) {
73 double getFare ()
const {
77 bool getCensorshipFlag ()
const {
78 return _censorshipFlag;
82 std::string toString()
const {
83 std::ostringstream oStr;
85 <<
"[Booking class data information]" << std::endl
86 <<
"Booking counter: " << _bookingCount << std::endl
87 <<
"Fare: " << _fare << std::endl
88 <<
"Sell-up Factor: " << _sellupFactor << std::endl
89 <<
"censorshipFlag: " << _censorshipFlag << std::endl;
96 struct BookingClassDataSet {
98 typedef std::vector<BookingClassData*> BookingClassDataList_T;
103 bool _censorshipFlag;
104 BookingClassDataList_T _bookingClassDataList;
107 BookingClassDataSet ()
108 : _numberOfClass(0), _minimumFare(0),
109 _censorshipFlag(false) {
113 void addBookingClassData (BookingClassData& ioBookingClassData) {
114 _bookingClassDataList.push_back (&ioBookingClassData);
118 stdair::NbOfClasses_T getNumberOfClass ()
const {
119 return _bookingClassDataList.size();
122 double getMinimumFare ()
const {
126 bool getCensorshipFlag ()
const {
127 return _censorshipFlag;
131 void setMinimumFare (
const double iMinFare) {
132 _minimumFare = iMinFare;
135 void setCensorshipFlag (
const bool iCensorshipFlag) {
136 _censorshipFlag = iCensorshipFlag;
140 void updateMinimumFare() {
141 double minFare = std::numeric_limits<double>::max();
142 BookingClassDataList_T::iterator itBookingClassDataList;
143 for (itBookingClassDataList = _bookingClassDataList.begin();
144 itBookingClassDataList != _bookingClassDataList.end();
145 ++itBookingClassDataList) {
146 BookingClassData* lBookingClassData = *itBookingClassDataList;
147 assert (lBookingClassData != NULL);
149 const double lFare = lBookingClassData->getFare();
150 if (lFare < minFare) {
155 setMinimumFare(minFare);
159 void updateCensorshipFlag () {
160 bool censorshipFlag =
false;
161 BookingClassDataList_T::iterator itBookingClassDataList;
162 for (itBookingClassDataList = _bookingClassDataList.begin();
163 itBookingClassDataList != _bookingClassDataList.end();
164 ++itBookingClassDataList) {
165 BookingClassData* lBookingClassData = *itBookingClassDataList;
166 assert (lBookingClassData != NULL);
168 const bool lCensorshipFlagOfAClass =
169 lBookingClassData->getCensorshipFlag();
170 if (lCensorshipFlagOfAClass) {
171 censorshipFlag =
true;
176 setCensorshipFlag(censorshipFlag);
180 std::string toString()
const {
181 std::ostringstream oStr;
183 <<
"[Booking class data set information]" << std::endl
184 <<
"Number of classes: " << _numberOfClass << std::endl
185 <<
"Minimum fare: " << _minimumFare << std::endl
186 <<
"The data of the class set are sensored: " << _censorshipFlag
225 BOOST_GLOBAL_FIXTURE (UnitTestConfig);
230 BOOST_AUTO_TEST_SUITE (master_test_suite)
235 BOOST_AUTO_TEST_CASE (rmol_forecaster) {
238 std::string lLogFilename (
"bomsforforecaster.log");
239 std::ofstream logOutputFile;
242 logOutputFile.open (lLogFilename.c_str());
243 logOutputFile.clear();
246 const stdair::BasLogParams lLogParams (stdair::LOG::DEBUG, logOutputFile);
252 rmolService.buildSampleBom();
255 RMOL::BookingClassDataSet lBookingClassDataSet;
258 RMOL::BookingClassData QClassData (10, 100, 1,
false);
259 RMOL::BookingClassData MClassData (5, 150, 0.8,
true);
260 RMOL::BookingClassData BClassData (0, 200, 0.6,
false);
261 RMOL::BookingClassData YClassData (0, 300, 0.3,
false);
264 STDAIR_LOG_DEBUG (QClassData.toString());
265 STDAIR_LOG_DEBUG (MClassData.toString());
266 STDAIR_LOG_DEBUG (BClassData.toString());
267 STDAIR_LOG_DEBUG (YClassData.toString());
270 lBookingClassDataSet.addBookingClassData (QClassData);
271 lBookingClassDataSet.addBookingClassData (MClassData);
272 lBookingClassDataSet.addBookingClassData (BClassData);
273 lBookingClassDataSet.addBookingClassData (YClassData);
276 STDAIR_LOG_DEBUG (lBookingClassDataSet.toString());
279 const stdair::NbOfClasses_T lNbOfClass = lBookingClassDataSet.getNumberOfClass();
282 STDAIR_LOG_DEBUG (
"Number of Classes: " << lNbOfClass);
285 BOOST_CHECK_NO_THROW (lBookingClassDataSet.updateMinimumFare());
286 const double lMinFare = lBookingClassDataSet.getMinimumFare();
289 STDAIR_LOG_DEBUG (
"Minimum fare: " << lMinFare);
292 BOOST_CHECK_NO_THROW (lBookingClassDataSet.updateCensorshipFlag());
293 const bool lCensorshipFlag = lBookingClassDataSet.getCensorshipFlag();
296 STDAIR_LOG_DEBUG (
"Censorship Flag: " << lCensorshipFlag);
299 logOutputFile.close();
303 BOOST_AUTO_TEST_SUITE_END()
Interface for the RMOL Services.