@@ -496,8 +496,6 @@ TEST(Chunk2DTest, Cview)
496496
497497TEST (Chunk2DTest, SliceCoordX)
498498{
499- DElemX const slice_x_val (lbound_x + 1 );
500-
501499 ChunkXY<double > chunk (dom_x_y);
502500 ChunkXY<double > const & chunk_cref = chunk;
503501 for (DElemX const ix : chunk.domain <DDimX>()) {
@@ -506,20 +504,35 @@ TEST(Chunk2DTest, SliceCoordX)
506504 }
507505 }
508506
509- ddc::ChunkSpan const chunk_y = chunk_cref[slice_x_val];
510- EXPECT_TRUE (
511- (std::is_same_v<std::decay_t <decltype (chunk_y)>::layout_type, Kokkos::layout_right>));
512- EXPECT_EQ (chunk_y.extent <DDimY>(), chunk.extent <DDimY>());
513- for (DElemY const iy : chunk_cref.domain <DDimY>()) {
514- // we expect complete equality, not EXPECT_DOUBLE_EQ: these are copy
515- EXPECT_EQ (chunk_y (iy), chunk_cref (slice_x_val, iy));
507+ {
508+ DElemX const slice_x_val (lbound_x + 1 );
509+ ddc::ChunkSpan const chunk_y = chunk_cref[slice_x_val];
510+ EXPECT_TRUE ((std::is_same_v<
511+ std::decay_t <decltype (chunk_y)>::layout_type,
512+ Kokkos::layout_right>));
513+ EXPECT_EQ (chunk_y.extent <DDimY>(), chunk.extent <DDimY>());
514+ for (DElemY const iy : chunk_cref.domain <DDimY>()) {
515+ // we expect complete equality, not EXPECT_DOUBLE_EQ: these are copy
516+ EXPECT_EQ (chunk_y (iy), chunk_cref (slice_x_val, iy));
517+ }
518+ }
519+
520+ {
521+ DVectX const slice_x_val (1 );
522+ ddc::ChunkSpan const chunk_y = chunk_cref[slice_x_val];
523+ EXPECT_TRUE ((std::is_same_v<
524+ std::decay_t <decltype (chunk_y)>::layout_type,
525+ Kokkos::layout_right>));
526+ EXPECT_EQ (chunk_y.extent <DDimY>(), chunk.extent <DDimY>());
527+ for (DElemY const iy : chunk_cref.domain <DDimY>()) {
528+ // we expect complete equality, not EXPECT_DOUBLE_EQ: these are copy
529+ EXPECT_EQ (chunk_y (iy), chunk_cref (lbound_x + slice_x_val, iy));
530+ }
516531 }
517532}
518533
519534TEST (Chunk2DTest, SliceCoordY)
520535{
521- DElemY const slice_y_val (lbound_y + 1 );
522-
523536 ChunkXY<double > chunk (dom_x_y);
524537 ChunkXY<double > const & chunk_cref = chunk;
525538 for (DElemX const ix : chunk.domain <DDimX>()) {
@@ -528,13 +541,30 @@ TEST(Chunk2DTest, SliceCoordY)
528541 }
529542 }
530543
531- ddc::ChunkSpan const chunk_x = chunk_cref[slice_y_val];
532- EXPECT_TRUE (
533- (std::is_same_v<std::decay_t <decltype (chunk_x)>::layout_type, Kokkos::layout_stride>));
534- EXPECT_EQ (chunk_x.extent <DDimX>(), chunk.extent <DDimX>());
535- for (DElemX const ix : chunk_cref.domain <DDimX>()) {
536- // we expect complete equality, not EXPECT_DOUBLE_EQ: these are copy
537- EXPECT_EQ (chunk_x (ix), chunk_cref (ix, slice_y_val));
544+ {
545+ DElemY const slice_y_val (lbound_y + 1 );
546+ ddc::ChunkSpan const chunk_x = chunk_cref[slice_y_val];
547+ EXPECT_TRUE ((std::is_same_v<
548+ std::decay_t <decltype (chunk_x)>::layout_type,
549+ Kokkos::layout_stride>));
550+ EXPECT_EQ (chunk_x.extent <DDimX>(), chunk.extent <DDimX>());
551+ for (DElemX const ix : chunk_cref.domain <DDimX>()) {
552+ // we expect complete equality, not EXPECT_DOUBLE_EQ: these are copy
553+ EXPECT_EQ (chunk_x (ix), chunk_cref (ix, slice_y_val));
554+ }
555+ }
556+
557+ {
558+ DVectY const slice_y_val (1 );
559+ ddc::ChunkSpan const chunk_x = chunk_cref[slice_y_val];
560+ EXPECT_TRUE ((std::is_same_v<
561+ std::decay_t <decltype (chunk_x)>::layout_type,
562+ Kokkos::layout_stride>));
563+ EXPECT_EQ (chunk_x.extent <DDimX>(), chunk.extent <DDimX>());
564+ for (DElemX const ix : chunk_cref.domain <DDimX>()) {
565+ // we expect complete equality, not EXPECT_DOUBLE_EQ: these are copy
566+ EXPECT_EQ (chunk_x (ix), chunk_cref (ix, lbound_y + slice_y_val));
567+ }
538568 }
539569}
540570
@@ -543,11 +573,17 @@ TEST(Chunk2DTest, SliceCoordXOutOfBounds)
543573#if !defined(NDEBUG) // The assertion is only checked if NDEBUG isn't defined
544574 ChunkXY<double > chunk (dom_x_y);
545575
546- char const * const death_msg
547- = R"rgx( .ssert.*QueryDDom\(this->m_domain\).contains\(slice_spec\))rgx" ;
548-
549- EXPECT_DEATH (chunk[dom_x.front () - 1 ], death_msg);
550- EXPECT_DEATH (chunk[dom_x.back () + 1 ], death_msg);
576+ {
577+ char const * const death_msg
578+ = R"rgx( .ssert.*QueryDDom\(this->m_domain\).contains\(slice_spec\))rgx" ;
579+ EXPECT_DEATH (chunk[dom_x.front () - 1 ], death_msg);
580+ EXPECT_DEATH (chunk[dom_x.back () + 1 ], death_msg);
581+ }
582+ {
583+ char const * const death_msg
584+ = R"rgx( .ssert.*\(DiscreteVector<QueryDDims>\(slice_spec\) < DiscreteVector<QueryDDims>\(this->m_domain.extents\(\)\)\) && ...\))rgx" ;
585+ EXPECT_DEATH (chunk[dom_x.extents ()], death_msg);
586+ }
551587#else
552588 GTEST_SKIP ();
553589#endif
0 commit comments