SDDS ToolKit Programs and Libraries for C and Python
Loading...
Searching...
No Matches
test_sdds3.cc File Reference

Detailed Description

Integration tests for the C++17 SDDS implementation.

Covers layouts, typed pages, ASCII and binary files, compression, compatibility includes, and the deprecated migration facade.

License
This file is distributed under the terms of the Software License Agreement found in the file LICENSE included with this distribution.

Definition in file test_sdds3.cc.

#include "SDDS.hpp"
#include "SDDS3.h"
#include <cassert>
#include <cmath>
#include <cstdint>
#include <filesystem>
#include <iostream>
#include <string>
#include <vector>

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 

Function Documentation

◆ main()

int main ( int argc,
char ** argv )

Definition at line 257 of file test_sdds3.cc.

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}