43#include <boost/test/test_tools.hpp>
44#include <boost/test/unit_test.hpp>
49namespace SharedArrayUnitTests
120 BOOST_CHECK(temp == obj.
a);
124 BOOST_CHECK(temp == zero);
125 BOOST_CHECK(temp != obj.
a);
133 BOOST_CHECK(const_temp == obj.
a);
134 BOOST_CHECK(const_temp != const_zero);
135 const_temp = const_zero;
136 BOOST_CHECK(const_temp == const_zero);
139 BOOST_CHECK(const_temp == const_zero);
140 BOOST_CHECK(const_temp != obj.
a);
151 BOOST_CHECK(a.begin() == a.end());
152 BOOST_CHECK(b.begin() == b.end());
154 BOOST_CHECK_EQUAL(a.size(), 0);
155 BOOST_CHECK_EQUAL(b.size(), 0);
157 BOOST_CHECK_EQUAL(a.num_dimensions(), 1);
158 BOOST_CHECK_EQUAL(b.num_dimensions(), 1);
168 BOOST_CHECK(a.begin() == a.end());
169 BOOST_CHECK(b.begin() == b.end());
171 BOOST_CHECK_EQUAL(a.size(), 0);
172 BOOST_CHECK_EQUAL(b.size(), 0);
174 BOOST_CHECK_EQUAL(a.num_dimensions(), 2);
175 BOOST_CHECK_EQUAL(b.num_dimensions(), 2);
189 BOOST_CHECK(a.begin() != a.end());
190 BOOST_CHECK(b.begin() != b.end());
192 BOOST_CHECK_EQUAL(a.size(), 5);
193 BOOST_CHECK_EQUAL(b.size(), 10);
195 BOOST_CHECK_EQUAL(a.num_dimensions(), 1);
196 BOOST_CHECK_EQUAL(b.num_dimensions(), 1);
207 BOOST_CHECK(a.begin() != a.end());
208 BOOST_CHECK(b.begin() != b.end());
210 BOOST_CHECK_EQUAL(a.size(), 50);
211 BOOST_CHECK_EQUAL(b.size(), 100);
213 BOOST_CHECK_EQUAL(a.shape()[0], 5);
214 BOOST_CHECK_EQUAL(a.shape()[1], 10);
215 BOOST_CHECK_EQUAL(b.shape()[0], 10);
216 BOOST_CHECK_EQUAL(b.shape()[1], 10);
218 BOOST_CHECK_EQUAL(a.num_dimensions(), 2);
219 BOOST_CHECK_EQUAL(b.num_dimensions(), 2);
234 BOOST_CHECK(a.begin() != a.end());
235 BOOST_CHECK(b.begin() != b.end());
237 BOOST_CHECK_EQUAL(a.size(), 5);
238 BOOST_CHECK_EQUAL(b.size(), 10);
240 BOOST_CHECK_EQUAL(a.num_dimensions(), 1);
241 BOOST_CHECK_EQUAL(b.num_dimensions(), 1);
245 iter != a.end(); ++iter)
247 BOOST_CHECK(*iter == initValue);
251 iter != b.end(); ++iter)
253 BOOST_CHECK(*iter == initValue);
266 BOOST_CHECK(a.begin() != a.end());
267 BOOST_CHECK(b.begin() != b.end());
269 BOOST_CHECK_EQUAL(a.size(), 50);
270 BOOST_CHECK_EQUAL(b.size(), 100);
272 BOOST_CHECK_EQUAL(a.shape()[0], 5);
273 BOOST_CHECK_EQUAL(a.shape()[1], 10);
274 BOOST_CHECK_EQUAL(b.shape()[0], 10);
275 BOOST_CHECK_EQUAL(b.shape()[1], 10);
277 BOOST_CHECK_EQUAL(a.num_dimensions(), 2);
278 BOOST_CHECK_EQUAL(b.num_dimensions(), 2);
281 for (size_type i = 0; i < a.shape()[0]; ++i)
283 for (size_type j = 0; j < a.shape()[1]; ++j)
285 BOOST_CHECK(a[i][j] == initValue);
289 for (size_type i = 0; i < b.shape()[0]; ++i)
291 for (size_type j = 0; j < b.shape()[1]; ++j)
293 BOOST_CHECK(b[i][j] == initValue);
316 BOOST_CHECK(a.begin() != a.end());
317 BOOST_CHECK(b.begin() != b.end());
319 BOOST_CHECK_EQUAL(a.size(), 4);
320 BOOST_CHECK_EQUAL(b.size(), 5);
322 BOOST_CHECK_EQUAL(a.num_dimensions(), 1);
323 BOOST_CHECK_EQUAL(b.num_dimensions(), 1);
326 for (size_type i = 0; i < a.size(); ++i)
328 BOOST_CHECK(a[i] == a_array[i]);
331 for (size_type i = 0; i < b.size(); ++i)
333 BOOST_CHECK(b[i] == b_array[i]);
339 double a_array[] = {1.0, 2.0, 3.0, 4.0};
340 double b_array[] = {5.0, 6.0, 7.0, 8.0, 9.0};
344 BOOST_CHECK(a.size() == 4);
345 BOOST_CHECK(b.size() == 5);
348 for (size_type i = 0; i < a.size(); ++i)
350 BOOST_CHECK(a[i] == a_array[i]);
353 for (size_type i = 0; i < b.size(); ++i)
355 BOOST_CHECK(b[i] == b_array[i]);
381 BOOST_CHECK_EQUAL(c.size(), a.size());
382 BOOST_CHECK_EQUAL(e.size(), a.size());
383 BOOST_CHECK_EQUAL(
d.size(), b.size());
384 BOOST_CHECK(c.data() == a.data());
385 BOOST_CHECK(e.data() == a.data());
386 BOOST_CHECK(
d.data() == b.data());
412 BOOST_CHECK_EQUAL(a_off[0].value, a[1].value);
413 BOOST_CHECK_EQUAL(a_off[1].value, a[2].value);
414 BOOST_CHECK_EQUAL(a_off[2].value, a[3].value);
415 BOOST_CHECK_EQUAL(a_off.size(), 3);
417 BOOST_CHECK_EQUAL(b_off[0].value, b[2].value);
418 BOOST_CHECK_EQUAL(b_off[1].value, b[3].value);
419 BOOST_CHECK_EQUAL(b_off[2].value, b[4].value);
420 BOOST_CHECK_EQUAL(b_off.size(), 3);
422 BOOST_CHECK_EQUAL(bb_off[0].value, b[2].value);
423 BOOST_CHECK_EQUAL(bb_off[1].value, b[3].value);
424 BOOST_CHECK_EQUAL(bb_off[2].value, b[4].value);
425 BOOST_CHECK_EQUAL(bb_off.size(), 3);
451 BOOST_CHECK_EQUAL(lhs_a.size(), 0);
452 BOOST_CHECK_EQUAL(lhs_b1.size(), 0);
453 BOOST_CHECK_EQUAL(lhs_b2.size(), 0);
461 BOOST_CHECK_EQUAL(lhs_a.size(), a.size());
462 BOOST_CHECK_EQUAL(lhs_b1.size(), b.size());
463 BOOST_CHECK_EQUAL(lhs_b2.size(), b.size());
464 BOOST_CHECK_EQUAL(lhs_a.data(), a.data());
465 BOOST_CHECK_EQUAL(lhs_b1.data(), b.data());
466 BOOST_CHECK_EQUAL(lhs_b2.data(), b.data());
469 for (size_type i = 0; i < a.size(); ++i)
471 BOOST_CHECK(lhs_a[i] == a[i]);
474 for (size_type i = 0; i < b.size(); ++i)
476 BOOST_CHECK(lhs_b1[i] == b[i]);
477 BOOST_CHECK(lhs_b2[i] == b[i]);
498 BOOST_CHECK(a.begin() != a.end());
499 BOOST_CHECK(b.begin() != b.end());
501 BOOST_CHECK_EQUAL(a.size(), 50);
502 BOOST_CHECK_EQUAL(b.size(), 100);
503 BOOST_CHECK_EQUAL(a.shape()[0], 5);
504 BOOST_CHECK_EQUAL(a.shape()[1], 10);
505 BOOST_CHECK_EQUAL(b.shape()[0], 10);
506 BOOST_CHECK_EQUAL(b.shape()[1], 10);
508 BOOST_CHECK_EQUAL(a.num_dimensions(), 2);
509 BOOST_CHECK_EQUAL(b.num_dimensions(), 2);
516 BOOST_CHECK_EQUAL(lhs_a.size(), 0);
517 BOOST_CHECK_EQUAL(lhs_b1.size(), 0);
518 BOOST_CHECK_EQUAL(lhs_b2.size(), 0);
525 BOOST_CHECK_EQUAL(lhs_a.size(), a.size());
526 BOOST_CHECK_EQUAL(lhs_b1.size(), b.size());
527 BOOST_CHECK_EQUAL(lhs_b2.size(), b.size());
528 BOOST_CHECK_EQUAL(lhs_a.shape()[0], a.shape()[0]);
529 BOOST_CHECK_EQUAL(lhs_a.shape()[1], a.shape()[1]);
531 BOOST_CHECK_EQUAL(lhs_b1.shape()[0], b.shape()[0]);
532 BOOST_CHECK_EQUAL(lhs_b1.shape()[1], b.shape()[1]);
534 BOOST_CHECK_EQUAL(lhs_b2.shape()[0], b.shape()[0]);
535 BOOST_CHECK_EQUAL(lhs_b2.shape()[1], b.shape()[1]);
538 for (size_type i = 0; i < a.shape()[0]; ++i)
540 for (size_type j = 0; j < a.shape()[1]; ++j)
542 BOOST_CHECK(a[i][j] == initValue);
543 BOOST_CHECK(lhs_a[i][j] == a[i][j]);
547 for (size_type i = 0; i < b.shape()[0]; ++i)
549 for (size_type j = 0; j < b.shape()[1]; ++j)
551 BOOST_CHECK(b[i][j] == initValue);
552 BOOST_CHECK(lhs_b1[i][j] == b[i][j]);
553 BOOST_CHECK(lhs_b2[i][j] == b[i][j]);
565 double a[] = {1.0, 2.0, 3.0, 4.0, 5.0};
566 double b[] = {10.0, 20.0, 30.0, 40.0};
581 BOOST_CHECK_EQUAL(lhs_a.size(), offset_a.size());
582 BOOST_CHECK_EQUAL(lhs_b.size(), offset_b.size());
585 for (size_type i = 0; i < lhs_a.size(); ++i)
587 BOOST_CHECK(lhs_a[i] == offset_a[i]);
590 for (size_type i = 0; i < lhs_b.size(); ++i)
592 BOOST_CHECK(lhs_b[i] == offset_b[i]);
600 double a[] = {1.0, 2.0, 3.0, 4.0, 5.0};
601 double b[] = {10.0, 20.0, 30.0, 40.0};
606 BOOST_CHECK_EQUAL(rhs_a[0], 1.0);
607 BOOST_CHECK_EQUAL(rhs_a[1], 2.0);
608 BOOST_CHECK_EQUAL(rhs_a[2], 3.0);
609 BOOST_CHECK_EQUAL(rhs_a[3], 4.0);
610 BOOST_CHECK_EQUAL(rhs_a[4], 5.0);
612 BOOST_CHECK_EQUAL(rhs_b[0], 10.0);
613 BOOST_CHECK_EQUAL(rhs_b[1], 20.0);
614 BOOST_CHECK_EQUAL(rhs_b[2], 30.0);
615 BOOST_CHECK_EQUAL(rhs_b[3], 40.0);
616#if defined(NEKTAR_DEBUG) || defined(NEKTAR_FULL_DEBUG)
617 BOOST_CHECK_NO_THROW(rhs_a[4]);
619 BOOST_CHECK_NO_THROW(rhs_b[3]);
627 NekDouble a_vals[] = {1.0, 2.0, 3.0, 4.0, 5.0,
628 6.0, 7.0, 8.0, 9.0, 10.0};
631 BOOST_CHECK_EQUAL(a.GetRows(), 5);
632 BOOST_CHECK_EQUAL(a.GetColumns(), 2);
635 for (size_type i = 0; i < a.GetRows(); ++i)
637 for (size_type j = 0; j < a.GetColumns(); ++j)
639 BOOST_CHECK_EQUAL(a[i][j], a_vals[i * a.GetColumns() + j]);
644 NekDouble rhs_vals[] = {18.0, -76.2, 45.2, 1352.246, -46.346,
645 -2463.346, 26.347, 1.0, 0.0, 23465.3};
646 for (size_type i = 0; i < a.GetRows(); ++i)
648 for (size_type j = 0; j < a.GetColumns(); ++j)
650 a[i][j] = rhs_vals[i * a.GetColumns() + j];
654 for (size_type i = 0; i < a.GetRows(); ++i)
656 for (size_type j = 0; j < a.GetColumns(); ++j)
658 BOOST_CHECK_EQUAL(a[i][j], rhs_vals[i * a.GetColumns() + j]);
665 NekDouble a_vals[] = {1.0, 3.0, 5.0, 7.0, 9.0};
667 BOOST_CHECK_EQUAL(a.GetRows(), 5);
668 BOOST_CHECK_EQUAL(a.GetColumns(), 1);
671 for (size_type i = 0; i < a.GetRows(); ++i)
673 BOOST_CHECK_EQUAL(a[i][0], a_vals[i]);
680 BOOST_CHECK_EQUAL(a[0][0], 17.23);
688 using int_type = int;
690 int_type a[] = {1, 2, 3, 4, 5};
697 BOOST_CHECK(nek_a == nek_b);
699 BOOST_CHECK(nek_a == nek_c);
703 BOOST_CHECK(!(nek_a == nek_b));
708 using float_type = double;
710 float_type a[] = {1.0, 2.0, 3.0, 4.0, 5.0};
717 nek_b[3] *= (1.0 + std::numeric_limits<float_type>::epsilon());
718 BOOST_CHECK(nek_a == nek_b);
720 BOOST_CHECK(nek_a == nek_c);
723 nek_b[4] *= (1.0 + 100 * std::numeric_limits<float_type>::epsilon());
724 BOOST_CHECK(!(nek_a == nek_b));
748 using int_type = int;
750 int_type a[] = {1, 2, 3, 4, 5};
756 BOOST_CHECK(nek_a == nek_b);
758 BOOST_CHECK(nek_a == nek_c);
762 BOOST_CHECK(!(nek_a == nek_b));
767 using float_type = double;
769 float_type a[] = {1., 2., 3., 4., 5.};
775 nek_b[3][0] *= (1.0 + std::numeric_limits<float_type>::epsilon());
776 BOOST_CHECK(nek_a == nek_b);
778 BOOST_CHECK(nek_a == nek_c);
781 nek_b[4][0] *= (1.0 + 100 * std::numeric_limits<float_type>::epsilon());
782 BOOST_CHECK(!(nek_a == nek_b));
static void Check(unsigned int expectedDefaultConstructed, unsigned int expectedConstructedFromInt, unsigned int expectedDestroyed, unsigned int expectedCopied, unsigned int expectedCloned, unsigned int expectedAssigned)
static void ClearCounters()
void getConstByReference(Array< OneD, const NekDouble > &out)
void getNonConstByValue(Array< OneD, NekDouble > out)
void getConstByValue(Array< OneD, const NekDouble > out)
void getNonConstByReference(Array< OneD, NekDouble > &out)
Array< OneD, NekDouble > a
Array< OneD, const NekDouble > b
BOOST_AUTO_TEST_CASE(TestArrayConstructionFromConstantArray)
void RedirectCerrIfNeeded()
std::vector< double > d(NPUPPER *NPUPPER)
The above copyright notice and this permission notice shall be included.