1 // Created on: 2002-04-30
2 // Created by: Alexander KARTOMIN (akm)
3 // Copyright (c) 2002-2014 OPEN CASCADE SAS
5 // This file is part of Open CASCADE Technology software library.
7 // This library is free software; you can redistribute it and/or modify it under
8 // the terms of the GNU Lesser General Public License version 2.1 as published
9 // by the Free Software Foundation, with special exception defined in the file
10 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
11 // distribution for complete text of the license and disclaimer of any warranty.
13 // Alternatively, this file may be used under the terms of Open CASCADE
14 // commercial license or contractual agreement.
16 #ifndef QANCollection_FuncLists_HeaderFile
17 #define QANCollection_FuncLists_HeaderFile
19 // ===================== Test methods of List type ==========================
20 ////////////////////////////////void TestList (QANCollection_List& theL)
21 void TestList (QANCollection_ListFunc& theL)
24 Standard_Integer iExt=theL.Extent();
27 printf ("Info: testing List(%d)\n", iExt);
28 // Append(2), Prepend(2), InsertBefore(2), InsertAfter(2),
29 // Remove, RemoveFirst, First, Last
31 ////////////////////////////////QANCollection_List aL, aL1;
32 QANCollection_ListFunc aL, aL1;
36 aL.Append (anItem); // #1
37 aL.Append (aL1); // #2
39 aL1.Prepend (anItem); // #3
40 aL1.Prepend (aL); // #4
41 ////////////////////////////////QANCollection_List::Iterator anI(theL);
42 QANCollection_ListFunc::Iterator anI(theL);
46 theL.InsertBefore (anItem, anI); // #5
47 theL.InsertBefore (aL1, anI); // #6
49 theL.InsertAfter (anItem, anI); // #7
50 theL.InsertAfter (aL, anI); // #8
51 theL.Remove (anI); // #9
52 if (theL.Extent() > 0)
53 theL.RemoveFirst(); // #10
57 theL.Prepend (anItem);
58 PrintItem(theL.First());
59 PrintItem(theL.Last());
62 // Copy constructor + operator=
63 ////////////////////////////////aL = QANCollection_List(theL);
64 aL = QANCollection_ListFunc(theL);
67 AssignCollection (theL, aL);
73 // ===================== Test methods of Queue type ===========================
74 ////////////////////////////////void TestQueue (QANCollection_Queue& theQ)
75 void TestQueue (QANCollection_QueueFunc& theQ)
78 Standard_Integer iLen=theQ.Length();
81 printf ("Info: testing Queue(%d)\n", iLen);
82 // Push, Pop, Front, ChangeFront
84 ////////////////////////////////QANCollection_Queue aQ;
85 QANCollection_QueueFunc aQ;
90 Random(aQ.ChangeFront());
93 PrintItem(aQ.Front());
96 // Copy constructor + operator=
97 ////////////////////////////////theQ = QANCollection_Queue(aQ);
98 theQ = QANCollection_QueueFunc(aQ);
101 AssignCollection (theQ, aQ);
107 // ===================== Test methods of Stack type ===========================
108 ////////////////////////////////void TestStack (QANCollection_Stack& theS)
109 void TestStack (QANCollection_StackFunc& theS)
112 Standard_Integer iDep=theS.Depth();
115 printf ("Info: testing Stack(%d)\n", iDep);
116 // Push, Pop, Top, ChangeTop
118 ////////////////////////////////QANCollection_Stack aS;
119 QANCollection_StackFunc aS;
124 Random(aS.ChangeTop());
130 // Copy constructor + operator=
131 ////////////////////////////////theS = QANCollection_Stack(aS);
132 theS = QANCollection_StackFunc(aS);
135 AssignCollection (theS, aS);
141 // ===================== Test methods of Set type =============================
142 ////////////////////////////////void TestSet (QANCollection_Set& theS)
143 void TestSet (QANCollection_SetFunc& theS)
146 Standard_Integer iExt=theS.Extent();
149 printf ("Info: testing Set(%d)\n", iExt);
152 ////////////////////////////////QANCollection_Set aSet1, aSet2, aSet;
153 QANCollection_SetFunc aSet1, aSet2, aSet;
166 if (!aSet2.Contains(anItem))
167 printf ("Error : set sais it does not contain its item\n");
168 // operator=, Union, Difference, Intersection
170 printCollection(aSet2,"Set2");
172 printCollection(aSet1,"Union");
173 if (!aSet1.IsAProperSubset(aSet2))
174 printf ("Error : not a proper subset?\n");
175 if (!aSet1.IsAProperSubset(aSet2))
176 printf ("Error : not a subset?!\n");
177 aSet1.Intersection(aSet);
178 printCollection(aSet,"Intersection");
179 aSet1.Difference(aSet2);
180 printCollection(aSet1,"Difference");
183 ////////////////////////////////Handle(QANCollection_HSet) aHS = new QANCollection_HSet(aSet);
184 Handle(QANCollection_HSetFunc) aHS = new QANCollection_HSetFunc(aSet);
187 AssignCollection (aHS->ChangeSet(), theS);
193 // ===================== Test methods of SList type ===========================
194 ////////////////////////////////void TestSList (QANCollection_SList& theSL)
195 void TestSList (QANCollection_SListFunc& theSL)
197 printf ("Info: testing SList\n");
199 ////////////////////////////////QANCollection_SList aSL, aSL1;
200 QANCollection_SListFunc aSL, aSL1;
202 // Construct, Constructed, operator=, IsEmpty
204 aSL.Construct(anItem);
206 aSL1 = aSL.Constructed(anItem);
208 printf ("Error : SList must not be empty\n");
209 printCollection(aSL1,"aSL1");
212 aSL.Construct(anItem);
215 printCollection(aSL,"aSL");
218 Random(aSL1.Tail().ChangeValue());
219 // ChangeTail, ToTail
221 theSL.Construct(anItem);
222 printCollection(theSL,"theSL");
223 theSL.ChangeTail() = aSL;
224 printCollection(theSL,"theSL");
227 AssignCollection (aSL, theSL);
233 // ===================== Test methods of Sequence type ========================
234 ////////////////////////////////void TestSequence (QANCollection_Sequence& theS)
235 void TestSequence (QANCollection_SequenceFunc& theS)
239 printf ("Info: testing Sequence\n");
242 ////////////////////////////////QANCollection_Sequence aS, aS1;
243 QANCollection_SequenceFunc aS, aS1;
244 // Append(2), Prepend(2), InsertBefore(2), InsertAfter(2),
245 // Remove, RemoveFirst, First, Last
249 aS.Append (anItem); // #1
250 aS.Append (aS1); // #2
252 aS1.Prepend (anItem); // #3
253 aS1.Prepend (aS); // #4
254 if (theS.Length() > 0)
257 theS.InsertBefore (1, anItem); // #5
258 theS.InsertBefore (2, aS1); // #6
260 theS.InsertAfter (1, anItem); // #7
261 theS.InsertAfter (2, aS); // #8
262 theS.Remove (1); // #9
263 if (theS.Length() > 0)
264 theS.Remove(1); // #10
268 theS.Prepend (anItem);
269 PrintItem(theS.First());
270 PrintItem(theS.Last());
278 ////////////////////////////////Handle(QANCollection_HSequence) aHS = new QANCollection_HSequence(aS1);
279 Handle(QANCollection_HSequenceFunc) aHS = new QANCollection_HSequenceFunc(aS1);
280 theS.Split (3, aHS->ChangeSequence());
283 AssignCollection (theS, aS);