Skip to content

Commit

Permalink
Move test to its own file
Browse files Browse the repository at this point in the history
  • Loading branch information
franzpoeschel committed Feb 14, 2025
1 parent 07407f5 commit 9475398
Show file tree
Hide file tree
Showing 4 changed files with 352 additions and 329 deletions.
4 changes: 4 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -792,6 +792,10 @@ if(openPMD_BUILD_TESTING)
test/Files_ParallelIO/read_variablebased_randomaccess.cpp
test/Files_ParallelIO/iterate_nonstreaming_series.cpp
)
elseif(${test_name} STREQUAL "Core")
list(APPEND ${out_list}
test/Files_Core/automatic_variable_encoding.cpp
)
endif()
endmacro()

Expand Down
332 changes: 3 additions & 329 deletions test/CoreTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
#endif
#include "openPMD/openPMD.hpp"

#include "Files_Core/CoreTests.hpp"

#include "openPMD/IO/ADIOS/macros.hpp"
#include "openPMD/auxiliary/Filesystem.hpp"
#include "openPMD/auxiliary/JSON.hpp"
Expand Down Expand Up @@ -1498,338 +1500,10 @@ TEST_CASE("unavailable_backend", "[core]")
#endif
}

void breakpoint()
{}

#if openPMD_HAVE_ADIOS2
TEST_CASE("automatic_variable_encoding", "[adios2]")

Check notice

Code scanning / CodeQL

Unused static function Note test

Static function C_A_T_C_H_T_E_S_T_54 is unreachable (
autoRegistrar55
must be removed at the same time)
{
size_t filename_counter = 0;
auto filename = [&filename_counter]() {
std::stringstream res;
res << "../samples/automatic_variable_encoding/test_no_"
<< filename_counter << ".bp5";
return res.str();
};
auto next_filename = [&filename_counter, &filename]() {
++filename_counter;
return filename();
};
auto require_encoding = [&filename](IterationEncoding ie) {
Series read(filename(), openPMD::Access::READ_RANDOM_ACCESS);
REQUIRE(read.iterationEncoding() == ie);
};

// TESTS

{
Series write(next_filename(), Access::CREATE);
write.close();
require_encoding(IterationEncoding::groupBased);
}

{
Series write(next_filename(), Access::CREATE);
write.snapshots(SnapshotWorkflow::RandomAccess);
write.close();
require_encoding(IterationEncoding::groupBased);
}

{
Series write(next_filename(), Access::CREATE);
write.snapshots(SnapshotWorkflow::Synchronous);
write.close();
require_encoding(IterationEncoding::variableBased);
}

{
Series write(next_filename(), Access::CREATE);
write.flush();
write.snapshots(SnapshotWorkflow::RandomAccess);
write.close();
require_encoding(IterationEncoding::groupBased);
}

{
Series write(next_filename(), Access::CREATE);
write.flush();
write.snapshots(SnapshotWorkflow::Synchronous);
write.close();
require_encoding(IterationEncoding::groupBased);
}

// explicitly set variable encoding

{
Series write(
next_filename(),
Access::CREATE,
R"(iteration_encoding = "variable_based")");
write.close();
require_encoding(IterationEncoding::variableBased);
}

{
Series write(
next_filename(),
Access::CREATE,
R"(iteration_encoding = "variable_based")");
write.snapshots(SnapshotWorkflow::RandomAccess);
write.close();
require_encoding(IterationEncoding::variableBased);
}

{
Series write(
next_filename(),
Access::CREATE,
R"(iteration_encoding = "variable_based")");
write.snapshots(SnapshotWorkflow::Synchronous);
write.close();
require_encoding(IterationEncoding::variableBased);
}

{
Series write(
next_filename(),
Access::CREATE,
R"(iteration_encoding = "variable_based")");
write.flush();
write.snapshots(SnapshotWorkflow::RandomAccess);
write.close();
require_encoding(IterationEncoding::variableBased);
}

{
Series write(
next_filename(),
Access::CREATE,
R"(iteration_encoding = "variable_based")");
write.flush();
write.snapshots(SnapshotWorkflow::Synchronous);
write.close();
require_encoding(IterationEncoding::variableBased);
}

// explicitly set variable encoding

{
Series write(
next_filename(),
Access::CREATE,
R"(iteration_encoding = "group_based")");
write.close();
require_encoding(IterationEncoding::groupBased);
}

{
Series write(
next_filename(),
Access::CREATE,
R"(iteration_encoding = "group_based")");
write.snapshots(SnapshotWorkflow::RandomAccess);
write.close();
require_encoding(IterationEncoding::groupBased);
}

{
Series write(
next_filename(),
Access::CREATE,
R"(iteration_encoding = "group_based")");
write.snapshots(SnapshotWorkflow::Synchronous);
write.close();
require_encoding(IterationEncoding::groupBased);
}

{
Series write(
next_filename(),
Access::CREATE,
R"(iteration_encoding = "group_based")");
write.flush();
write.snapshots(SnapshotWorkflow::RandomAccess);
write.close();
require_encoding(IterationEncoding::groupBased);
}

{
Series write(
next_filename(),
Access::CREATE,
R"(iteration_encoding = "group_based")");
write.flush();
write.snapshots(SnapshotWorkflow::Synchronous);
write.close();
require_encoding(IterationEncoding::groupBased);
}

// explicitly use API call to set variable encoding

{
Series write(next_filename(), Access::CREATE);
write.setIterationEncoding(IterationEncoding::variableBased);
write.close();
require_encoding(IterationEncoding::variableBased);
}

{
Series write(next_filename(), Access::CREATE);
write.setIterationEncoding(IterationEncoding::variableBased);
write.snapshots(SnapshotWorkflow::RandomAccess);
write.close();
require_encoding(IterationEncoding::variableBased);
}

{
Series write(next_filename(), Access::CREATE);
write.setIterationEncoding(IterationEncoding::variableBased);
write.snapshots(SnapshotWorkflow::Synchronous);
write.close();
require_encoding(IterationEncoding::variableBased);
}

{
Series write(next_filename(), Access::CREATE);
write.setIterationEncoding(IterationEncoding::variableBased);
write.flush();
write.snapshots(SnapshotWorkflow::RandomAccess);
write.close();
require_encoding(IterationEncoding::variableBased);
}

{
Series write(next_filename(), Access::CREATE);
write.setIterationEncoding(IterationEncoding::variableBased);
write.flush();
write.snapshots(SnapshotWorkflow::Synchronous);
write.close();
require_encoding(IterationEncoding::variableBased);
}

// explicitly use API call to set group encoding

{
Series write(next_filename(), Access::CREATE);
write.setIterationEncoding(IterationEncoding::groupBased);
write.close();
require_encoding(IterationEncoding::groupBased);
}

{
Series write(next_filename(), Access::CREATE);
write.setIterationEncoding(IterationEncoding::groupBased);
write.snapshots(SnapshotWorkflow::RandomAccess);
write.close();
require_encoding(IterationEncoding::groupBased);
}

{
Series write(next_filename(), Access::CREATE);
write.setIterationEncoding(IterationEncoding::groupBased);
write.snapshots(SnapshotWorkflow::Synchronous);
write.close();
require_encoding(IterationEncoding::groupBased);
}

{
Series write(next_filename(), Access::CREATE);
write.setIterationEncoding(IterationEncoding::groupBased);
write.flush();
write.snapshots(SnapshotWorkflow::RandomAccess);
write.close();
require_encoding(IterationEncoding::groupBased);
}

{
Series write(next_filename(), Access::CREATE);
write.setIterationEncoding(IterationEncoding::groupBased);
write.flush();
write.snapshots(SnapshotWorkflow::Synchronous);
write.close();
require_encoding(IterationEncoding::groupBased);
}

// explicitly use API call to set group encoding

{
Series write(next_filename(), Access::CREATE);
write.setIterationEncoding(IterationEncoding::variableBased);
write.close();
require_encoding(IterationEncoding::variableBased);
}

{
Series write(next_filename(), Access::CREATE);
write.setIterationEncoding(IterationEncoding::variableBased);
write.snapshots(SnapshotWorkflow::RandomAccess);
write.close();
require_encoding(IterationEncoding::variableBased);
}

{
Series write(next_filename(), Access::CREATE);
write.setIterationEncoding(IterationEncoding::variableBased);
write.snapshots(SnapshotWorkflow::Synchronous);
write.close();
require_encoding(IterationEncoding::variableBased);
}

{
Series write(next_filename(), Access::CREATE);
write.setIterationEncoding(IterationEncoding::variableBased);
write.flush();
write.snapshots(SnapshotWorkflow::RandomAccess);
write.close();
require_encoding(IterationEncoding::variableBased);
}

{
Series write(next_filename(), Access::CREATE);
write.setIterationEncoding(IterationEncoding::variableBased);
write.flush();
write.snapshots(SnapshotWorkflow::Synchronous);
write.close();
require_encoding(IterationEncoding::variableBased);
}

// explicitly use API call to set group encoding a bit late

{
Series write(next_filename(), Access::CREATE);
write.snapshots(SnapshotWorkflow::RandomAccess);
write.setIterationEncoding(IterationEncoding::groupBased);
write.close();
require_encoding(IterationEncoding::groupBased);
}

{
Series write(next_filename(), Access::CREATE);
write.snapshots(SnapshotWorkflow::Synchronous);
write.setIterationEncoding(IterationEncoding::groupBased);
write.close();
require_encoding(IterationEncoding::groupBased);
}

// explicitly use API call to set variable encoding a bit late

{
Series write(next_filename(), Access::CREATE);
write.snapshots(SnapshotWorkflow::RandomAccess);
write.setIterationEncoding(IterationEncoding::variableBased);
write.close();
require_encoding(IterationEncoding::variableBased);
}

{
Series write(next_filename(), Access::CREATE);
write.snapshots(SnapshotWorkflow::Synchronous);
write.setIterationEncoding(IterationEncoding::variableBased);
write.close();
require_encoding(IterationEncoding::variableBased);
}
automatic_variable_encoding::automatic_variable_encoding();
}
#endif

TEST_CASE("unique_ptr", "[core]")
{
Expand Down
6 changes: 6 additions & 0 deletions test/Files_Core/CoreTests.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#include <openPMD/openPMD.hpp>

namespace automatic_variable_encoding
{
auto automatic_variable_encoding() -> void;
}
Loading

0 comments on commit 9475398

Please sign in to comment.