1 // Copyright (C) 2006 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
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.
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.
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
18 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 * Check all methods of SALOMEDS_UseCaseBuilder and UseCaseIterator
23 * Use code of SALOMEDS_UseCaseBuilder.cxx and SALOMEDS_UseCaseIterator.cxx
26 #define SALOMEDS_ALL_TESTS
28 void SALOMEDSTest::testUseCase()
30 //Create or find the Study manager
31 _PTR(StudyManager) sm ( new SALOMEDS_StudyManager(_sm) );
35 _PTR(Study) study = sm->NewStudy("TestSObject");
36 CPPUNIT_ASSERT(study);
38 //Create Study Builder
39 _PTR(StudyBuilder) studyBuilder = study->NewBuilder();
40 CPPUNIT_ASSERT(studyBuilder);
42 //Create a new UseCaseBuilder
43 _PTR(UseCaseBuilder) builder = study->GetUseCaseBuilder();
44 CPPUNIT_ASSERT(builder);
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);
51 //Check method SetCurrentObject
52 builder->SetCurrentObject(root1);
54 //Check method GetCurrentObject
55 CPPUNIT_ASSERT(builder->GetCurrentObject() && builder->GetCurrentObject()->GetID() == root1->GetID());
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
61 //Check method IsUseCase
62 CPPUNIT_ASSERT(builder->IsUseCase(root1) && builder->IsUseCase(root2));
64 //Check method SetName
65 builder->SetName("A root use case");
67 //Check method GetName
68 CPPUNIT_ASSERT(builder->GetName() == "A root use case");
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());
79 CPPUNIT_ASSERT(root_it->More());
80 CPPUNIT_ASSERT(root_it->Value()->GetID() == root2->GetID());
82 CPPUNIT_ASSERT(!root_it->More());
84 cout << endl << "THE TEST IS NOT COMPLETE !!!" << endl;
87 builder->SetCurrentObject(root1);
88 _PTR(UseCaseIterator) it = builder->GetUseCaseIterator(root1); //The iterator on the given UseCase
91 _PTR(SObject) so1 = study->CreateObjectID("0:1:1");
92 _PTR(SObject) so2 = study->CreateObjectID("0:1:2");
93 CPPUNIT_ASSERT(builder->Append(so1));
95 //Check methods Init, More, Next and Value of UseCaseIterator
97 CPPUNIT_ASSERT(it->More());
98 CPPUNIT_ASSERT(it->Value()->GetID() == so1->GetID());
100 CPPUNIT_ASSERT(!it->More());
102 //Check method AppendTo
103 CPPUNIT_ASSERT(builder->AppendTo(so1, so2));
105 //Check method HasChildren
106 CPPUNIT_ASSERT(builder->HasChildren(so1));
107 CPPUNIT_ASSERT(!builder->HasChildren(so2));
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());
114 CPPUNIT_ASSERT(!it->More());
116 it->Init(true); //All levels
117 CPPUNIT_ASSERT(it->More());
118 CPPUNIT_ASSERT(it->Value()->GetID() == so1->GetID());
120 CPPUNIT_ASSERT(it->More());
121 CPPUNIT_ASSERT(it->Value()->GetID() == so2->GetID());
123 CPPUNIT_ASSERT(!it->More());
125 //Check method Remove
126 CPPUNIT_ASSERT(builder->Remove(so2));
128 CPPUNIT_ASSERT(it->More());
129 CPPUNIT_ASSERT(it->Value()->GetID() == so1->GetID());
131 CPPUNIT_ASSERT(!it->More());
133 CPPUNIT_ASSERT(builder->Append(so2));
135 //Check method InsertBefore
136 CPPUNIT_ASSERT(builder->InsertBefore(so2, so1));
139 CPPUNIT_ASSERT(it->More());
140 CPPUNIT_ASSERT(it->Value()->GetID() == so2->GetID());
142 CPPUNIT_ASSERT(it->More());
143 CPPUNIT_ASSERT(it->Value()->GetID() == so1->GetID());
147 #undef SALOMEDS_ALL_TESTS