15 #define BOOST_TEST_DYN_LINK 16 #define BOOST_TEST_MAIN 17 #define BOOST_TEST_MODULE OptimiseTestSuite 18 #include <boost/test/unit_test.hpp> 20 #include <stdair/basic/BasLogParams.hpp> 21 #include <stdair/basic/BasDBParams.hpp> 22 #include <stdair/service/Logger.hpp> 27 namespace boost_utf = boost::unit_test;
30 std::ofstream utfReportStream (
"bomsforforecaster_utfresults.xml");
35 struct UnitTestConfig {
38 boost_utf::unit_test_log.set_stream (utfReportStream);
39 #if defined(BOOST_VERSION) && BOOST_VERSION >= 105900 40 boost_utf::unit_test_log.set_format (boost_utf::OF_XML);
41 #else // BOOST_VERSION 42 boost_utf::unit_test_log.set_format (boost_utf::XML);
43 #endif // BOOST_VERSION 44 boost_utf::unit_test_log.set_threshold_level (boost_utf::log_test_units);
56 struct BookingClassData {
65 BookingClassData (
const double iBookingCount,
const double iFare,
66 const double iSellupFactor,
const bool iCensorshipFlag)
67 : _bookingCount(iBookingCount), _fare(iFare),
68 _sellupFactor(iSellupFactor), _censorshipFlag(iCensorshipFlag) {
72 double getFare ()
const {
76 bool getCensorshipFlag ()
const {
77 return _censorshipFlag;
81 std::string toString()
const {
82 std::ostringstream oStr;
84 <<
"[Booking class data information]" << std::endl
85 <<
"Booking counter: " << _bookingCount << std::endl
86 <<
"Fare: " << _fare << std::endl
87 <<
"Sell-up Factor: " << _sellupFactor << std::endl
88 <<
"censorshipFlag: " << _censorshipFlag << std::endl;
95 struct BookingClassDataSet {
97 typedef std::vector<BookingClassData*> BookingClassDataList_T;
102 bool _censorshipFlag;
103 BookingClassDataList_T _bookingClassDataList;
106 BookingClassDataSet ()
107 : _numberOfClass(0), _minimumFare(0),
108 _censorshipFlag(false) {
112 void addBookingClassData (BookingClassData& ioBookingClassData) {
113 _bookingClassDataList.push_back (&ioBookingClassData);
117 stdair::NbOfClasses_T getNumberOfClass ()
const {
118 return _bookingClassDataList.size();
121 double getMinimumFare ()
const {
125 bool getCensorshipFlag ()
const {
126 return _censorshipFlag;
130 void setMinimumFare (
const double iMinFare) {
131 _minimumFare = iMinFare;
134 void setCensorshipFlag (
const bool iCensorshipFlag) {
135 _censorshipFlag = iCensorshipFlag;
139 void updateMinimumFare() {
140 double minFare = std::numeric_limits<double>::max();
141 BookingClassDataList_T::iterator itBookingClassDataList;
142 for (itBookingClassDataList = _bookingClassDataList.begin();
143 itBookingClassDataList != _bookingClassDataList.end();
144 ++itBookingClassDataList) {
145 BookingClassData* lBookingClassData = *itBookingClassDataList;
146 assert (lBookingClassData != NULL);
148 const double lFare = lBookingClassData->getFare();
149 if (lFare < minFare) {
154 setMinimumFare(minFare);
158 void updateCensorshipFlag () {
159 bool censorshipFlag =
false;
160 BookingClassDataList_T::iterator itBookingClassDataList;
161 for (itBookingClassDataList = _bookingClassDataList.begin();
162 itBookingClassDataList != _bookingClassDataList.end();
163 ++itBookingClassDataList) {
164 BookingClassData* lBookingClassData = *itBookingClassDataList;
165 assert (lBookingClassData != NULL);
167 const bool lCensorshipFlagOfAClass =
168 lBookingClassData->getCensorshipFlag();
169 if (lCensorshipFlagOfAClass) {
170 censorshipFlag =
true;
175 setCensorshipFlag(censorshipFlag);
179 std::string toString()
const {
180 std::ostringstream oStr;
182 <<
"[Booking class data set information]" << std::endl
183 <<
"Number of classes: " << _numberOfClass << std::endl
184 <<
"Minimum fare: " << _minimumFare << std::endl
185 <<
"The data of the class set are sensored: " << _censorshipFlag
224 BOOST_GLOBAL_FIXTURE (UnitTestConfig);
229 BOOST_AUTO_TEST_SUITE (master_test_suite)
234 BOOST_AUTO_TEST_CASE (rmol_forecaster) {
237 std::string lLogFilename (
"bomsforforecaster.log");
238 std::ofstream logOutputFile;
241 logOutputFile.open (lLogFilename.c_str());
242 logOutputFile.clear();
245 const stdair::BasLogParams lLogParams (stdair::LOG::DEBUG, logOutputFile);
251 rmolService.buildSampleBom();
254 RMOL::BookingClassDataSet lBookingClassDataSet;
257 RMOL::BookingClassData QClassData (10, 100, 1,
false);
258 RMOL::BookingClassData MClassData (5, 150, 0.8,
true);
259 RMOL::BookingClassData BClassData (0, 200, 0.6,
false);
260 RMOL::BookingClassData YClassData (0, 300, 0.3,
false);
263 STDAIR_LOG_DEBUG (QClassData.toString());
264 STDAIR_LOG_DEBUG (MClassData.toString());
265 STDAIR_LOG_DEBUG (BClassData.toString());
266 STDAIR_LOG_DEBUG (YClassData.toString());
269 lBookingClassDataSet.addBookingClassData (QClassData);
270 lBookingClassDataSet.addBookingClassData (MClassData);
271 lBookingClassDataSet.addBookingClassData (BClassData);
272 lBookingClassDataSet.addBookingClassData (YClassData);
275 STDAIR_LOG_DEBUG (lBookingClassDataSet.toString());
278 const stdair::NbOfClasses_T lNbOfClass = lBookingClassDataSet.getNumberOfClass();
281 STDAIR_LOG_DEBUG (
"Number of Classes: " << lNbOfClass);
284 BOOST_CHECK_NO_THROW (lBookingClassDataSet.updateMinimumFare());
285 const double lMinFare = lBookingClassDataSet.getMinimumFare();
288 STDAIR_LOG_DEBUG (
"Minimum fare: " << lMinFare);
291 BOOST_CHECK_NO_THROW (lBookingClassDataSet.updateCensorshipFlag());
292 const bool lCensorshipFlag = lBookingClassDataSet.getCensorshipFlag();
295 STDAIR_LOG_DEBUG (
"Censorship Flag: " << lCensorshipFlag);
298 logOutputFile.close();
302 BOOST_AUTO_TEST_SUITE_END()
Interface for the RMOL Services.