Initial commit for version 2.0.x patch release
[OpenFOAM-2.0.x.git] / applications / test / sha1 / Test-SHA1.C
blobed55e4bbecd80b4b7db7ef267729eb7f40482f50
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2004-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 Application
25     testSHA1
27 Description
30 \*---------------------------------------------------------------------------*/
32 #include "OSHA1stream.H"
33 #include "IStringStream.H"
34 #include "dictionary.H"
36 using namespace Foam;
38 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
40 int main(int argc, char * argv[])
42     SHA1 sha;
43     SHA1Digest shaDig;
45     std::string str("The quick brown fox jumps over the lazy dog");
46     Info<< shaDig << nl;
47     Info<< SHA1("The quick brown fox jumps over the lazy dog") << nl;
49     sha.append("The quick brown fox jumps over the lazy dog");
50     Info<< sha << nl;
52     sha.clear();
53     sha.append("The quick brown fox jumps over the lazy dog");
54     shaDig = sha;
56     sha.append("\n");
57     Info<< sha << nl;
58     Info<< shaDig << nl;
60     if (sha == shaDig)
61     {
62         Info<<"SHA1 digests are identical\n";
63     }
64     else
65     {
66         Info<<"SHA1 digests are different\n";
67     }
68     Info<<"lhs:" << sha << " rhs:" << shaDig << endl;
70     // start over:
71     sha.clear();
72     sha.append(str);
74     SHA1Digest shaDig_A = sha;
76     SHA1 sha_A = sha;
78     sha.append("\n");
80     Info<< "digest1: " << sha_A << nl;
81     Info<< "digest2: " << sha << nl;
83     // start over:
84     sha.clear();
85     sha.append("\"");
86     sha.append(str);
87     sha.append("\"");
89     Info<< "digest3: " << sha << nl;
91     // try the output buffer interface
92     {
93         OSHA1stream os;
95         os  << str;
96         Info<< os.digest() << endl;
98         os  << str;
99         Info<< os.digest() << endl;
101         os.rewind();
102         os  << "The quick brown fox jumps over the lazy dog";
103         Info<< os.digest() << endl;
105     }
107     {
108         dictionary dict
109         (
110             IStringStream
111             (
112                 "parent { Default_Boundary_Region { type zeroGradient; } }"
113                 "inlet_1 { value inlet_1; }"
114                 "inlet_2 { value inlet_2; }"
115                 "inlet_3 { value inlet_3; }"
116                 "\"inlet_.*\" { value XXX; }"
117             ) ()
118         );
120         Info<< "dict:" << endl;
121         dict.write(Info, false);
123         dictionary dict2(dict);
125         OSHA1stream os;
126         dict.write(os, false);
127         Info<< os.digest() << endl;
129         Info<< dict2.digest() << endl;
130     }
133     return 0;