61 using Teuchos::arcpFromArray;
65 using Teuchos::fromStringToArray;
79 std::string(
"Array(double)"));
87 std::string arrayString=
"{}";
88 std::istringstream arrayStream(arrayString);
89 Array<std::string> arrayVal = fromStringToArray<std::string>(arrayString);
90 Array<std::string> arrayStreamVal;
91 arrayStream >> arrayStreamVal;
92 Array<std::string> arrayVal_exp;
98 std::string arrayString =
"{ a, b, c, d }";
99 std::istringstream arrayStream(arrayString);
100 Array<std::string> arrayVal = fromStringToArray<std::string>(arrayString);
101 Array<std::string> arrayStreamVal;
102 arrayStream >> arrayStreamVal;
103 Array<std::string> arrayVal_exp = Teuchos::tuple<std::string>(
"a",
"b",
"c",
"d" );
109 std::string arrayString =
"{ (a), b, c, (d) }";
110 std::istringstream arrayStream(arrayString);
111 Array<std::string> arrayVal = fromStringToArray<std::string>(arrayString);
112 Array<std::string> arrayStreamVal;
113 arrayStream >> arrayStreamVal;
114 Array<std::string> arrayVal_exp = Teuchos::tuple<std::string>(
"(a)",
"b",
"c",
"(d)" );
120 std::string arrayString =
"{ (a ), b, c, (d ) }";
121 std::istringstream arrayStream(arrayString);
122 Array<std::string> arrayVal = fromStringToArray<std::string>(arrayString);
123 Array<std::string> arrayStreamVal;
124 arrayStream >> arrayStreamVal;
125 Array<std::string> arrayVal_exp = Teuchos::tuple<std::string>(
"(a )",
"b",
"c",
"(d )" );
142 TEST_THROW(fromStringToArray<std::string>(
"{ a, b, c"),
143 InvalidArrayStringRepresentation);
144 TEST_THROW(fromStringToArray<std::string>(
"a, b, c}"),
145 InvalidArrayStringRepresentation);
146 TEST_THROW(fromStringToArray<std::string>(
"a, b, c"),
147 InvalidArrayStringRepresentation);
155 std::string arrayString=
"{-}";
156 Array<std::string> arrayVal = fromStringToArray<std::string>(arrayString);
157 Array<std::string> arrayVal_exp = tuple<std::string>(
"-");
162 std::string arrayString=
"{-,-}";
163 Array<std::string> arrayVal = fromStringToArray<std::string>(arrayString);
164 Array<std::string> arrayVal_exp = tuple<std::string>(
"-",
"-");
169 std::string arrayString=
"{-,1,-}";
170 Array<std::string> arrayVal = fromStringToArray<std::string>(arrayString);
171 Array<std::string> arrayVal_exp = tuple<std::string>(
"-",
"1",
"-");
176 std::string arrayString=
"{}";
177 Array<std::string> arrayVal = fromStringToArray<std::string>(arrayString);
178 Array<std::string> arrayVal_exp;
183 std::string arrayString=
"{,}";
184 TEST_THROW(Array<std::string> arrayVal = fromStringToArray<std::string>(arrayString),
203 typedef typename Array<T>::size_type size_type;
217 out <<
"\nTest that a[i] == i ... ";
218 Array<T> a = generateArray<T>(
n);
219 bool local_success =
true;
220 for(
int i = 0; i <
n; ++i ) {
223 if (local_success) out <<
"passed\n";
224 else success =
false;
230 out <<
"\nTest that a.at(i) == i ...\n";
231 Array<T> a = generateArray<T>(
n);
232 bool local_success =
true;
233 for(
int i = 0; i <
n; ++i ) {
236 if (local_success) out <<
"passed\n";
237 else success =
false;
243 typedef typename ArrayView<T>::iterator iter_t;
245 iter_t iter = NIT::getNull();
247 ECHO(Array<T> a(
n, as<T>(0)));
248 ECHO(ArrayView<T> av = a);
249 ECHO(iter = av.begin());
255 iter = NIT::getNull();
262 const RCP<Array<T> > a_rcp =
null;
263 const ArrayRCP<T> a_arcp =
arcp(a_rcp);
270 const RCP<const Array<T> > a_rcp =
null;
271 const ArrayRCP<const T> a_arcp =
arcp(a_rcp);
278 const Array<T> a_const = generateArray<T>(
n);
279 const RCP<Array<T> > a_rcp =
Teuchos::rcp(
new Array<T>(a_const));
280 const ArrayRCP<T> a_arcp =
arcp(a_rcp);
287 const Array<T> a_const = generateArray<T>(
n);
288 const RCP<const Array<T> > a_rcp =
Teuchos::rcp(
new Array<T>(a_const));
289 const ArrayRCP<const T> a_arcp =
arcp(a_rcp);
312 Array<T> a = generateArray<T>(
n);
320 const Array<T> a = generateArray<T>(
n);
330 Array<T> a = generateArray<T>(
n);
334 TEST_THROW(a_arcp[0], DanglingReferenceError);
341 ArrayRCP<const T> a_arcp;
343 const Array<T> a = generateArray<T>(
n);
347 TEST_THROW(a_arcp[0], DanglingReferenceError);
354 const Array<T> a = generateArray<T>(
n);
355 const std::vector<T> v = a.toVector();
363 const std::vector<T> v = a.toVector();
371 const ArrayView<T> av = a.view(0, 0);
379 const ArrayView<T> av = a(0, 0);
387 const ArrayView<const T> av = a.view(0, 0);
395 const ArrayView<T> av = a();
403 const ArrayView<const T> av = a();
411 { Array<T> a(
n); av = a; }
412 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK
413 TEST_THROW( av[0] = 0, DanglingReferenceError );
420 ArrayView<const T> av;
422 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK
431 { Array<T> a(
n); av = a(); }
432 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK
433 TEST_THROW( av[0] = 0, DanglingReferenceError );
440 ArrayView<const T> av;
442 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK
451 { Array<T> a(
n); av = a(0,1); }
452 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK
453 TEST_THROW( av[0] = 0, DanglingReferenceError );
460 ArrayView<const T> av;
461 { Array<T> a(
n); av =
getConst(a)(0,1); }
462 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK
469 typedef typename ArrayView<T>::iterator iter_t;
471 ECHO(ArrayView<T> av = a);
472 ECHO(iter_t iter = av.begin());
475 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK
476 TEST_THROW( *iter = 0, DanglingReferenceError );
485 typedef typename ArrayView<const T>::iterator iter_t;
487 ECHO(ArrayView<T> av = a);
488 ECHO(iter_t iter = av.begin());
491 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK
501 ECHO(std::vector<T> v);
510 Array<T> a = generateArray<T>(
n);
513 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK
514 TEST_THROW( av[0] = 0, DanglingReferenceError );
521 Array<T> a = generateArray<T>(
n);
522 ArrayView<const T> av =
getConst(a);
524 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK
534 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK
536 # define DEBUG_UNIT_TEST_GROUP( T )
538 #else // HAVE_TEUCHOS_ARRAY_BOUNDSCHECK
540 # define DEBUG_UNIT_TEST_GROUP( T )
542 #endif // HAVE_TEUCHOS_ARRAY_BOUNDSCHECK
545 #define UNIT_TEST_GROUP( T ) \
546 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, defaultConstruct, T ) \
547 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, sizedConstruct, T ) \
548 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, operatorBracket, T ) \
549 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, constAt, T ) \
550 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, danglingArrayViewIter_before_block_end, T ) \
551 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, RCPArray_to_ArrayRCP_null, T ) \
552 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, RCPconstArray_to_ArrayRCP_null, T ) \
553 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, RCPArray_to_ArrayRCP, T ) \
554 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, RCPconstArray_to_ArrayRCP, T ) \
555 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, Array_to_ArrayRCP_null, T ) \
556 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, constArray_to_ArrayRCP_null, T ) \
557 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, Array_to_ArrayRCP, T ) \
558 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, constArray_to_ArrayRCP, T ) \
559 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, Array_to_ArrayRCP_dangling, T ) \
560 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, constArray_to_ArrayRCP_dangling, T ) \
561 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, toVector, T ) \
562 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, toVector_empty, T ) \
563 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, view_empty_func, T ) \
564 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, view_empty_operator, T ) \
565 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, implicit_to_ArrayView_empty, T ) \
566 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, danglingArrayView_implicit, T ) \
567 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, danglingArrayView_implicit_const, T ) \
568 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, danglingArrayView_explicit, T ) \
569 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, danglingArrayView_explicit_const, T ) \
570 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, danglingArrayView_subview, T ) \
571 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, danglingArrayView_subview_const, T ) \
572 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, danglingArrayViewIter, T ) \
573 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, danglingArrayViewIter_const, T ) \
574 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, erase_empty, T ) \
575 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, structuralChangeArrayView, T ) \
576 TEUCHOS_UNIT_TEST_TEMPLATE_1_INSTANT( Array, structuralChangeArrayView_const, T ) \
577 DEBUG_UNIT_TEST_GROUP( T )