1 // Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
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.
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.
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
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
24 * Check all methods of SALOMEDS_UseCaseBuilder and UseCaseIterator
25 * Use code of SALOMEDS_UseCaseBuilder.cxx and SALOMEDS_UseCaseIterator.cxx
28 #define SALOMEDS_ALL_TESTS
30 void SALOMEDSTest::testUseCase()
33 _PTR(Study) study(new SALOMEDS_Study(_study));
35 CPPUNIT_ASSERT(study);
37 //Create Study Builder
38 _PTR(StudyBuilder) studyBuilder = study->NewBuilder();
39 CPPUNIT_ASSERT(studyBuilder);
41 //Create a new UseCaseBuilder
42 _PTR(UseCaseBuilder) builder = study->GetUseCaseBuilder();
43 CPPUNIT_ASSERT(builder);
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);
50 //Check method SetCurrentObject
51 builder->SetCurrentObject(root1);
53 //Check method GetCurrentObject
54 CPPUNIT_ASSERT(builder->GetCurrentObject() && builder->GetCurrentObject()->GetID() == root1->GetID());
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
60 //Check method IsUseCase
61 CPPUNIT_ASSERT(builder->IsUseCase(root1) && builder->IsUseCase(root2));
63 //Check method SetName
64 builder->SetName("A root use case");
66 //Check method GetName
67 CPPUNIT_ASSERT(builder->GetName() == "A root use case");
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());
78 CPPUNIT_ASSERT(root_it->More());
79 CPPUNIT_ASSERT(root_it->Value()->GetID() == root2->GetID());
81 CPPUNIT_ASSERT(!root_it->More());
83 cout << endl << "THE TEST IS NOT COMPLETE !!!" << endl;
86 builder->SetCurrentObject(root1);
87 _PTR(UseCaseIterator) it = builder->GetUseCaseIterator(root1); //The iterator on the given UseCase
90 _PTR(SObject) so1 = study->CreateObjectID("0:1:1");
91 _PTR(SObject) so2 = study->CreateObjectID("0:1:2");
92 CPPUNIT_ASSERT(builder->Append(so1));
94 //Check methods Init, More, Next and Value of UseCaseIterator
96 CPPUNIT_ASSERT(it->More());
97 CPPUNIT_ASSERT(it->Value()->GetID() == so1->GetID());
99 CPPUNIT_ASSERT(!it->More());
101 //Check method AppendTo
102 CPPUNIT_ASSERT(builder->AppendTo(so1, so2));
104 //Check method HasChildren
105 CPPUNIT_ASSERT(builder->HasChildren(so1));
106 CPPUNIT_ASSERT(!builder->HasChildren(so2));
108 //Check method SortChildren
109 CPPUNIT_ASSERT(builder->SortChildren(so1, true));
110 CPPUNIT_ASSERT(!builder->SortChildren(so2, false));
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());
117 CPPUNIT_ASSERT(!it->More());
119 it->Init(true); //All levels
120 CPPUNIT_ASSERT(it->More());
121 CPPUNIT_ASSERT(it->Value()->GetID() == so1->GetID());
123 CPPUNIT_ASSERT(it->More());
124 CPPUNIT_ASSERT(it->Value()->GetID() == so2->GetID());
126 CPPUNIT_ASSERT(!it->More());
128 //Check method Remove
129 CPPUNIT_ASSERT(builder->Remove(so2));
131 CPPUNIT_ASSERT(it->More());
132 CPPUNIT_ASSERT(it->Value()->GetID() == so1->GetID());
134 CPPUNIT_ASSERT(!it->More());
136 CPPUNIT_ASSERT(builder->Append(so2));
138 //Check method InsertBefore
139 CPPUNIT_ASSERT(builder->InsertBefore(so2, so1));
142 CPPUNIT_ASSERT(it->More());
143 CPPUNIT_ASSERT(it->Value()->GetID() == so2->GetID());
145 CPPUNIT_ASSERT(it->More());
146 CPPUNIT_ASSERT(it->Value()->GetID() == so1->GetID());
150 #undef SALOMEDS_ALL_TESTS