Salome HOME
Join modifications from BR_Dev_For_4_0 tag V4_1_1.
[modules/yacs.git] / src / SALOMEDS / Test / SALOMEDSTest_UseCase.cxx
1 // Copyright (C) 2006  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
3 // 
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either 
7 // version 2.1 of the License.
8 // 
9 // This library is distributed in the hope that it will be useful 
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
12 // Lesser General Public License for more details.
13 //
14 // You should have received a copy of the GNU Lesser General Public  
15 // License along with this library; if not, write to the Free Software 
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 //
18 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 //
20
21 /*!
22  * Check all methods of SALOMEDS_UseCaseBuilder and UseCaseIterator
23  * Use code of SALOMEDS_UseCaseBuilder.cxx and SALOMEDS_UseCaseIterator.cxx
24  */
25
26 #define SALOMEDS_ALL_TESTS
27
28 void SALOMEDSTest::testUseCase()
29 {
30   //Create or find the Study manager
31   _PTR(StudyManager) sm ( new SALOMEDS_StudyManager(_sm) );
32   CPPUNIT_ASSERT(sm);
33
34   //Create a new study
35   _PTR(Study) study = sm->NewStudy("TestSObject");
36   CPPUNIT_ASSERT(study);
37
38   //Create Study Builder
39   _PTR(StudyBuilder) studyBuilder = study->NewBuilder();
40   CPPUNIT_ASSERT(studyBuilder);
41
42   //Create a new UseCaseBuilder
43   _PTR(UseCaseBuilder) builder = study->GetUseCaseBuilder();
44   CPPUNIT_ASSERT(builder);
45
46   //Check method AddUseCase
47   _PTR(SObject) root1 = builder->AddUseCase("UseCase_1");
48   _PTR(SObject) root2 = builder->AddUseCase("UseCase_2");
49   CPPUNIT_ASSERT(root1 && root2);
50
51   //Check method SetCurrentObject
52   builder->SetCurrentObject(root1);
53
54   //Check method GetCurrentObject
55   CPPUNIT_ASSERT(builder->GetCurrentObject() && builder->GetCurrentObject()->GetID() == root1->GetID());
56
57   //Check method SetRootCurrent
58   CPPUNIT_ASSERT(builder->SetRootCurrent());
59   CPPUNIT_ASSERT(builder->GetCurrentObject()->GetID() == "0:2"); //Root in UseCases is always placed at label 0:2
60
61   //Check method IsUseCase
62   CPPUNIT_ASSERT(builder->IsUseCase(root1) && builder->IsUseCase(root2));
63
64   //Check method SetName
65   builder->SetName("A root use case");
66
67   //Check method GetName
68   CPPUNIT_ASSERT(builder->GetName() == "A root use case");
69
70 #ifdef SALOMEDS_ALL_TESTS
71   //Check method GetUseCaseIterator
72   builder->SetRootCurrent();
73   _PTR(SObject) nullObject;
74   _PTR(UseCaseIterator) root_it = builder->GetUseCaseIterator(nullObject); //The iterator on all UseCases
75   root_it->Init(false); //Only the first level
76   CPPUNIT_ASSERT(root_it->More());
77   CPPUNIT_ASSERT(root_it->Value()->GetID() == root1->GetID());
78   root_it->Next();
79   CPPUNIT_ASSERT(root_it->More());
80   CPPUNIT_ASSERT(root_it->Value()->GetID() == root2->GetID());
81   root_it->Next();
82   CPPUNIT_ASSERT(!root_it->More());
83 #else
84   cout << endl << "THE TEST IS NOT COMPLETE !!!" << endl;
85 #endif
86
87   builder->SetCurrentObject(root1);
88   _PTR(UseCaseIterator) it = builder->GetUseCaseIterator(root1); //The iterator on the given UseCase
89
90   //Check method Append
91   _PTR(SObject) so1 = study->CreateObjectID("0:1:1");
92   _PTR(SObject) so2 = study->CreateObjectID("0:1:2");
93   CPPUNIT_ASSERT(builder->Append(so1));
94
95   //Check methods Init, More, Next and Value of UseCaseIterator
96   it->Init(false);
97   CPPUNIT_ASSERT(it->More());
98   CPPUNIT_ASSERT(it->Value()->GetID() == so1->GetID());
99   it->Next();
100   CPPUNIT_ASSERT(!it->More());
101
102   //Check method AppendTo
103   CPPUNIT_ASSERT(builder->AppendTo(so1, so2));
104
105   //Check method HasChildren
106   CPPUNIT_ASSERT(builder->HasChildren(so1));
107   CPPUNIT_ASSERT(!builder->HasChildren(so2));
108
109   //Check method Init of UseCaseIterator
110   it->Init(false); //Only the first level
111   CPPUNIT_ASSERT(it->More());
112   CPPUNIT_ASSERT(it->Value()->GetID() == so1->GetID());
113   it->Next();
114   CPPUNIT_ASSERT(!it->More());
115
116   it->Init(true); //All levels
117   CPPUNIT_ASSERT(it->More());
118   CPPUNIT_ASSERT(it->Value()->GetID() == so1->GetID());
119   it->Next();
120   CPPUNIT_ASSERT(it->More());
121   CPPUNIT_ASSERT(it->Value()->GetID() == so2->GetID());
122   it->Next();
123   CPPUNIT_ASSERT(!it->More());
124
125   //Check method Remove
126   CPPUNIT_ASSERT(builder->Remove(so2));
127   it->Init(true);
128   CPPUNIT_ASSERT(it->More());
129   CPPUNIT_ASSERT(it->Value()->GetID() == so1->GetID());
130   it->Next();
131   CPPUNIT_ASSERT(!it->More());
132
133   CPPUNIT_ASSERT(builder->Append(so2));
134
135   //Check method InsertBefore
136   CPPUNIT_ASSERT(builder->InsertBefore(so2, so1));
137
138   it->Init(false);
139   CPPUNIT_ASSERT(it->More());
140   CPPUNIT_ASSERT(it->Value()->GetID() == so2->GetID());
141   it->Next();
142   CPPUNIT_ASSERT(it->More());
143   CPPUNIT_ASSERT(it->Value()->GetID() == so1->GetID());
144
145   sm->Close(study);
146 }
147 #undef SALOMEDS_ALL_TESTS
148
149