Teuchos Package Browser (Single Doxygen Collection) Version of the Day
Loading...
Searching...
No Matches
ArrayConversions_UnitTest_helpers.hpp
Go to the documentation of this file.
1/*
2// @HEADER
3// ***********************************************************************
4//
5// Teuchos: Common Tools Package
6// Copyright (2004) Sandia Corporation
7//
8// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
9// license for use of this work by or on behalf of the U.S. Government.
10//
11// Redistribution and use in source and binary forms, with or without
12// modification, are permitted provided that the following conditions are
13// met:
14//
15// 1. Redistributions of source code must retain the above copyright
16// notice, this list of conditions and the following disclaimer.
17//
18// 2. Redistributions in binary form must reproduce the above copyright
19// notice, this list of conditions and the following disclaimer in the
20// documentation and/or other materials provided with the distribution.
21//
22// 3. Neither the name of the Corporation nor the names of the
23// contributors may be used to endorse or promote products derived from
24// this software without specific prior written permission.
25//
26// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37//
38// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
39//
40// ***********************************************************************
41// @HEADER
42*/
43
44
45#ifndef ARRAY_CONVERSIONS_UNIT_TEST_HELPERS
46#define ARRAY_CONVERSIONS_UNIT_TEST_HELPERS
47
48
50
51
52using Teuchos::RCP;
53using Teuchos::rcp;
54using Teuchos::Ptr;
55using Teuchos::Array;
57using Teuchos::as;
58
59extern Teuchos_Ordinal n;
60
61
62template<class T>
64{
65 Array<RCP<T> > a(n_in);
66 for (Teuchos_Ordinal i=0 ; i<n_in ; ++i) {
67 RCP<T> data = rcp(new T(as<T>(i)));
68 a[i] = data;
69 }
70 return a;
71}
72
73
74template<class T>
76{
77 Array<RCP<T> > a;
78 for (Teuchos_Ordinal i=0 ; i<n_in ; ++i) {
79 a.push_back(rcp(new T));
80 }
81 return a;
82}
83
84
85template<class T>
87{
88 typedef Teuchos::ScalarTraits<T> ST;
89 T a = ST::zero();
90 for (Teuchos_Ordinal i=0; i<a_in.size(); ++i) {
91 a += *a_in[i];
92 }
93 return a;
94}
95
96
97template<class T>
98void testArrayViewOutput(const ArrayView<const Ptr<T> >& a_out)
99{
100 for (Teuchos_Ordinal i=0 ; i<a_out.size() ; ++i) {
101 *a_out[i] = as<T>(i);
102 }
103}
104
105
106} // namespace ArrayConversionsUnitTestHelpers
107
108
109#endif // ARRAY_CONVERSIONS_UNIT_TEST_HELPERS
TEUCHOS_ORDINAL_TYPE Teuchos_Ordinal
Nonowning array view.
Replacement for std::vector that is compatible with the Teuchos Memory Management classes.
void push_back(const value_type &x)
Simple wrapper class for raw pointers to single objects where no persisting relationship exists.
Smart reference counting pointer class for automatic garbage collection.
void testArrayViewOutput(const ArrayView< const Ptr< T > > &a_out)
Array< RCP< T > > generateArrayRcp(const Teuchos_Ordinal n_in)
T testArrayViewInput(const ArrayView< const Ptr< const T > > &a_in)
Array< RCP< T > > generateArrayRcpGen(const Teuchos_Ordinal n_in)
TypeTo as(const TypeFrom &t)
Convert from one value type to another.
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Deprecated.
This structure defines some basic traits for a scalar field type.