Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
EngineWriteReadTest.h 3.29 KiB
#include <cstdint>

#include <array>
#include <iostream>
#include <stdexcept>

#include <adios2.h>

#include <gtest/gtest.h>

class EngineWriteReadTestBase : public ::testing::Test
{
public:
    EngineWriteReadTestBase(std::string engineName, std::string fileName);

protected:
    std::unique_ptr<adios::ADIOS> m_adios;
    std::string m_EngineName;
    std::string m_FileName;

    // To be created by child class SetUp()
    adios::Method *m_Method;
    std::shared_ptr<adios::Engine> m_Engine;

    // Create and destroy the manager class
    virtual void SetUp();
    virtual void TearDown();

    // Open and close files
    virtual void SetUpWrite();
    virtual void TearDownWrite();

    // Shared test functions
    virtual void Declare() = 0;
    void WriteStep(size_t step);
    void Write3Steps();
    void WriteRead();

    //*************************************************************************
    // Test Data
    //*************************************************************************

    // Test data for each type.  Make sure our values exceed the range of the
    // previous size to make sure we all bytes for each element
    std::array<char, 10> m_DataI8 = {{0, 1, -2, 3, -4, 5, -6, 7, -8, 9}};
    std::array<int16_t, 10> m_DataI16 = {
        {512, 513, -510, 515, -508, 517, -506, 519, -504, 521}};
    std::array<int32_t, 10> m_DataI32 = {{131072, 131073, -131070, 131075,
                                          -131068, 131077, -131066, 131079,
                                          -131064, 131081}};
    std::array<int64_t, 10> m_DataI64 = {
        {8589934592, 8589934593, -8589934590, 8589934595, -8589934588,
         8589934597, -8589934586, 8589934599, -8589934584, 8589934601}};
    std::array<unsigned char, 10> m_DataU8 = {
        {128, 129, 130, 131, 132, 133, 134, 135, 136, 137}};
    std::array<uint16_t, 10> m_DataU16 = {
        {32768, 32769, 32770, 32771, 32772, 32773, 32774, 32775, 32776, 32777}};
    std::array<uint32_t, 10> m_DataU32 = {
        {2147483648, 2147483649, 2147483650, 2147483651, 2147483652, 2147483653,
         2147483654, 2147483655, 2147483656, 2147483657}};
    std::array<uint64_t, 10> m_DataU64 = {
        {9223372036854775808UL, 9223372036854775809UL, 9223372036854775810UL,
         9223372036854775811UL, 9223372036854775812UL, 9223372036854775813UL,
         9223372036854775814UL, 9223372036854775815UL, 9223372036854775816UL,
         9223372036854775817UL}};
    std::array<float, 10> m_DataR32 = {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}};
    std::array<double, 10> m_DataR64 = {{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}};
};

class EngineWriteRead1DTest : public EngineWriteReadTestBase
{
public:
    EngineWriteRead1DTest(std::string engineName, std::string fileName)
    : EngineWriteReadTestBase(engineName, fileName)
    {
    }

protected:
    virtual void Declare();
};

class EngineWriteRead2D2x4Test : public EngineWriteReadTestBase
{
public:
    EngineWriteRead2D2x4Test(std::string engineName, std::string fileName)
    : EngineWriteReadTestBase(engineName, fileName)
    {
    }

protected:
    virtual void Declare();
};

class EngineWriteRead2D4x2Test : public EngineWriteReadTestBase
{
public:
    EngineWriteRead2D4x2Test(std::string engineName, std::string fileName)
    : EngineWriteReadTestBase(engineName, fileName)
    {
    }

protected:
    virtual void Declare();
};