|
From: <den...@us...> - 2010-09-12 16:40:37
|
Revision: 321
http://stdair.svn.sourceforge.net/stdair/?rev=321&view=rev
Author: denis_arnaud
Date: 2010-09-12 16:40:31 +0000 (Sun, 12 Sep 2010)
Log Message:
-----------
[Test] Added a test sub-directory for Boost.Intrusive-based architecture.
Modified Paths:
--------------
trunk/stdair/test/archi_intru/FlightDate.hpp
trunk/stdair/test/archi_intru/TestManager.cpp
trunk/stdair/test/archi_intru/TestManager.hpp
trunk/stdair/test/archi_intru/archi.cpp
Modified: trunk/stdair/test/archi_intru/FlightDate.hpp
===================================================================
--- trunk/stdair/test/archi_intru/FlightDate.hpp 2010-09-12 16:23:47 UTC (rev 320)
+++ trunk/stdair/test/archi_intru/FlightDate.hpp 2010-09-12 16:40:31 UTC (rev 321)
@@ -5,8 +5,8 @@
// Import section
// //////////////////////////////////////////////////////////////////////
// STL
-#include <cassert>
#include <string>
+#include <vector>
// Boost.Intrusive
#include <boost/intrusive/list.hpp>
#include <boost/intrusive/set.hpp>
@@ -67,5 +67,6 @@
typedef bi::member_hook <FlightDate, bi::set_member_hook<>,
&FlightDate::_childSetHook> FlightDateSetMemberOption;
typedef bi::set<FlightDate, FlightDateSetMemberOption> FlightDateChildSet;
+
}
#endif // __INTRUSIVE_BOM_FLIGHTDATE_HPP
Modified: trunk/stdair/test/archi_intru/TestManager.cpp
===================================================================
--- trunk/stdair/test/archi_intru/TestManager.cpp 2010-09-12 16:23:47 UTC (rev 320)
+++ trunk/stdair/test/archi_intru/TestManager.cpp 2010-09-12 16:40:31 UTC (rev 321)
@@ -0,0 +1,153 @@
+// //////////////////////////////////////////////////////////////////////
+// Import section
+// //////////////////////////////////////////////////////////////////////
+// STL
+#include <cassert>
+#include <iostream>
+#include <sstream>
+#include <string>
+#include <vector>
+// Boost
+#include <boost/intrusive/list.hpp>
+// Local
+#include <test/archi_intru/FlightDate.hpp>
+#include <test/archi_intru/TestManager.hpp>
+
+/** Alias for the boost::intrusive namespace. */
+namespace bi = boost::intrusive;
+
+// //////////////////////////////////////////////////////////////////////
+TestManager::~TestManager() {
+ clean();
+}
+
+// //////////////////////////////////////////////////////////////////////
+void TestManager::init() {
+ initStandard();
+ initIntrusive();
+}
+
+// //////////////////////////////////////////////////////////////////////
+void TestManager::initStandard() {
+ // Create several FlightDate objects, each one with a different value
+ for (int idx = 0; idx < 100; ++idx) {
+ stdair::FlightDate* lFlightDate_ptr = new stdair::FlightDate (idx);
+ assert (lFlightDate_ptr != NULL);
+
+ _flightDateVector.push_back (lFlightDate_ptr);
+ }
+}
+
+// //////////////////////////////////////////////////////////////////////
+void TestManager::initIntrusive() {
+ // Now insert them in the same order as in vector in the member hook list
+ for (stdair::FlightDateVector_T::iterator itFlight(_flightDateVector.begin()),
+ itend (_flightDateVector.end()); itFlight != itend; ++itFlight) {
+ stdair::FlightDate* lFlightDate_ptr = *itFlight;
+ assert (lFlightDate_ptr != NULL);
+
+ _flightDateChildList.push_back (*lFlightDate_ptr);
+ _flightDateChildSet.insert (*lFlightDate_ptr);
+ }
+
+ // DEBUG
+ /*
+ std::cout << "Size of the Boost.Intrusive list of FlightDate objects: "
+ << lFlightDateChildList.size() << std::endl;
+ std::cout << "Size of the Boost.Intrusive set of FlightDate objects: "
+ << lFlightDateChildSet.size() << std::endl;
+ */
+}
+
+// //////////////////////////////////////////////////////////////////////
+void TestManager::clean() {
+ _flightDateChildSet.clear();
+ _flightDateChildList.clear_and_dispose(delete_disposer<stdair::FlightDate>());
+}
+
+// //////////////////////////////////////////////////////////////////////
+stdair::FlightDate* TestManager::getFromSet (const std::string& iKey) {
+ stdair::FlightDate* oFlightDate_ptr = NULL;
+ stdair::FlightDateChildSet::iterator itFlight =
+ _flightDateChildSet.find (iKey, StrExpComp<stdair::FlightDate>());
+ if (itFlight == _flightDateChildSet.end()) {
+ return oFlightDate_ptr;
+ }
+ oFlightDate_ptr = &*itFlight;
+ return oFlightDate_ptr;
+}
+
+// //////////////////////////////////////////////////////////////////////
+bool TestManager::testIntrusiveList() {
+ bool oTestSuccessfull = true;
+
+ stdair::FlightDateChildList::iterator mit (_flightDateChildList.begin()),
+ mitend (_flightDateChildList.end());
+ stdair::FlightDateVector_T::iterator itFlight (_flightDateVector.begin()),
+ itend (_flightDateVector.end());
+
+ // Test the objects inserted in the member hook list
+ for (itFlight = _flightDateVector.begin();
+ itFlight != itend; ++itFlight, ++mit) {
+ stdair::FlightDate* lFlightDate_ptr = *itFlight;
+ assert (lFlightDate_ptr != NULL);
+
+ if (&*mit != lFlightDate_ptr) {
+ oTestSuccessfull = false;
+ break;
+ }
+ }
+
+ return oTestSuccessfull;
+}
+
+// //////////////////////////////////////////////////////////////////////
+bool TestManager::testIntrusiveIteratorTo() {
+ bool oTestSuccessfull = true;
+
+ stdair::FlightDateChildList::iterator itChild(_flightDateChildList.begin());
+ for (int idx = 0; idx < 100; ++idx, ++itChild) {
+ stdair::FlightDate* lFlightDate_ptr = _flightDateVector.at(idx);
+ assert (lFlightDate_ptr != NULL);
+
+ if (_flightDateChildList.iterator_to (*lFlightDate_ptr) != itChild ||
+ stdair::FlightDateChildList::s_iterator_to(*lFlightDate_ptr)!= itChild){
+ oTestSuccessfull = false;
+ break;
+ }
+ }
+
+ return oTestSuccessfull;
+}
+
+// //////////////////////////////////////////////////////////////////////
+bool TestManager::testIntrusiveSets() {
+ bool oTestSuccessfull = true;
+
+ stdair::FlightDateChildSet::iterator itChild (_flightDateChildSet.begin()),
+ itChildEnd (_flightDateChildSet.end());
+ for (; itChild != itChildEnd; ++itChild) {
+ const stdair::FlightDate& lFlightDate = *itChild;
+
+ const std::string& lKey = lFlightDate.getKey();
+ stdair::FlightDate* retrievedFlightDate_ptr = getFromSet (lKey);
+
+ // DEBUG
+ /*
+ std::cout << "Key = '" << lKey << "', itFD = "
+ << &lFlightDate << ", retrieved: " << retrievedFlightDate_ptr
+ << std::endl;
+ */
+
+ if (retrievedFlightDate_ptr == NULL ||
+ _flightDateChildSet.iterator_to (lFlightDate) != itChild ||
+ _flightDateChildSet.iterator_to (*retrievedFlightDate_ptr) != itChild ||
+ stdair::FlightDateChildSet::s_iterator_to (lFlightDate) != itChild ||
+ stdair::FlightDateChildSet::s_iterator_to(*retrievedFlightDate_ptr) != itChild) {
+ oTestSuccessfull = false;
+ break;
+ }
+ }
+
+ return oTestSuccessfull;
+}
Modified: trunk/stdair/test/archi_intru/TestManager.hpp
===================================================================
--- trunk/stdair/test/archi_intru/TestManager.hpp 2010-09-12 16:23:47 UTC (rev 320)
+++ trunk/stdair/test/archi_intru/TestManager.hpp 2010-09-12 16:40:31 UTC (rev 321)
@@ -1,63 +1,31 @@
-#ifndef __LATUS_STDAIR_TST_TESTMANAGER_HPP
-#define __LATUS_STDAIR_TST_TESTMANAGER_HPP
+#ifndef __INTRUSIVE_TST_TESTMANAGER_HPP
+#define __INTRUSIVE_TST_TESTMANAGER_HPP
// //////////////////////////////////////////////////////////////////////
// Import section
// //////////////////////////////////////////////////////////////////////
// STL
-#include <cassert>
-#include <iostream>
-#include <sstream>
#include <string>
-#include <vector>
-// Boost
-#include <boost/intrusive/list.hpp>
// Local
#include <test/archi_intru/FlightDate.hpp>
-//#include <test/archi_intru/FacRelationShipRoot.hpp>
-/** Alias for the boost::intrusive namespace. */
-namespace bi = boost::intrusive;
-
/** Class wrapping test functions. */
class TestManager {
public:
/** Destructor. */
- ~TestManager() { clean(); }
+ ~TestManager();
public:
+ /** Initialise the internal vector, list and set. */
+ void init();
+
+private:
/** Fill the standard (STL) vector. */
- void initStandard() {
- // Create several FlightDate objects, each one with a different value
- for (int idx = 0; idx < 100; ++idx) {
- stdair::FlightDate* lFlightDate_ptr = new stdair::FlightDate (idx);
- assert (lFlightDate_ptr != NULL);
-
- _flightDateVector.push_back (lFlightDate_ptr);
- }
- }
+ void initStandard();
/** Fill the (Boost) Intrusive list (and set). */
- void initIntrusive() {
- // Now insert them in the same order as in vector in the member hook list
- for (stdair::FlightDateVector_T::iterator itFlight (_flightDateVector.begin()),
- itend (_flightDateVector.end()); itFlight != itend; ++itFlight) {
- stdair::FlightDate* lFlightDate_ptr = *itFlight;
- assert (lFlightDate_ptr != NULL);
-
- _flightDateChildList.push_back (*lFlightDate_ptr);
- _flightDateChildSet.insert (*lFlightDate_ptr);
- }
-
- // DEBUG
- /*
- std::cout << "Size of the Boost.Intrusive list of FlightDate objects: "
- << lFlightDateChildList.size() << std::endl;
- std::cout << "Size of the Boost.Intrusive set of FlightDate objects: "
- << lFlightDateChildSet.size() << std::endl;
- */
- }
-
+ void initIntrusive();
+
/** Some memory cleaning.
<br>Note: the FlightDate objects cannot be simply deleted (with the
delete opearator).
@@ -68,99 +36,22 @@
clear the last Boost.Intrusive container while deleting the corresponding
hooked objects.
*/
- void clean() {
- _flightDateChildSet.clear();
- _flightDateChildList.clear_and_dispose (delete_disposer<stdair::FlightDate>());
- }
-
+ void clean();
+
+public:
/** Optimized search functions */
- stdair::FlightDate* getFromSet (const std::string& iKey) {
- stdair::FlightDate* oFlightDate_ptr = NULL;
- stdair::FlightDateChildSet::iterator itFlight =
- _flightDateChildSet.find (iKey, StrExpComp<stdair::FlightDate>());
- if (itFlight == _flightDateChildSet.end()) {
- return oFlightDate_ptr;
- }
- oFlightDate_ptr = &*itFlight;
- return oFlightDate_ptr;
- }
+ stdair::FlightDate* getFromSet (const std::string& iKey);
/** Test (Boost) Intrusive lists. */
- bool testIntrusiveList() {
- bool oTestSuccessfull = true;
-
- stdair::FlightDateChildList::iterator mit (_flightDateChildList.begin()),
- mitend (_flightDateChildList.end());
- stdair::FlightDateVector_T::iterator itFlight (_flightDateVector.begin()),
- itend (_flightDateVector.end());
+ bool testIntrusiveList();
- // Test the objects inserted in the member hook list
- for (itFlight = _flightDateVector.begin();
- itFlight != itend; ++itFlight, ++mit) {
- stdair::FlightDate* lFlightDate_ptr = *itFlight;
- assert (lFlightDate_ptr != NULL);
-
- if (&*mit != lFlightDate_ptr) {
- oTestSuccessfull = false;
- break;
- }
- }
-
- return oTestSuccessfull;
- }
-
/** Test (Boost) Intrusive iterator_to(). */
- bool testIntrusiveIteratorTo() {
- bool oTestSuccessfull = true;
-
- stdair::FlightDateChildList::iterator itChild(_flightDateChildList.begin());
- for (int idx = 0; idx < 100; ++idx, ++itChild) {
- stdair::FlightDate* lFlightDate_ptr = _flightDateVector.at(idx);
- assert (lFlightDate_ptr != NULL);
-
- if (_flightDateChildList.iterator_to (*lFlightDate_ptr) != itChild ||
- stdair::FlightDateChildList::s_iterator_to(*lFlightDate_ptr) != itChild) {
- oTestSuccessfull = false;
- break;
- }
- }
-
- return oTestSuccessfull;
- }
+ bool testIntrusiveIteratorTo();
/** Test (Boost) Intrusive sets. */
- bool testIntrusiveSets() {
- bool oTestSuccessfull = true;
+ bool testIntrusiveSets();
- stdair::FlightDateChildSet::iterator itChild (_flightDateChildSet.begin()),
- itChildEnd (_flightDateChildSet.end());
- for (; itChild != itChildEnd; ++itChild) {
- const stdair::FlightDate& lFlightDate = *itChild;
-
- const std::string& lKey = lFlightDate.getKey();
- stdair::FlightDate* retrievedFlightDate_ptr = getFromSet (lKey);
-
- // DEBUG
- /*
- std::cout << "Key = '" << lKey << "', itFD = "
- << &lFlightDate << ", retrieved: " << retrievedFlightDate_ptr
- << std::endl;
- */
-
- if (retrievedFlightDate_ptr == NULL ||
- _flightDateChildSet.iterator_to (lFlightDate) != itChild ||
- _flightDateChildSet.iterator_to (*retrievedFlightDate_ptr) != itChild ||
- stdair::FlightDateChildSet::s_iterator_to (lFlightDate) != itChild ||
- stdair::FlightDateChildSet::s_iterator_to(*retrievedFlightDate_ptr) != itChild) {
- oTestSuccessfull = false;
- break;
- }
- }
-
- return oTestSuccessfull;
- }
-
-public:
+private:
// Standard STL container
stdair::FlightDateVector_T _flightDateVector;
@@ -169,4 +60,4 @@
stdair::FlightDateChildSet _flightDateChildSet;
};
-#endif // __LATUS_STDAIR_TST_TESTMANAGER_HPP
+#endif // __INTRUSIVE_TST_TESTMANAGER_HPP
Modified: trunk/stdair/test/archi_intru/archi.cpp
===================================================================
--- trunk/stdair/test/archi_intru/archi.cpp 2010-09-12 16:23:47 UTC (rev 320)
+++ trunk/stdair/test/archi_intru/archi.cpp 2010-09-12 16:40:31 UTC (rev 321)
@@ -1,17 +1,12 @@
// STL
#include <cassert>
-#include <iostream>
-#include <sstream>
-#include <string>
-#include <vector>
-// Boost
-#include <boost/intrusive/list.hpp>
+//#include <iostream>
+//#include <sstream>
+//#include <string>
+//#include <vector>
// Local
#include <test/archi_intru/TestManager.hpp>
-/** Alias for the boost::intrusive namespace. */
-namespace bi = boost::intrusive;
-
// /////////////////////////// M A I N /////////////////////////
/** Main.
<br>Run with the following command:
@@ -24,10 +19,8 @@
//
TestManager lTestManager;
- // Fill the standard (STL) vector
- lTestManager.initStandard();
-
- lTestManager.initIntrusive();
+ // Initialise the internal (STL) vector, (Boost.Intrusive) list and set
+ lTestManager.init();
// Now test lists
lTestManager.testIntrusiveList();
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|