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