257 {
258 if (argc < 2) {
259 std::cerr << "usage: test_sddspp ARTIFACT_DIRECTORY [SDDS_FILE...]\n";
260 return 2;
261 }
262 const std::filesystem::path directory(argv[1]);
263 std::filesystem::create_directories(directory);
264 roundTrip(directory / "ascii.sdds", sdds::DataMode::Ascii, sdds::MajorOrder::Row,
265 sdds::ByteOrder::Native, sdds::RowCountMode::Variable);
266 roundTrip(directory / "ascii-no-count.sdds", sdds::DataMode::Ascii, sdds::MajorOrder::Row,
267 sdds::ByteOrder::Native, sdds::RowCountMode::None);
268 roundTrip(directory / "binary-little.sdds", sdds::DataMode::Binary, sdds::MajorOrder::Row,
269 sdds::ByteOrder::Little, sdds::RowCountMode::Variable);
270 roundTrip(directory / "binary-big.sdds", sdds::DataMode::Binary, sdds::MajorOrder::Column,
271 sdds::ByteOrder::Big, sdds::RowCountMode::Variable);
272 roundTrip(directory / "binary.sdds.gz", sdds::DataMode::Binary, sdds::MajorOrder::Row,
273 sdds::ByteOrder::Little, sdds::RowCountMode::Variable);
274 roundTrip(directory / "binary.sdds.xz", sdds::DataMode::Binary, sdds::MajorOrder::Column,
275 sdds::ByteOrder::Little, sdds::RowCountMode::Variable);
276 selectionAndGoto(directory / "binary-little.sdds");
277 appendAndUpdate(directory / "append-update.sdds");
278 const auto testData = std::filesystem::absolute(argv[0]).parent_path().parent_path() /
279 "testdata/include-main.sdds";
280 includesLimitsAndRecovery(directory, testData);
281 legacyFacade(directory / "legacy.sdds");
282 for (int argument = 2; argument < argc; ++argument) {
283 auto reader = sdds::Reader::open(argv[argument]);
284 auto dataset = reader.readAll();
285 assert(!dataset.pages.empty());
286 reader.close();
287 }
288 std::cout << "SDDS++ C++17 integration tests passed\n";
289 return 0;
290}