Skip to content

Commit d1b9661

Browse files
committed
test: add empty block cases to expression suite
Test block expressions involving zero extent/volume blocks
1 parent 567c617 commit d1b9661

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

tests/expressions_impl.h

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3075,6 +3075,53 @@ BOOST_FIXTURE_TEST_CASE_TEMPLATE(empty_trange1, F, Fixtures, F) {
30753075
}
30763076
}
30773077

3078+
// corner case: expressions involving empty blocks
3079+
BOOST_FIXTURE_TEST_CASE_TEMPLATE(empty_block_expressions, F, Fixtures, F) {
3080+
auto& a = F::a;
3081+
auto& c = F::c;
3082+
3083+
// one of the dimensions has zero extent
3084+
const auto lb1 = std::array{3, 2, 0};
3085+
const auto ub1 = std::array{4, 2, 2};
3086+
3087+
const int ntiles = F::ntiles;
3088+
const auto lb2 = std::array{ntiles, 0, 0};
3089+
const auto ub2 = std::array{ntiles, ntiles, ntiles};
3090+
3091+
// preserve_lobound should go through without issues
3092+
{
3093+
std::decay_t<decltype(c)> result;
3094+
BOOST_CHECK_NO_THROW(result("a,b,c") =
3095+
a("a,b,c").block(lb1, ub1, preserve_lobound));
3096+
3097+
BOOST_CHECK_EQUAL(result.trange().tiles_range().volume(), 0);
3098+
}
3099+
{
3100+
std::decay_t<decltype(c)> result;
3101+
BOOST_CHECK_NO_THROW(result("a,b,c") =
3102+
a("a,b,c").block(lb2, ub2, preserve_lobound));
3103+
BOOST_CHECK_EQUAL(result.trange().tiles_range().volume(), 0);
3104+
}
3105+
3106+
// assignment of empty (zero volume) block
3107+
{
3108+
BOOST_CHECK_NO_THROW(c("a,b,c").block(lb1, ub1) =
3109+
a("a,b,c").block(lb1, ub1));
3110+
}
3111+
{
3112+
BOOST_CHECK_NO_THROW(c("a,b,c").block(lb2, ub2) =
3113+
a("a,b,c").block(lb2, ub2));
3114+
}
3115+
3116+
// assignment from empty array
3117+
{
3118+
std::decay_t<decltype(c)> z;
3119+
z("a,b,c") = a("a,b,c").block(lb2, ub2); // z is a full empty array
3120+
BOOST_CHECK_NO_THROW(c("a,b,c").block(lb2, ub2, preserve_lobound) =
3121+
z("a,b,c"));
3122+
}
3123+
}
3124+
30783125
BOOST_AUTO_TEST_SUITE_END()
30793126

30803127
#endif // TILEDARRAY_TEST_EXPRESSIONS_IMPL_H

0 commit comments

Comments
 (0)