@@ -20,7 +20,8 @@ template <typename WriteIterations>
2020auto run_test_filebased (
2121 Access writeAccess,
2222 WriteIterations &&writeIterations,
23- std::string const &ext)
23+ std::string const &ext,
24+ bool synchronous)
2425{
2526 std::string filename =
2627 " ../samples/close_iteration_reopen/filebased_%T." + ext;
@@ -39,6 +40,11 @@ auto run_test_filebased(
3940 B_y.resetDataset ({Datatype::INT, {5 }});
4041 B_y.storeChunk (data, {0 }, {5 });
4142 it.close ();
43+ // This also verifies that operator[] and at() can be used to access the
44+ // Iteration after closing
45+ REQUIRE (series.iterations .at (0 ).closed ());
46+ REQUIRE (writeIterations (series)[0 ].closed () == !synchronous);
47+ REQUIRE (writeIterations (series).at (0 ).closed () == !synchronous);
4248 }
4349
4450 {
@@ -54,6 +60,9 @@ auto run_test_filebased(
5460 e_position_x.resetDataset ({Datatype::INT, {5 }});
5561 e_position_x.storeChunk (data, {0 }, {5 });
5662 it.close ();
63+ REQUIRE (series.iterations .at (1 ).closed ());
64+ REQUIRE (writeIterations (series).at (1 ).closed () == !synchronous);
65+ REQUIRE (writeIterations (series)[1 ].closed () == !synchronous);
5766 }
5867 {
5968 auto it = writeIterations (series)[2 ];
@@ -281,19 +290,35 @@ auto close_and_reopen_test() -> void
281290 for (auto writeAccess :
282291 {Access::CREATE_RANDOM_ACCESS, Access::CREATE_LINEAR})
283292 {
293+ bool synchronous = writeAccess == Access::CREATE_LINEAR;
284294 run_test_filebased (
285- writeAccess, [](Series &s) { return s.iterations ; }, " bp" );
295+ writeAccess, [](Series &s) { return s.iterations ; }, " bp" , false );
286296 run_test_filebased (
287- writeAccess, [](Series &s) { return s.writeIterations (); }, " bp" );
297+ writeAccess,
298+ [](Series &s) { return s.writeIterations (); },
299+ " bp" ,
300+ true );
288301 run_test_filebased (
289- writeAccess, [](Series &s) { return s.snapshots (); }, " bp" );
302+ writeAccess,
303+ [](Series &s) { return s.snapshots (); },
304+ " bp" ,
305+ synchronous);
290306 run_test_filebased (
291- writeAccess, [](Series &s) { return s.snapshots (); }, " bp" );
307+ writeAccess,
308+ [](Series &s) { return s.snapshots (); },
309+ " bp" ,
310+ synchronous);
292311 run_test_filebased (
293- writeAccess, [](Series &s) { return s.snapshots (); }, " json" );
312+ writeAccess,
313+ [](Series &s) { return s.snapshots (); },
314+ " json" ,
315+ synchronous);
294316#if openPMD_HAVE_HDF5
295317 run_test_filebased (
296- writeAccess, [](Series &s) { return s.snapshots (); }, " h5" );
318+ writeAccess,
319+ [](Series &s) { return s.snapshots (); },
320+ " h5" ,
321+ synchronous);
297322#endif
298323
299324 /*
0 commit comments