Skip to content
Snippets Groups Projects
Commit 83ea3244 authored by William F Godoy's avatar William F Godoy
Browse files

Fixing missing signed char type support

signed char needed by int8_t in C bindings
Added tests
parent a544ee05
No related branches found
No related tags found
1 merge request!229Initial C bindings
...@@ -97,6 +97,6 @@ ADIOS2_FOREACH_TYPE_1ARG(declare_template_instantiation) ...@@ -97,6 +97,6 @@ ADIOS2_FOREACH_TYPE_1ARG(declare_template_instantiation)
#undef declare_template_instantiation #undef declare_template_instantiation
} // end namespace interop } // end namespace interop
} // end namespace adios } // end namespace adios2
#endif /* ADIOS2_TOOLKIT_INTEROP_ADIOS1_ADIOS1COMMON_H_ */ #endif /* ADIOS2_TOOLKIT_INTEROP_ADIOS1_ADIOS1COMMON_H_ */
...@@ -48,6 +48,11 @@ enum ADIOS_DATATYPES ADIOS1Common::GetADIOS1Type<char>() const { ...@@ -48,6 +48,11 @@ enum ADIOS_DATATYPES ADIOS1Common::GetADIOS1Type<char>() const {
return adios_byte; return adios_byte;
} }
template <>
enum ADIOS_DATATYPES ADIOS1Common::GetADIOS1Type<signed char>() const {
return adios_byte;
}
template <> template <>
enum ADIOS_DATATYPES ADIOS1Common::GetADIOS1Type<unsigned char>() const { enum ADIOS_DATATYPES ADIOS1Common::GetADIOS1Type<unsigned char>() const {
return adios_unsigned_byte; return adios_unsigned_byte;
...@@ -126,6 +131,6 @@ enum ADIOS_DATATYPES ADIOS1Common::GetADIOS1Type<cldouble>() const { ...@@ -126,6 +131,6 @@ enum ADIOS_DATATYPES ADIOS1Common::GetADIOS1Type<cldouble>() const {
} }
} // end namespace interop } // end namespace interop
} // end namespace adios } // end namespace adios2
#endif /* ADIOS2_TOOLKIT_INTEROP_ADIOS1_ADIOS1COMMON_TCC_ */ #endif /* ADIOS2_TOOLKIT_INTEROP_ADIOS1_ADIOS1COMMON_TCC_ */
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
struct SmallTestData struct SmallTestData
{ {
std::array<char, 10> I8 = {{0, 1, -2, 3, -4, 5, -6, 7, -8, 9}}; std::array<char, 10> I8 = {{0, 1, -2, 3, -4, 5, -6, 7, -8, 9}};
std::array<signed char, 10> SI8 = {{0, -1, 2, -3, 4, -5, 6, -7, 8, -9}};
std::array<short, 10> I16 = { std::array<short, 10> I16 = {
{512, 513, -510, 515, -508, 517, -506, 519, -504, 521}}; {512, 513, -510, 515, -508, 517, -506, 519, -504, 521}};
std::array<int, 10> I32 = {{131072, 131073, -131070, 131075, -131068, std::array<int, 10> I32 = {{131072, 131073, -131070, 131075, -131068,
......
...@@ -41,6 +41,8 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read1D8) ...@@ -41,6 +41,8 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read1D8)
{ {
auto &var_i8 = auto &var_i8 =
io.DefineVariable<char>("i8", {}, {}, adios2::Dims{8}); io.DefineVariable<char>("i8", {}, {}, adios2::Dims{8});
auto &var_si8 =
io.DefineVariable<signed char>("si8", {}, {}, adios2::Dims{8});
auto &var_i16 = auto &var_i16 =
io.DefineVariable<short>("i16", {}, {}, adios2::Dims{8}); io.DefineVariable<short>("i16", {}, {}, adios2::Dims{8});
auto &var_i32 = auto &var_i32 =
...@@ -72,6 +74,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read1D8) ...@@ -72,6 +74,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read1D8)
{ {
// Retrieve the variables that previously went out of scope // Retrieve the variables that previously went out of scope
auto &var_i8 = io.GetVariable<char>("i8"); auto &var_i8 = io.GetVariable<char>("i8");
auto &var_si8 = io.GetVariable<signed char>("si8");
auto &var_i16 = io.GetVariable<short>("i16"); auto &var_i16 = io.GetVariable<short>("i16");
auto &var_i32 = io.GetVariable<int>("i32"); auto &var_i32 = io.GetVariable<int>("i32");
auto &var_i64 = io.GetVariable<long>("i64"); auto &var_i64 = io.GetVariable<long>("i64");
...@@ -84,6 +87,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read1D8) ...@@ -84,6 +87,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read1D8)
// Write each one // Write each one
engine->Write(var_i8, m_TestData.I8.data() + step); engine->Write(var_i8, m_TestData.I8.data() + step);
engine->Write(var_si8, m_TestData.SI8.data() + step);
engine->Write(var_i16, m_TestData.I16.data() + step); engine->Write(var_i16, m_TestData.I16.data() + step);
engine->Write(var_i32, m_TestData.I32.data() + step); engine->Write(var_i32, m_TestData.I32.data() + step);
engine->Write(var_i64, m_TestData.I64.data() + step); engine->Write(var_i64, m_TestData.I64.data() + step);
...@@ -124,6 +128,10 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read1D8) ...@@ -124,6 +128,10 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read1D8)
ASSERT_NE(var_i8, nullptr); ASSERT_NE(var_i8, nullptr);
ASSERT_EQ(var_i8->ndim, 1); ASSERT_EQ(var_i8->ndim, 1);
ASSERT_EQ(var_i8->dims[0], 8); ASSERT_EQ(var_i8->dims[0], 8);
ADIOS_VARINFO *var_si8 = adios_inq_var(f, "si8");
ASSERT_NE(var_si8, nullptr);
ASSERT_EQ(var_si8->ndim, 1);
ASSERT_EQ(var_si8->dims[0], 8);
ADIOS_VARINFO *var_i16 = adios_inq_var(f, "i16"); ADIOS_VARINFO *var_i16 = adios_inq_var(f, "i16");
ASSERT_NE(var_i16, nullptr); ASSERT_NE(var_i16, nullptr);
ASSERT_EQ(var_i16->ndim, 1); ASSERT_EQ(var_i16->ndim, 1);
...@@ -162,6 +170,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read1D8) ...@@ -162,6 +170,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read1D8)
ASSERT_EQ(var_r64->dims[0], 8); ASSERT_EQ(var_r64->dims[0], 8);
std::array<char, 8> I8; std::array<char, 8> I8;
std::array<signed char, 8> SI8;
std::array<int16_t, 8> I16; std::array<int16_t, 8> I16;
std::array<int32_t, 8> I32; std::array<int32_t, 8> I32;
std::array<int64_t, 8> I64; std::array<int64_t, 8> I64;
...@@ -181,6 +190,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read1D8) ...@@ -181,6 +190,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read1D8)
{ {
// Read the current step // Read the current step
adios_schedule_read_byid(f, sel, var_i8->varid, t, 1, I8.data()); adios_schedule_read_byid(f, sel, var_i8->varid, t, 1, I8.data());
adios_schedule_read_byid(f, sel, var_si8->varid, t, 1, SI8.data());
adios_schedule_read_byid(f, sel, var_i16->varid, t, 1, I16.data()); adios_schedule_read_byid(f, sel, var_i16->varid, t, 1, I16.data());
adios_schedule_read_byid(f, sel, var_i32->varid, t, 1, I32.data()); adios_schedule_read_byid(f, sel, var_i32->varid, t, 1, I32.data());
adios_schedule_read_byid(f, sel, var_i64->varid, t, 1, I64.data()); adios_schedule_read_byid(f, sel, var_i64->varid, t, 1, I64.data());
...@@ -200,6 +210,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read1D8) ...@@ -200,6 +210,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read1D8)
std::string msg = ss.str(); std::string msg = ss.str();
EXPECT_EQ(I8[i], m_TestData.I8[i + t]) << msg; EXPECT_EQ(I8[i], m_TestData.I8[i + t]) << msg;
EXPECT_EQ(SI8[i], m_TestData.SI8[i + t]) << msg;
EXPECT_EQ(I16[i], m_TestData.I16[i + t]) << msg; EXPECT_EQ(I16[i], m_TestData.I16[i + t]) << msg;
EXPECT_EQ(I32[i], m_TestData.I32[i + t]) << msg; EXPECT_EQ(I32[i], m_TestData.I32[i + t]) << msg;
EXPECT_EQ(I64[i], m_TestData.I64[i + t]) << msg; EXPECT_EQ(I64[i], m_TestData.I64[i + t]) << msg;
...@@ -216,6 +227,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read1D8) ...@@ -216,6 +227,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read1D8)
// Cleanup variable structures // Cleanup variable structures
adios_free_varinfo(var_i8); adios_free_varinfo(var_i8);
adios_free_varinfo(var_si8);
adios_free_varinfo(var_i16); adios_free_varinfo(var_i16);
adios_free_varinfo(var_i32); adios_free_varinfo(var_i32);
adios_free_varinfo(var_i64); adios_free_varinfo(var_i64);
...@@ -257,6 +269,9 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D2x4) ...@@ -257,6 +269,9 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D2x4)
{ {
auto &var_i8 = auto &var_i8 =
io.DefineVariable<char>("i8", {}, {}, adios2::Dims{2, 4}); io.DefineVariable<char>("i8", {}, {}, adios2::Dims{2, 4});
auto &var_si8 = io.DefineVariable<signed char>("si8", {}, {},
adios2::Dims{2, 4});
auto &var_i16 = auto &var_i16 =
io.DefineVariable<short>("i16", {}, {}, adios2::Dims{2, 4}); io.DefineVariable<short>("i16", {}, {}, adios2::Dims{2, 4});
auto &var_i32 = auto &var_i32 =
...@@ -288,6 +303,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D2x4) ...@@ -288,6 +303,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D2x4)
{ {
// Retrieve the variables that previously went out of scope // Retrieve the variables that previously went out of scope
auto &var_i8 = io.GetVariable<char>("i8"); auto &var_i8 = io.GetVariable<char>("i8");
auto &var_si8 = io.GetVariable<signed char>("si8");
auto &var_i16 = io.GetVariable<short>("i16"); auto &var_i16 = io.GetVariable<short>("i16");
auto &var_i32 = io.GetVariable<int>("i32"); auto &var_i32 = io.GetVariable<int>("i32");
auto &var_i64 = io.GetVariable<long>("i64"); auto &var_i64 = io.GetVariable<long>("i64");
...@@ -300,6 +316,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D2x4) ...@@ -300,6 +316,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D2x4)
// Write each one // Write each one
engine->Write(var_i8, m_TestData.I8.data() + step); engine->Write(var_i8, m_TestData.I8.data() + step);
engine->Write(var_si8, m_TestData.SI8.data() + step);
engine->Write(var_i16, m_TestData.I16.data() + step); engine->Write(var_i16, m_TestData.I16.data() + step);
engine->Write(var_i32, m_TestData.I32.data() + step); engine->Write(var_i32, m_TestData.I32.data() + step);
engine->Write(var_i64, m_TestData.I64.data() + step); engine->Write(var_i64, m_TestData.I64.data() + step);
...@@ -341,6 +358,11 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D2x4) ...@@ -341,6 +358,11 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D2x4)
ASSERT_EQ(var_i8->ndim, 2); ASSERT_EQ(var_i8->ndim, 2);
ASSERT_EQ(var_i8->dims[0], 2); ASSERT_EQ(var_i8->dims[0], 2);
ASSERT_EQ(var_i8->dims[1], 4); ASSERT_EQ(var_i8->dims[1], 4);
ADIOS_VARINFO *var_si8 = adios_inq_var(f, "si8");
ASSERT_NE(var_si8, nullptr);
ASSERT_EQ(var_si8->ndim, 2);
ASSERT_EQ(var_si8->dims[0], 2);
ASSERT_EQ(var_si8->dims[1], 4);
ADIOS_VARINFO *var_i16 = adios_inq_var(f, "i16"); ADIOS_VARINFO *var_i16 = adios_inq_var(f, "i16");
ASSERT_NE(var_i16, nullptr); ASSERT_NE(var_i16, nullptr);
ASSERT_EQ(var_i16->ndim, 2); ASSERT_EQ(var_i16->ndim, 2);
...@@ -388,6 +410,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D2x4) ...@@ -388,6 +410,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D2x4)
ASSERT_EQ(var_r64->dims[1], 4); ASSERT_EQ(var_r64->dims[1], 4);
std::array<char, 8> I8; std::array<char, 8> I8;
std::array<signed char, 8> SI8;
std::array<int16_t, 8> I16; std::array<int16_t, 8> I16;
std::array<int32_t, 8> I32; std::array<int32_t, 8> I32;
std::array<int64_t, 8> I64; std::array<int64_t, 8> I64;
...@@ -407,6 +430,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D2x4) ...@@ -407,6 +430,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D2x4)
{ {
// Read the current step // Read the current step
adios_schedule_read_byid(f, sel, var_i8->varid, t, 1, I8.data()); adios_schedule_read_byid(f, sel, var_i8->varid, t, 1, I8.data());
adios_schedule_read_byid(f, sel, var_si8->varid, t, 1, SI8.data());
adios_schedule_read_byid(f, sel, var_i16->varid, t, 1, I16.data()); adios_schedule_read_byid(f, sel, var_i16->varid, t, 1, I16.data());
adios_schedule_read_byid(f, sel, var_i32->varid, t, 1, I32.data()); adios_schedule_read_byid(f, sel, var_i32->varid, t, 1, I32.data());
adios_schedule_read_byid(f, sel, var_i64->varid, t, 1, I64.data()); adios_schedule_read_byid(f, sel, var_i64->varid, t, 1, I64.data());
...@@ -426,6 +450,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D2x4) ...@@ -426,6 +450,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D2x4)
std::string msg = ss.str(); std::string msg = ss.str();
EXPECT_EQ(I8[i], m_TestData.I8[i + t]) << msg; EXPECT_EQ(I8[i], m_TestData.I8[i + t]) << msg;
EXPECT_EQ(SI8[i], m_TestData.SI8[i + t]) << msg;
EXPECT_EQ(I16[i], m_TestData.I16[i + t]) << msg; EXPECT_EQ(I16[i], m_TestData.I16[i + t]) << msg;
EXPECT_EQ(I32[i], m_TestData.I32[i + t]) << msg; EXPECT_EQ(I32[i], m_TestData.I32[i + t]) << msg;
EXPECT_EQ(I64[i], m_TestData.I64[i + t]) << msg; EXPECT_EQ(I64[i], m_TestData.I64[i + t]) << msg;
...@@ -442,6 +467,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D2x4) ...@@ -442,6 +467,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D2x4)
// Cleanup variable structures // Cleanup variable structures
adios_free_varinfo(var_i8); adios_free_varinfo(var_i8);
adios_free_varinfo(var_si8);
adios_free_varinfo(var_i16); adios_free_varinfo(var_i16);
adios_free_varinfo(var_i32); adios_free_varinfo(var_i32);
adios_free_varinfo(var_i64); adios_free_varinfo(var_i64);
...@@ -483,6 +509,8 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D4x2) ...@@ -483,6 +509,8 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D4x2)
{ {
auto &var_i8 = auto &var_i8 =
io.DefineVariable<char>("i8", {}, {}, adios2::Dims{4, 2}); io.DefineVariable<char>("i8", {}, {}, adios2::Dims{4, 2});
auto &var_si8 = io.DefineVariable<signed char>("si8", {}, {},
adios2::Dims{4, 2});
auto &var_i16 = auto &var_i16 =
io.DefineVariable<short>("i16", {}, {}, adios2::Dims{4, 2}); io.DefineVariable<short>("i16", {}, {}, adios2::Dims{4, 2});
auto &var_i32 = auto &var_i32 =
...@@ -514,6 +542,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D4x2) ...@@ -514,6 +542,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D4x2)
{ {
// Retrieve the variables that previously went out of scope // Retrieve the variables that previously went out of scope
auto &var_i8 = io.GetVariable<char>("i8"); auto &var_i8 = io.GetVariable<char>("i8");
auto &var_si8 = io.GetVariable<signed char>("si8");
auto &var_i16 = io.GetVariable<short>("i16"); auto &var_i16 = io.GetVariable<short>("i16");
auto &var_i32 = io.GetVariable<int>("i32"); auto &var_i32 = io.GetVariable<int>("i32");
auto &var_i64 = io.GetVariable<long>("i64"); auto &var_i64 = io.GetVariable<long>("i64");
...@@ -526,6 +555,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D4x2) ...@@ -526,6 +555,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D4x2)
// Write each one // Write each one
engine->Write(var_i8, m_TestData.I8.data() + step); engine->Write(var_i8, m_TestData.I8.data() + step);
engine->Write(var_si8, m_TestData.SI8.data() + step);
engine->Write(var_i16, m_TestData.I16.data() + step); engine->Write(var_i16, m_TestData.I16.data() + step);
engine->Write(var_i32, m_TestData.I32.data() + step); engine->Write(var_i32, m_TestData.I32.data() + step);
engine->Write(var_i64, m_TestData.I64.data() + step); engine->Write(var_i64, m_TestData.I64.data() + step);
...@@ -567,6 +597,11 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D4x2) ...@@ -567,6 +597,11 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D4x2)
ASSERT_EQ(var_i8->ndim, 2); ASSERT_EQ(var_i8->ndim, 2);
ASSERT_EQ(var_i8->dims[0], 4); ASSERT_EQ(var_i8->dims[0], 4);
ASSERT_EQ(var_i8->dims[1], 2); ASSERT_EQ(var_i8->dims[1], 2);
ADIOS_VARINFO *var_si8 = adios_inq_var(f, "si8");
ASSERT_NE(var_si8, nullptr);
ASSERT_EQ(var_si8->ndim, 2);
ASSERT_EQ(var_si8->dims[0], 4);
ASSERT_EQ(var_si8->dims[1], 2);
ADIOS_VARINFO *var_i16 = adios_inq_var(f, "i16"); ADIOS_VARINFO *var_i16 = adios_inq_var(f, "i16");
ASSERT_NE(var_i16, nullptr); ASSERT_NE(var_i16, nullptr);
ASSERT_EQ(var_i16->ndim, 2); ASSERT_EQ(var_i16->ndim, 2);
...@@ -614,6 +649,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D4x2) ...@@ -614,6 +649,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D4x2)
ASSERT_EQ(var_r64->dims[1], 2); ASSERT_EQ(var_r64->dims[1], 2);
std::array<char, 8> I8; std::array<char, 8> I8;
std::array<signed char, 8> SI8;
std::array<int16_t, 8> I16; std::array<int16_t, 8> I16;
std::array<int32_t, 8> I32; std::array<int32_t, 8> I32;
std::array<int64_t, 8> I64; std::array<int64_t, 8> I64;
...@@ -633,6 +669,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D4x2) ...@@ -633,6 +669,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D4x2)
{ {
// Read the current step // Read the current step
adios_schedule_read_byid(f, sel, var_i8->varid, t, 1, I8.data()); adios_schedule_read_byid(f, sel, var_i8->varid, t, 1, I8.data());
adios_schedule_read_byid(f, sel, var_si8->varid, t, 1, SI8.data());
adios_schedule_read_byid(f, sel, var_i16->varid, t, 1, I16.data()); adios_schedule_read_byid(f, sel, var_i16->varid, t, 1, I16.data());
adios_schedule_read_byid(f, sel, var_i32->varid, t, 1, I32.data()); adios_schedule_read_byid(f, sel, var_i32->varid, t, 1, I32.data());
adios_schedule_read_byid(f, sel, var_i64->varid, t, 1, I64.data()); adios_schedule_read_byid(f, sel, var_i64->varid, t, 1, I64.data());
...@@ -652,6 +689,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D4x2) ...@@ -652,6 +689,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D4x2)
std::string msg = ss.str(); std::string msg = ss.str();
EXPECT_EQ(I8[i], m_TestData.I8[i + t]) << msg; EXPECT_EQ(I8[i], m_TestData.I8[i + t]) << msg;
EXPECT_EQ(SI8[i], m_TestData.SI8[i + t]) << msg;
EXPECT_EQ(I16[i], m_TestData.I16[i + t]) << msg; EXPECT_EQ(I16[i], m_TestData.I16[i + t]) << msg;
EXPECT_EQ(I32[i], m_TestData.I32[i + t]) << msg; EXPECT_EQ(I32[i], m_TestData.I32[i + t]) << msg;
EXPECT_EQ(I64[i], m_TestData.I64[i + t]) << msg; EXPECT_EQ(I64[i], m_TestData.I64[i + t]) << msg;
...@@ -668,6 +706,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D4x2) ...@@ -668,6 +706,7 @@ TEST_F(BPWriteReadTest, ADIOS2BPWriteADIOS1Read2D4x2)
// Cleanup variable structures // Cleanup variable structures
adios_free_varinfo(var_i8); adios_free_varinfo(var_i8);
adios_free_varinfo(var_si8);
adios_free_varinfo(var_i16); adios_free_varinfo(var_i16);
adios_free_varinfo(var_i32); adios_free_varinfo(var_i32);
adios_free_varinfo(var_i64); adios_free_varinfo(var_i64);
......
...@@ -43,6 +43,30 @@ TEST_F(ADIOSInterfaceWriteTest, DefineVarChar1x10) ...@@ -43,6 +43,30 @@ TEST_F(ADIOSInterfaceWriteTest, DefineVarChar1x10)
EXPECT_EQ(var_i8.m_Type, "char"); EXPECT_EQ(var_i8.m_Type, "char");
} }
TEST_F(ADIOSInterfaceWriteTest, DefineVarSChar1x10)
{
// Define ADIOS variables for each type
auto &var_si8 =
io.DefineVariable<signed char>("si8", {}, {}, adios2::Dims{10});
// Verify the return type is as expected
::testing::StaticAssertTypeEq<decltype(var_si8),
adios2::Variable<signed char> &>();
// Verify exceptions are thrown upon duplicate variable names
EXPECT_THROW(auto &foo =
io.DefineVariable<char>("si8", {}, {}, adios2::Dims{10}),
std::invalid_argument);
// Verify the dimensions, name, and type are correct
ASSERT_EQ(var_si8.m_Shape.size(), 0);
EXPECT_EQ(var_si8.m_Start.size(), 0);
EXPECT_EQ(var_si8.m_Count.size(), 1);
EXPECT_EQ(var_si8.m_Count[0], 10);
EXPECT_EQ(var_si8.m_Name, "si8");
EXPECT_EQ(var_si8.m_Type, "signed char");
}
// Rinse and repeat for remaining types // Rinse and repeat for remaining types
TEST_F(ADIOSInterfaceWriteTest, DefineVarShort1x10) TEST_F(ADIOSInterfaceWriteTest, DefineVarShort1x10)
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment