#include #include "opatIO.h" #include #include #include #include #include std::string EXAMPLE_FILENAME = std::string(getenv("MESON_SOURCE_ROOT")) + "/tests/opatIO/example.opat"; /** * @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, 416416); 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, 256); EXPECT_EQ(tableIndex[0].byteEnd, 21064); } 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, LookupTableID) { OpatIO opatIO(EXAMPLE_FILENAME); EXPECT_EQ(opatIO.lookupTableID(0.321053, 0.0116842), 7); } TEST_F(opatIOTest, GetTable) { OpatIO opatIO(EXAMPLE_FILENAME); OPATTable tab = opatIO.getTable(0.1, 0.001); EXPECT_EQ(tab.N_R, 50); EXPECT_EQ(tab.N_T, 50); EXPECT_DOUBLE_EQ(tab.logR[0], -8.0); EXPECT_DOUBLE_EQ(tab.logT[0], 3.0); EXPECT_DOUBLE_EQ(tab.logKappa[0][0], -0.50183952461055); EXPECT_DOUBLE_EQ(tab.logKappa[0][1], 1.8028572256396647); EXPECT_DOUBLE_EQ(tab.logKappa[1][0], 1.8783385110582342); EXPECT_DOUBLE_EQ(tab.logKappa[1][1], 1.1005312934444582); }