Teuchos Package Browser (Single Doxygen Collection)
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
parameterlist
test
ParameterList
ParameterEntry_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 "
Teuchos_ParameterList.hpp
"
43
#include "
Teuchos_UnitTestHarness.hpp
"
44
#include "
Teuchos_TwoDArray.hpp
"
45
46
namespace
Teuchos
{
47
49
TEUCHOS_UNIT_TEST
(Teuchos_ParameterEntry, move_constructor)
50
{
51
ParameterEntry
source(std::string(
"nice-entry"
));
52
TEST_EQUALITY
(
Teuchos::any_cast<std::string>
(source.
getAny
()),
"nice-entry"
);
53
55
ParameterEntry
move_constructed(std::move(source));
56
TEST_ASSERT
(source.
getAny
().access_content() ==
nullptr
);
57
TEST_EQUALITY
(source.
getAny
().
has_value
(),
false
);
58
TEST_EQUALITY
(
Teuchos::any_cast<std::string>
(move_constructed.
getAny
()),
"nice-entry"
);
59
61
ParameterEntry
move_assigned;
62
move_assigned = std::move(move_constructed);
63
TEST_ASSERT
(move_constructed.
getAny
().access_content() ==
nullptr
);
64
TEST_EQUALITY
(move_constructed.
getAny
().
has_value
(),
false
);
65
TEST_EQUALITY
(
Teuchos::any_cast<std::string>
(move_assigned.
getAny
()),
"nice-entry"
);
66
}
67
69
TEUCHOS_UNIT_TEST
(Teuchos_ParameterList, move_extract_value_from_any)
70
{
71
ParameterEntry
source(std::string(
"nice-entry"
));
72
73
Teuchos::any::holder<std::string>* dyn_cast_content =
dynamic_cast<
Teuchos::any::holder<std::string>*
>
(
74
source.
getAny
().access_content());
75
76
TEST_EQUALITY
(dyn_cast_content->held, std::string(
"nice-entry"
));
77
79
std::string copy_extracted =
Teuchos::any_cast<std::string>
(source.
getAny
());
80
TEST_EQUALITY
(dyn_cast_content->held, std::string(
"nice-entry"
));
81
TEST_EQUALITY
(copy_extracted , std::string(
"nice-entry"
));
82
84
std::string move_extracted =
Teuchos::any_cast<std::string>
(std::move(source.
getAny
()));
85
TEST_EQUALITY
(dyn_cast_content->held, std::string());
86
TEST_EQUALITY
(move_extracted , std::string(
"nice-entry"
));
87
}
88
89
TEUCHOS_UNIT_TEST
( Teuchos_ParameterEntry, testTypeFunctions )
90
{
91
ParameterEntry
intEntry;
92
intEntry.
setValue
(1);
93
TEST_ASSERT
(intEntry.
isType
<
int
>());
94
TEST_ASSERT
(!intEntry.
isArray
());
95
TEST_ASSERT
(!intEntry.
isTwoDArray
());
96
97
ParameterEntry
doubleEntry;
98
doubleEntry.
setValue
(1.0);
99
TEST_ASSERT
(doubleEntry.
isType
<
double
>());
100
TEST_ASSERT
(!doubleEntry.
isArray
());
101
TEST_ASSERT
(!doubleEntry.
isTwoDArray
());
102
103
Array<int>
intArray =
tuple<int>
(1,2,3);
104
ParameterEntry
arrayEntry;
105
arrayEntry.
setValue
(intArray);
106
TEST_ASSERT
(arrayEntry.
isType
<
Array<int>
>());
107
TEST_ASSERT
(arrayEntry.
isArray
());
108
TEST_ASSERT
(!arrayEntry.
isTwoDArray
());
109
110
TwoDArray<double>
twoDArray(3,3,3.0);
111
ParameterEntry
twoDEntry(twoDArray);
112
TEST_ASSERT
(twoDEntry.
isType
<
TwoDArray<double>
>());
113
TEST_ASSERT
(twoDEntry.
isTwoDArray
());
114
TEST_ASSERT
(!twoDEntry.
isArray
());
115
}
116
117
118
}
// namespace Teuchos
119
120
121
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_ParameterList.hpp
Templated Parameter List class.
Teuchos_TwoDArray.hpp
A thin wrapper around the Teuchos Array class that allows for 2 dimensional arrays.
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::Array
Replacement for std::vector that is compatible with the Teuchos Memory Management classes.
Definition
Teuchos_Array.hpp:195
Teuchos::ParameterEntry
This object is held as the "value" in the Teuchos::ParameterList std::map.
Definition
Teuchos_ParameterEntry.hpp:67
Teuchos::ParameterEntry::isType
bool isType() const
Test the type of the data being contained.
Definition
Teuchos_ParameterEntry.hpp:395
Teuchos::ParameterEntry::getAny
any & getAny(bool activeQry=true)
Direct access to the Teuchos::any data value underlying this object. The bool argument activeQry (def...
Definition
Teuchos_ParameterEntry.hpp:370
Teuchos::ParameterEntry::isTwoDArray
bool isTwoDArray() const
Test if the type of data being contained is a Teuchos::TwoDArray.
Definition
Teuchos_ParameterEntry.cpp:155
Teuchos::ParameterEntry::setValue
void setValue(T value, bool isDefault=false, const std::string &docString="", RCP< const ParameterEntryValidator > const &validator=null)
Templated set method that uses the input value type to determine the type of parameter.
Definition
Teuchos_ParameterEntry.hpp:343
Teuchos::ParameterEntry::isArray
bool isArray() const
Test if the type of data being contained is a Teuchos::Array.
Definition
Teuchos_ParameterEntry.cpp:167
Teuchos::Tuple::tuple
Tuple< T, 1 > tuple(const T &a)
Create a Tuple<T,1>.
Teuchos::TwoDArray
A thin wrapper around the Array class which causes it to be interpreted as a 2D Array.
Definition
Teuchos_TwoDArray.hpp:68
Teuchos::any::any_cast
ValueType & any_cast(any &operand)
Used to extract the templated value held in Teuchos::any to a given value type.
Definition
Teuchos_any.hpp:359
Teuchos::any::has_value
bool has_value() const
Checks whether the object contains a value.
Definition
Teuchos_any.hpp:224
Teuchos
Definition
Teuchos_AbstractFactory.hpp:47
Generated by
1.17.0