Teuchos Package Browser (Single Doxygen Collection)
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
parameterlist
test
XML
XMLParameterListHelpers_UnitTest.cpp
Go to the documentation of this file.
1
// @HEADER
2
// ***********************************************************************
3
//
4
// Teuchos: Common Tools Package
5
// Copyright (2004) Sandia Corporation
6
//
7
// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8
// license for use of this work by or on behalf of the U.S. Government.
9
//
10
// Redistribution and use in source and binary forms, with or without
11
// modification, are permitted provided that the following conditions are
12
// met:
13
//
14
// 1. Redistributions of source code must retain the above copyright
15
// notice, this list of conditions and the following disclaimer.
16
//
17
// 2. Redistributions in binary form must reproduce the above copyright
18
// notice, this list of conditions and the following disclaimer in the
19
// documentation and/or other materials provided with the distribution.
20
//
21
// 3. Neither the name of the Corporation nor the names of the
22
// contributors may be used to endorse or promote products derived from
23
// this software without specific prior written permission.
24
//
25
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
//
37
// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
38
//
39
// ***********************************************************************
40
// @HEADER
41
42
#include <sstream>
43
#include "
Teuchos_XMLParameterListCoreHelpers.hpp
"
44
#include "
Teuchos_UnitTestHarness.hpp
"
45
46
namespace
Teuchos
{
47
48
49
TEUCHOS_UNIT_TEST
( XMLParameterListHelpers, toFromFile )
50
{
51
52
ParameterList
A
;
53
A
.sublist(
"SublistA"
).set(
"param_a"
,
"a"
);
54
A
.sublist(
"SublistA"
).sublist(
"SublistB"
).set(
"param_b"
,
"b"
);
55
out <<
"\nA:\n"
;
A
.print(out);
56
writeParameterListToXmlFile
(
A
,
"A.xml"
);
57
58
ParameterList
B
;
59
updateParametersFromXmlFile
(
"A.xml"
,
inoutArg
(
B
));
60
out <<
"\nB:\n"
;
B
.print(out);
61
TEST_ASSERT
(
A
==
B
);
62
63
64
TEST_EQUALITY
(
65
getParameter<std::string>
(
B
.sublist(
"SublistA"
,
true
),
"param_a"
),
66
"a"
);
67
TEST_EQUALITY
(
68
getParameter<std::string>
(
B
.sublist(
"SublistA"
,
true
).sublist(
"SublistB"
,
true
),
"param_b"
),
69
"b"
);
70
71
}
72
73
TEUCHOS_UNIT_TEST
( XMLParameterListHelpers, OverwriteTest )
74
{
75
ParameterList
A
;
76
A
.set(
"conflicting param"
,
"a"
);
77
A
.sublist(
"SublistA"
).set(
"param_a"
,
"a"
);
78
A
.sublist(
"SublistA"
).sublist(
"SublistB"
).set(
"param_b"
,
"b"
);
79
out <<
"\nA:\n"
;
A
.print(out);
80
std::stringstream Astream;
81
writeParameterListToXmlOStream
(
A
,Astream);
82
83
// Overwrite
84
ParameterList
B
;
85
B
.set(
"conflicting param"
,
"b"
);
86
updateParametersFromXmlString
(Astream.str(),
inoutArg
(
B
),
true
);
87
out <<
"\nB:\n"
;
B
.print(out);
88
TEST_ASSERT
(
A
==
B
);
89
TEST_EQUALITY
(
getParameter<std::string>
(
B
.sublist(
"SublistA"
,
true
),
"param_a"
),
"a"
);
90
TEST_EQUALITY
(
getParameter<std::string>
(
B
.sublist(
"SublistA"
,
true
).sublist(
"SublistB"
,
true
),
"param_b"
),
"b"
);
91
92
93
// No Overwrite
94
ParameterList
C
;
95
C
.set(
"conflicting param"
,
"c"
);
96
updateParametersFromXmlString
(Astream.str(),
inoutArg
(
B
),
false
);
97
out <<
"\nC:\n"
;
C
.print(out);
98
TEST_ASSERT
(
C
.get(
"conflicting param"
,
"x"
) ==
"c"
)
99
TEST_EQUALITY
(
getParameter<std::string>
(
B
.sublist(
"SublistA"
,
true
),
"param_a"
),
"a"
);
100
TEST_EQUALITY
(
getParameter<std::string>
(
B
.sublist(
"SublistA"
,
true
).sublist(
"SublistB"
,
true
),
"param_b"
),
"b"
);
101
102
}
103
104
105
106
}
// namespace Teuchos
107
108
109
TEST_ASSERT
#define TEST_ASSERT(v1)
Assert the given statement is true.
Definition
Teuchos_LocalTestingHelpers.hpp:71
TEST_EQUALITY
#define TEST_EQUALITY(v1, v2)
Assert the equality of v1 and v2.
Definition
Teuchos_LocalTestingHelpers.hpp:87
Teuchos_UnitTestHarness.hpp
Unit testing support.
TEUCHOS_UNIT_TEST
#define TEUCHOS_UNIT_TEST(TEST_GROUP, TEST_NAME)
Macro for defining a (non-templated) unit test.
Definition
Teuchos_UnitTestHelpers.hpp:83
Teuchos_XMLParameterListCoreHelpers.hpp
Simple helper functions that make it easy to read and write XML to and from a parameterlist.
Teuchos::ParameterList
A list of parameters of arbitrary type.
Definition
Teuchos_ParameterList.hpp:133
Teuchos::ParameterList::updateParametersFromXmlString
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT void updateParametersFromXmlString(const std::string &xmlStr, const Ptr< ParameterList > ¶mList, bool overwrite=true)
Reads XML parameters from a std::string and updates those already in the given parameter list.
Teuchos::ParameterList::writeParameterListToXmlOStream
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT void writeParameterListToXmlOStream(const ParameterList ¶mList, std::ostream &xmlOut, RCP< const DependencySheet > depSheet=null)
Write parameters and sublists in XML format to an std::ostream.
Teuchos::ParameterList::updateParametersFromXmlFile
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT void updateParametersFromXmlFile(const std::string &xmlFileName, const Ptr< ParameterList > ¶mList)
Reads XML parameters from a file and updates those already in the given parameter list.
Teuchos::ParameterList::getParameter
T & getParameter(ParameterList &l, const std::string &name)
A templated helper function for getting a parameter from a non-const list. This helper function preve...
Definition
Teuchos_ParameterList.hpp:1307
Teuchos::ParameterList::writeParameterListToXmlFile
TEUCHOSPARAMETERLIST_LIB_DLL_EXPORT void writeParameterListToXmlFile(const ParameterList ¶mList, const std::string &xmlFileName, RCP< const DependencySheet > depSheet=null)
Write parameters and sublist to an XML file.
Teuchos::Ptr::inoutArg
Ptr< T > inoutArg(T &arg)
create a non-persisting (required or optional) input/output argument for a function call.
Definition
Teuchos_PtrDecl.hpp:251
A
Definition
PackageA.cpp:3
B
Definition
PackageB.cpp:3
C
Definition
PackageC.cpp:3
Teuchos
Definition
Teuchos_AbstractFactory.hpp:47
Generated by
1.17.0