Salome HOME
merge from branch DEV tag mergeto_trunk_04apr08
[modules/yacs.git] / src / engine / Test / engineIntegrationTest.hxx
1 #ifndef __ENGINEINTEGRATIONTEST_HXX__
2 #define __ENGINEINTEGRATIONTEST_HXX__
3
4 #include <cppunit/extensions/HelperMacros.h>
5 #include <list>
6
7 namespace YACS
8 {
9   namespace ENGINE
10   {
11     class Task;
12
13     class EngineIntegrationTest : public CppUnit::TestFixture
14     {
15       CPPUNIT_TEST_SUITE( EngineIntegrationTest );
16       CPPUNIT_TEST( testBloc1 );
17       CPPUNIT_TEST( testBloc2 );
18       CPPUNIT_TEST( testBloc3 );
19       CPPUNIT_TEST( testBloc4 );
20       CPPUNIT_TEST( testForLoop1 );
21       CPPUNIT_TEST( testForLoop2 );
22       CPPUNIT_TEST( testForLoop3 );
23       CPPUNIT_TEST( testForLoop4 );
24       CPPUNIT_TEST( testForLoop5 );
25       CPPUNIT_TEST( testWhileLoop1 );
26       CPPUNIT_TEST( testWhileLoop2 );
27       CPPUNIT_TEST( testSwitch );
28       CPPUNIT_TEST( testSwitch2 );
29       CPPUNIT_TEST( testSwitch3 );
30       CPPUNIT_TEST( testEdInitOnLoops );
31       CPPUNIT_TEST( testLinkUpdate1 );
32       CPPUNIT_TEST( testLinkUpdate1DS );
33       CPPUNIT_TEST( testLinkUpdate2 );
34       CPPUNIT_TEST( testLinkUpdate2DS );
35       CPPUNIT_TEST( testLinkUpdate3 );
36       CPPUNIT_TEST( testLinkUpdate4 );
37       CPPUNIT_TEST( testInterLoopDFLink );
38       CPPUNIT_TEST( deathTestForLinks );
39       CPPUNIT_TEST( testForEachLoop1 );
40       CPPUNIT_TEST( testForEachLoop2 );
41       CPPUNIT_TEST( testForEachLoop3 );
42       CPPUNIT_TEST( testForEachLoop4 );
43       CPPUNIT_TEST( testForEachLoop5 );
44       CPPUNIT_TEST( testForOptimizerLoop1 );
45       CPPUNIT_TEST( testForOptimizerLoop2 );
46       CPPUNIT_TEST( testForDeployment1 );
47       CPPUNIT_TEST( testForDeployment2 );
48       CPPUNIT_TEST( testForCheckConsistency1 );
49       CPPUNIT_TEST( testForCheckConsistency2 );
50       CPPUNIT_TEST( testForCheckConsistency3 );
51       CPPUNIT_TEST( testForCheckConsistency4 );
52       CPPUNIT_TEST_SUITE_END();
53     public:
54       void setUp();
55       void tearDown();
56       void testBloc1();
57       void testBloc2();
58       void testBloc3();
59       void testBloc4();
60       void testSwitch();
61       void testSwitch2();
62       void testSwitch3();
63       void testForLoop1();
64       void testForLoop2();
65       void testForLoop3();
66       void testForLoop4();
67       void testForLoop5();
68       void testWhileLoop1();
69       void testWhileLoop2();
70       void testEdInitOnLoops();
71       void testLinkUpdate1();
72       void testLinkUpdate1DS();
73       void testLinkUpdate2();
74       void testLinkUpdate2DS();
75       void testLinkUpdate3();
76       void testLinkUpdate4();
77       void testInterLoopDFLink();
78       void deathTestForLinks();
79       void testForEachLoop1();
80       void testForEachLoop2();
81       void testForEachLoop3();
82       void testForEachLoop4();
83       void testForEachLoop5();
84       void testForOptimizerLoop1();
85       void testForOptimizerLoop2();
86       void testForDeployment1();
87       void testForDeployment2();
88       void testForCheckConsistency1();
89       void testForCheckConsistency2();
90       void testForCheckConsistency3();
91       void testForCheckConsistency4();
92     protected:
93       template<class T>
94       static void checkListsEqual(const std::list<T>& setToTest1, const std::list<T>& setToTest2);
95       template<class T>
96       static void checkSetsEqual(const std::set<T>& setToTest1, const std::set<T>& setToTest2);
97       template<class T>
98       static void checkSetsNotEqual(const std::set<T *>& setToTest1, const std::set<T *>&setToTest2);
99     };
100
101     template<class T>
102     void EngineIntegrationTest::checkListsEqual(const std::list<T>& setToTest1, const std::list<T>& setToTest2)
103     {
104       typename std::list<T>::iterator iter1=setToTest1.begin();
105       typename std::list<T>::iterator iter2=setToTest2.begin();
106       CPPUNIT_ASSERT_EQUAL_MESSAGE("Lists can't be equal : size different", (int)setToTest1.size(), (int)setToTest2.size());
107       for(;iter1!=setToTest1.end();iter1++,iter2++)
108         CPPUNIT_ASSERT_MESSAGE("Lists can't be equal : value different", *iter1==*iter2);
109     }
110
111     template<class T>
112     void EngineIntegrationTest::checkSetsEqual(const std::set<T>& setToTest1, const std::set<T>& setToTest2)
113     {
114       typename std::set<T>::iterator iter1=setToTest1.begin();
115       typename std::set<T>::iterator iter2=setToTest2.begin();
116       CPPUNIT_ASSERT_EQUAL_MESSAGE("Sets can't be equal : size different", (int)setToTest1.size(), (int)setToTest2.size());
117       for(;iter1!=setToTest1.end();iter1++,iter2++)
118         CPPUNIT_ASSERT_MESSAGE("Sets can't be equal : value different", *iter1==*iter2);
119     }
120     
121     template<class T>
122     void EngineIntegrationTest::checkSetsNotEqual(const std::set<T *>& setToTest1, const std::set<T *>&setToTest2)
123     {
124       typename std::set<T *>::iterator iter1=setToTest1.begin();
125       CPPUNIT_ASSERT_EQUAL_MESSAGE("Sets can't be equal : size different", (int)setToTest1.size(), (int)setToTest2.size());
126       for(;iter1!=setToTest1.end();iter1++)
127         CPPUNIT_ASSERT_MESSAGE("Elements is in set : not expected.",setToTest2.find(*iter1)==setToTest2.end());
128     }
129   }
130 }
131
132 #endif