ENH: patchCloud: return pTraits<Type>::max for unfound points
[OpenFOAM-1.7.x.git] / applications / test / sort / sortListTest.C
blobcc9f64a660857821bc77b67574ace1fccafc0324
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2010 OpenCFD Ltd.
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
9     This file is part of OpenFOAM.
11     OpenFOAM is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by
13     the Free Software Foundation, either version 3 of the License, or
14     (at your option) any later version.
16     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
24 Description
26 \*---------------------------------------------------------------------------*/
28 #include "SortableList.H"
29 #include "ListOps.H"
31 using namespace Foam;
33 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
34 // Main program:
36 int main(int argc, char *argv[])
38     labelList orig(8);
39     orig[0] = 7;
40     orig[1] = 9;
41     orig[2] = 1;
42     orig[3] = 2;
43     orig[4] = 4;
44     orig[5] = 7;
45     orig[6] = 4;
46     orig[7] = 0;
48     labelList order;
50     labelList a(orig);
51     sortedOrder(a, order);
53     Info<< "unsorted: " << a << endl;
54     sort(a);
55     Info<< "sorted:   " << a << endl;
56     Info<< "indices:  " << order << endl;
58     SortableList<label> b(orig);
59     Info<< "unsorted: " << orig << endl;
60     Info<< "sorted:   " << b << endl;
61     Info<< "indices:  " << b.indices() << endl;
63     Info<< "shrunk:   " << b.shrink() << endl;
64     Info<< "indices:  " << b.indices() << endl;
66     // repeat by assignment
67     b = orig;
68     Info<< "unsorted: " << b << endl;
69     b.sort();
71     Info<< "sorted:   " << b << endl;
72     Info<< "indices:  " << b.indices() << endl;
74     // find unique/duplicate values
75     b = orig;
77     Info<< "unsorted: " << b << endl;
78     uniqueOrder(b, order);
79     Info<< "unique:  " << order << endl;
80     duplicateOrder(b, order);
81     Info<< "duplicate:" << order << endl;
83     // sort reverse
84     Info<< "unsorted: " << b << endl;
85     b.reverseSort();
86     Info<< "rsort:    " << b << endl;
87     Info<< "indices:  " << b.indices() << endl;
89     // transfer assignment
90     a = orig;
91     b.transfer(a);
92     Info<< "unsorted: " << b << endl;
93     b.sort();
95     Info<< "sorted:   " << b << endl;
96     Info<< "indices:  " << b.indices() << endl;
98     a.transfer(b);
100     Info<< "plain:    " << a << endl;
101     Info<< "sorted:   " << b << endl;
102     Info<< "indices:  " << b.indices() << endl;
104     // sort/duplicate/unique with identical values
105     b.setSize(8);
106     b = 5;
108     Info<< "unsorted: " << b << endl;
110     uniqueOrder(b, order);
111     Info<< "unique:  " << order << endl;
112     duplicateOrder(b, order);
113     Info<< "duplicate:" << order << endl;
114     b.sort();
116     Info<< "sorted:   " << b << endl;
117     Info<< "indices:  " << b.indices() << endl;
119     // with a single value
120     b.setSize(1);
122     Info<< "unsorted: " << b << endl;
123     uniqueOrder(b, order);
124     Info<< "unique:  " << order << endl;
125     duplicateOrder(b, order);
126     Info<< "duplicate:" << order << endl;
127     b.sort();
129     Info<< "sorted:   " << b << endl;
130     Info<< "indices:  " << b.indices() << endl;
132     Info<< "\nEnd\n" << endl;
134     return 0;
138 // ************************************************************************* //