75 const Array<RCP<T> > a_in = generateArrayRcp<T>(
n);
88 const Array<RCP<T> > a_data = generateArrayRcp<T>(
n);
89 Array<Ptr<const T> > a_in(
n);
91 a_in[i] = a_data[i].ptr();
96 T a_out = testArrayViewInput<T>(a_in);
105 const Array<RCP<T> > a_data = generateArrayRcp<T>(
n);
106 Array<Ptr<T> > a_out;
109 *a_data[i] = ST::zero();
110 a_out.push_back( a_data[i].
ptr() );
115 testArrayViewOutput<T>(a_out);
125 const Array<RCP<T> > a_in = generateArrayRcp<T>(
n);
126 const Array<Ptr<const T> > a_out = arrayPtrConv<const T>(a_in);
137 const Array<RCP<T> > a_in = generateArrayRcp<T>(
n);
138 const Array<Ptr<T> > a_out = arrayPtrConv<T>(a_in);
149 const Array<RCP<T> > a_in = generateArrayRcp<T>(
n);
150 const Array<Ptr<T> > a1_out = arrayPtrConv<T>(a_in);
151 const Array<Ptr<T> > a2_out = arrayPtrConv<T>(a1_out());
158 const Array<RCP<T> > a_in = generateArrayRcp<T>(
n);
159 const Array<Ptr<T> > a1_out = arrayPtrConv<T>(a_in);
160 const Array<Ptr<const T> > a2_out = arrayPtrConv<const T>(a1_out());
167 const Array<RCP<T> > a_in = generateArrayRcp<T>(
n);
168 const Array<Ptr<const T> > a1_out = arrayPtrConv<const T>(a_in);
169 const Array<Ptr<const T> > a2_out = arrayPtrConv<const T>(a1_out());
176 Array<RCP<T> > a_in = generateArrayRcp<T>(
n);
177 T a = testArrayViewInput<T>(arrayPtrConv<const T>(a_in));
178 T a_exact = as<T>(
n*(
n-1)/2);
186 Array<RCP<T> > a_out = generateArrayRcp<T>(
n);
188 *a_out[i] = ST::zero();
193 testArrayViewOutput<T>(arrayPtrConv<T>(a_out));
203 const Array<RCP<T> > a_in = generateArrayRcp<T>(
n);
204 const Array<RCP<T> > a1_out = arrayRcpConv<T>(a_in);
211 const Array<RCP<T> > a_in = generateArrayRcp<T>(
n);
212 const Array<RCP<const T> > a1_out = arrayRcpConv<const T>(a_in);
219 const Array<RCP<T> > a_in = generateArrayRcp<T>(
n);
220 const Array<RCP<const T> > a1_out = arrayRcpConv<const T>(a_in);
221 const Array<RCP<const T> > a2_out = arrayRcpConv<const T>(a1_out);
229 Array<RCP<T> > a_rcp = generateArrayRcp<T>(
n);
230 Array<Ptr<T> > a_ptr = arrayPtrConv<T>(a_rcp);
231 const ArrayView<const Ptr<T> > av_ptr_nonconst = a_ptr();
232 const ArrayView<const Ptr<const T> > av_ptr_const =
241 Array<RCP<T> > a_rcp = generateArrayRcp<T>(
n);
242 Array<Ptr<const T> > a_ptr = arrayPtrConv<const T>(a_rcp);
243 const ArrayView<const Ptr<const T> > av_ptr_const1 = a_ptr();
244 const ArrayView<const Ptr<const T> > av_ptr_const2 =
253 Array<RCP<T> > a_rcp = generateArrayRcp<T>(
n);
254 const ArrayView<const RCP<T> > av_rcp_nonconst = a_rcp();
255 const ArrayView<const RCP<const T> > av_rcp_const =
264 Array<RCP<T> > a_rcp_orig = generateArrayRcp<T>(
n);
265 Array<RCP<const T> > a_rcp = arrayRcpConv<const T>(a_rcp_orig);
266 const ArrayView<const RCP<const T> > av_rcp_const1 = a_rcp();
267 const ArrayView<const RCP<const T> > av_rcp_const2 =
273 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK
275 # define DEBUG_UNIT_TEST_GROUP( T )
277 #else // HAVE_TEUCHOS_ARRAY_BOUNDSCHECK
279 # define DEBUG_UNIT_TEST_GROUP( T )
281 #endif // HAVE_TEUCHOS_ARRAY_BOUNDSCHECK
283 #define UNIT_TEST_GROUP( T ) \
284 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayConversions, generateArrayRcp, T ) \
285 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayConversions, testArrayViewInput, T ) \
286 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayConversions, testArrayViewOutput, T ) \
287 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayConversions, arrayPtrConv_RcpNonconst_to_PtrConst, T ) \
288 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayConversions, arrayPtrConv_RcpNonconst_to_PtrNonconst, T ) \
289 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayConversions, arrayPtrConv_PtrNonconst_to_PtrNonconst, T ) \
290 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayConversions, arrayPtrConv_PtrNonconst_to_PtrConst, T ) \
291 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayConversions, arrayPtrConv_PtrConst_to_PtrConst, T ) \
292 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayConversions, arrayRcpConv_RcpConst_to_RcpConst, T ) \
293 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayConversions, arrayPtrConv_PassConst, T ) \
294 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayConversions, arrayPtrConv_PassNonconst, T ) \
295 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayConversions, arrayRcpConv_RcpNonconst_to_RcpNonconst, T ) \
296 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayConversions, arrayRcpConv_RcpNonconst_to_RcpConst, T ) \
297 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayConversions, arrayConstPtrConstCast_nonconst_to_const, T ) \
298 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayConversions, arrayConstPtrConstCast_const_to_const, T ) \
299 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayConversions, arrayConstRcpConstCast_nonconst_to_const, T ) \
300 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( ArrayConversions, arrayConstRcpConstCast_const_to_const, T ) \
301 DEBUG_UNIT_TEST_GROUP( T )
310 TEUCHOS_UNIT_TEST( ArrayConversions, arrayPtrConv_RcpNonconstDerived_to_PtrNonconstBase)
312 const Array<RCP<C> > a_in = generateArrayRcpGen<C>(
n);
313 const Array<Ptr<A> > a_out = arrayPtrConv<A>(a_in);
316 TEST_EQUALITY( &*a_out[i], implicit_ptr_cast<A>(&*a_in[i]) );
321 TEUCHOS_UNIT_TEST( ArrayConversions, arrayPtrConv_RcpNonconstDerived_to_PtrConstBase)
323 const Array<RCP<C> > a_in = generateArrayRcpGen<C>(
n);
324 const Array<Ptr<const A> > a_out = arrayPtrConv<const A>(a_in);
327 TEST_EQUALITY( &*a_out[i], implicit_ptr_cast<const A>(&*a_in[i]) );
332 TEUCHOS_UNIT_TEST( ArrayConversions, arrayPtrConv_RcpConstDerived_to_PtrConstBase)
334 const Array<RCP<C> > a_in = generateArrayRcpGen<C>(
n);
335 const Array<RCP<const C> > a1_out = arrayRcpConv<const C>(a_in);
336 const Array<Ptr<const A> > a2_out = arrayPtrConv<const A>(a1_out);
339 TEST_EQUALITY( &*a2_out[i], implicit_ptr_cast<const A>(&*a_in[i]) );
344 TEUCHOS_UNIT_TEST( ArrayConversions, arrayRcpConv_RcpNonconstDerived_to_RcpNonconstBase)
346 const Array<RCP<C> > a_in = generateArrayRcpGen<C>(
n);
347 const Array<RCP<A> > a_out = arrayRcpConv<A>(a_in);
350 TEST_EQUALITY( &*a_out[i], implicit_ptr_cast<A>(&*a_in[i]) );
355 TEUCHOS_UNIT_TEST( ArrayConversions, arrayRcpConv_RcpNonconstDerived_to_RcpConstBase)
357 const Array<RCP<C> > a_in = generateArrayRcpGen<C>(
n);
358 const Array<RCP<const A> > a_out = arrayRcpConv<const A>(a_in);
361 TEST_EQUALITY( &*a_out[i], implicit_ptr_cast<A>(&*a_in[i]) );
366 TEUCHOS_UNIT_TEST( ArrayConversions, arrayRcpConv_RcpConstDerived_to_RcpConstBase)
368 const Array<RCP<C> > a_in = generateArrayRcpGen<C>(
n);
369 const Array<RCP<const C> > a1_out = arrayRcpConv<const C>(a_in);
370 const Array<RCP<const A> > a2_out = arrayRcpConv<const A>(a1_out);
373 TEST_EQUALITY( &*a2_out[i], implicit_ptr_cast<A>(&*a_in[i]) );
378 TEUCHOS_UNIT_TEST( ArrayConversions, arrayViewPtrConv_RcpNonconstDerived_to_PtrNonconstBase)
380 const Array<RCP<C> > a_in = generateArrayRcpGen<C>(
n);
381 Array<Ptr<A> > a_out(
n);
385 TEST_EQUALITY( &*a_out[i], implicit_ptr_cast<A>(&*a_in[i]) );
390 TEUCHOS_UNIT_TEST( ArrayConversions, arrayViewPtrConv_RcpNonconstDerived_to_PtrConstBase)
392 const Array<RCP<C> > a_in = generateArrayRcpGen<C>(
n);
393 Array<Ptr<const A> > a_out(
n);
397 TEST_EQUALITY( &*a_out[i], implicit_ptr_cast<const A>(&*a_in[i]) );
402 TEUCHOS_UNIT_TEST( ArrayConversions, arrayViewPtrConv_RcpConstDerived_to_PtrConstBase)
404 const Array<RCP<C> > a_in = generateArrayRcpGen<C>(
n);
405 Array<RCP<const C> > a1_out(
n);
407 Array<Ptr<const A> > a2_out(
n);
411 TEST_EQUALITY( &*a2_out[i], implicit_ptr_cast<const A>(&*a_in[i]) );
416 TEUCHOS_UNIT_TEST( ArrayConversions, arrayViewRcpConv_RcpNonconstDerived_to_RcpNonconstBase)
418 const Array<RCP<C> > a_in = generateArrayRcpGen<C>(
n);
419 Array<RCP<A> > a_out(
n);
423 TEST_EQUALITY( &*a_out[i], implicit_ptr_cast<A>(&*a_in[i]) );
428 TEUCHOS_UNIT_TEST( ArrayConversions, arrayViewRcpConv_RcpNonconstDerived_to_RcpConstBase)
430 const Array<RCP<C> > a_in = generateArrayRcpGen<C>(
n);
431 Array<RCP<const A> > a_out(
n);
435 TEST_EQUALITY( &*a_out[i], implicit_ptr_cast<A>(&*a_in[i]) );
440 TEUCHOS_UNIT_TEST( ArrayConversions, arrayViewRcpConv_RcpConstDerived_to_RcpConstBase)
442 const Array<RCP<C> > a_in = generateArrayRcpGen<C>(
n);
443 Array<RCP<const C> > a1_out(
n);
445 Array<RCP<const A> > a2_out(
n);
449 TEST_EQUALITY( &*a2_out[i], implicit_ptr_cast<A>(&*a_in[i]) );