From 9a2002c33573f12337ad8641ae7b30e36292f54c Mon Sep 17 00:00:00 2001 From: Roland Schulz Date: Tue, 1 Jul 2014 04:53:53 -0400 Subject: [PATCH] Add support for int64 in refdata Change-Id: Ia5fedbe7593d9630a095eaf1cb6d69f0c1223ee0 --- src/testutils/refdata.cpp | 41 +++++++++++++++++++++++++++++++++ src/testutils/refdata.h | 15 ++++++++++++ src/testutils/tests/refdata.cpp | 4 ++++ 3 files changed, 60 insertions(+) diff --git a/src/testutils/refdata.cpp b/src/testutils/refdata.cpp index f145e9adb1..61e1786517 100644 --- a/src/testutils/refdata.cpp +++ b/src/testutils/refdata.cpp @@ -268,6 +268,10 @@ class TestReferenceChecker::Impl static const xmlChar * const cStringNodeName; //! String constant for naming XML elements for integer values. static const xmlChar * const cIntegerNodeName; + //! String constant for naming XML elements for int64 values. + static const xmlChar * const cInt64NodeName; + //! String constant for naming XML elements for unsigned int64 values. + static const xmlChar * const cUInt64NodeName; //! String constant for naming XML elements for floating-point values. static const xmlChar * const cRealNodeName; //! String constant for naming XML attribute for value identifiers. @@ -416,6 +420,10 @@ const xmlChar * const TestReferenceChecker::Impl::cStringNodeName = (const xmlChar *)"String"; const xmlChar * const TestReferenceChecker::Impl::cIntegerNodeName = (const xmlChar *)"Int"; +const xmlChar * const TestReferenceChecker::Impl::cInt64NodeName = + (const xmlChar *)"Int64"; +const xmlChar * const TestReferenceChecker::Impl::cUInt64NodeName = + (const xmlChar *)"UInt64"; const xmlChar * const TestReferenceChecker::Impl::cRealNodeName = (const xmlChar *)"Real"; const xmlChar * const TestReferenceChecker::Impl::cIdAttrName = @@ -861,6 +869,39 @@ void TestReferenceChecker::checkInteger(int value, const char *id) } } +void TestReferenceChecker::checkInt64(gmx_int64_t value, const char *id) +{ + if (impl_->shouldIgnore()) + { + return; + } + SCOPED_TRACE(impl_->traceString(id)); + bool bFound = false; + std::string strValue = formatString("%" GMX_PRId64, value); + std::string refStrValue = + impl_->processItem(Impl::cInt64NodeName, id, strValue, &bFound); + if (bFound) + { + EXPECT_EQ(refStrValue, strValue); + } +} + +void TestReferenceChecker::checkUInt64(gmx_uint64_t value, const char *id) +{ + if (impl_->shouldIgnore()) + { + return; + } + SCOPED_TRACE(impl_->traceString(id)); + bool bFound = false; + std::string strValue = formatString("%" GMX_PRIu64, value); + std::string refStrValue = + impl_->processItem(Impl::cUInt64NodeName, id, strValue, &bFound); + if (bFound) + { + EXPECT_EQ(refStrValue, strValue); + } +} void TestReferenceChecker::checkDouble(double value, const char *id) { diff --git a/src/testutils/refdata.h b/src/testutils/refdata.h index 3c2c3b2f58..f3fd0bdfe2 100644 --- a/src/testutils/refdata.h +++ b/src/testutils/refdata.h @@ -46,6 +46,7 @@ #include #include +#include "gromacs/legacyheaders/types/simple.h" #include "gromacs/utility/common.h" namespace gmx @@ -315,6 +316,10 @@ class TestReferenceChecker void checkStringBlock(const std::string &value, const char *id); //! Check a single integer value. void checkInteger(int value, const char *id); + //! Check a single int64 value. + void checkInt64(gmx_int64_t value, const char *id); + //! Check a single uint64 value. + void checkUInt64(gmx_uint64_t value, const char *id); //! Check a single single-precision floating point value. void checkFloat(float value, const char *id); //! Check a single double-precision floating point value. @@ -359,6 +364,16 @@ class TestReferenceChecker { checkInteger(value, id); } + //! Check a single integer value. + void checkValue(gmx_int64_t value, const char *id) + { + checkInt64(value, id); + } + //! Check a single integer value. + void checkValue(gmx_uint64_t value, const char *id) + { + checkUInt64(value, id); + } //! Check a single single-precision floating point value. void checkValue(float value, const char *id) { diff --git a/src/testutils/tests/refdata.cpp b/src/testutils/tests/refdata.cpp index f88f31bcb9..ccc442127a 100644 --- a/src/testutils/tests/refdata.cpp +++ b/src/testutils/tests/refdata.cpp @@ -59,6 +59,8 @@ TEST(ReferenceDataTest, HandlesSimpleData) TestReferenceChecker checker(data.rootChecker()); checker.checkBoolean(true, "int"); checker.checkInteger(1, "int"); + checker.checkInt64(1ULL<<42, "int64"); + checker.checkUInt64(1ULL<<42, "uint64"); checker.checkDouble(0.5, "real"); checker.checkString("Test", "string"); } @@ -67,6 +69,8 @@ TEST(ReferenceDataTest, HandlesSimpleData) TestReferenceChecker checker(data.rootChecker()); checker.checkBoolean(true, "int"); checker.checkInteger(1, "int"); + checker.checkInt64(1ULL<<42, "int64"); + checker.checkUInt64(1ULL<<42, "uint64"); checker.checkDouble(0.5, "real"); checker.checkString("Test", "string"); } -- 2.22.0