Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / applications / test / fileName / Test-fileName.C
blob797055b60eda93d247bffa8a4464bf211f5f2ab4
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2004-2011 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 Application
25     Test-fileName
27 Description
28     Test some basic fileName functionality
30 \*---------------------------------------------------------------------------*/
32 #include "fileName.H"
33 #include "SubList.H"
34 #include "IOobject.H"
35 #include "IOstreams.H"
36 #include "OSspecific.H"
38 using namespace Foam;
40 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
41 // Main program:
43 int main()
45     wordList wrdList(5);
46     wrdList[0] = "hello";
47     wrdList[1] = "hello1";
48     wrdList[2] = "hello2";
49     wrdList[3] = "hello3";
50     wrdList[4] = "hello4.hmm";
52     fileName pathName(wrdList);
54     Info<< "pathName = " << pathName << nl
55         << "pathName.name()     = >" << pathName.name() << "<\n"
56         << "pathName.path()     = "  << pathName.path() << nl
57         << "pathName.ext()      = >" << pathName.ext() << "<\n"
58         << "pathName.name(true) = >" << pathName.name(true) << "<\n";
60     Info<< "pathName.components() = " << pathName.components() << nl
61         << "pathName.component(2) = " << pathName.component(2) << nl
62         << endl;
64     // try with different combination
65     // The final one should emit warnings
66     for (label start = 0; start <= wrdList.size(); ++start)
67     {
68         fileName instance, local;
69         word name;
71         fileName path(SubList<word>(wrdList, wrdList.size()-start, start));
72         fileName path2 = "."/path;
74         IOobject::fileNameComponents
75         (
76             path,
77             instance,
78             local,
79             name
80         );
82         Info<< "IOobject::fileNameComponents for " << path << nl
83             << "  instance = " << instance << nl
84             << "  local    = " << local << nl
85             << "  name     = " << name << endl;
87         IOobject::fileNameComponents
88         (
89             path2,
90             instance,
91             local,
92             name
93         );
95         Info<< "IOobject::fileNameComponents for " << path2 << nl
96             << "  instance = " << instance << nl
97             << "  local    = " << local << nl
98             << "  name     = " << name << endl;
100     }
102     // test findEtcFile
103     Info<< "\n\nfindEtcFile tests:" << nl
104         << " controlDict => " << findEtcFile("controlDict") << nl
105         << " badName => " << findEtcFile("badName") << endl;
107     Info<< "This should emit a fatal error:" << endl;
108     Info<< " badName(die) => " << findEtcFile("badName", true) << nl
109         << endl;
111     Info<< "\nEnd\n" << endl;
112     return 0;
116 // ************************************************************************* //