#include #include "opatIO.h" #include #include #include #include #include std::string EXAMPLE_FILENAME = std::string(getenv("MESON_SOURCE_ROOT")) + "/tests/opatIO/example.opat"; class TestableOpatIO : public OpatIO { public: using OpatIO::flushQueue; }; /** * @file opatIOTest.cpp * @brief Unit tests for the OpatIO class and associated structs. */ /** * @brief Test suite for the const class. */ class opatIOTest : public ::testing::Test { }; /** * @test Verify default constructor initializes correctly. */ TEST_F(opatIOTest, DefaultConstructor) { EXPECT_NO_THROW(OpatIO()); } /* * @test Verify constructor initializes correctly with a file. */ TEST_F(opatIOTest, Constructor) { OpatIO opatIO(EXAMPLE_FILENAME); } TEST_F(opatIOTest, Header) { OpatIO opatIO(EXAMPLE_FILENAME); Header header = opatIO.getHeader(); EXPECT_EQ(header.version, 1); EXPECT_EQ(header.numTables, 20); EXPECT_EQ(header.headerSize, 256); EXPECT_EQ(header.indexOffset, 417856); EXPECT_EQ(std::string(header.creationDate), "Feb 14, 2025"); EXPECT_EQ(std::string(header.sourceInfo), "MESA 12700, Synthetic Opacity Data"); EXPECT_EQ(std::string(header.comment), "log10 kappa (cm^2/g)"); } TEST_F(opatIOTest, TableIndex) { OpatIO opatIO(EXAMPLE_FILENAME); std::vector tableIndex = opatIO.getTableIndex(); EXPECT_EQ(tableIndex.size(), 20); EXPECT_EQ(tableIndex[0].X, 0.1); EXPECT_EQ(tableIndex[0].Z, 0.001); EXPECT_EQ(tableIndex[0].byteStart, 1696); EXPECT_EQ(tableIndex[0].byteEnd, 22504); } TEST_F(opatIOTest, MaxQDepth) { OpatIO opatIO(EXAMPLE_FILENAME); EXPECT_EQ(opatIO.getMaxQDepth(), 10); opatIO.setMaxQDepth(5); EXPECT_EQ(opatIO.getMaxQDepth(), 5); } TEST_F(opatIOTest, unload){ OpatIO opatIO(EXAMPLE_FILENAME); EXPECT_NO_THROW(opatIO.unload()); EXPECT_FALSE(opatIO.isLoaded()); } TEST_F(opatIOTest, FlushQueue){ TestableOpatIO opatIO; EXPECT_NO_THROW(opatIO.flushQueue()); }