From ba61be3c1c40309ef8f5eccfe4fd31f1f9c8a758 Mon Sep 17 00:00:00 2001 From: Matej Sekoranja Date: Fri, 23 Sep 2011 15:17:44 +0200 Subject: [PATCH] initial batch of gtest tests --- configure/RELEASE | 2 + testApp/utils/Makefile | 48 +++---- testApp/utils/hexDumpTest.cpp | 28 +--- testApp/utils/inetAddressUtilsTest.cpp | 186 ++++++++++++------------- testApp/utils/wildcharMatcherTest.cpp | 85 ++++------- 5 files changed, 147 insertions(+), 202 deletions(-) diff --git a/configure/RELEASE b/configure/RELEASE index 05c28d6..0af1f3c 100644 --- a/configure/RELEASE +++ b/configure/RELEASE @@ -29,6 +29,8 @@ TEMPLATE_TOP=$(EPICS_BASE)/templates/makeBaseApp/top PVDATA=/opt/epics/pvDataCPP EPICS_BASE=/opt/epics/base +#GTEST=/opt/epics/gtest + #PVDATA=/home/mrk/hg/pvDataCPP #EPICS_BASE=/home/install/epics/base diff --git a/testApp/utils/Makefile b/testApp/utils/Makefile index 28fe01b..96f2e5c 100644 --- a/testApp/utils/Makefile +++ b/testApp/utils/Makefile @@ -2,37 +2,33 @@ TOP=../.. include $(TOP)/configure/CONFIG -PROD_HOST += hexDumpTest -hexDumpTest_SRCS += hexDumpTest.cpp -hexDumpTest_LIBS += pvAccess pvData +ifdef GTEST +PROD_HOST += testUtils +testUtils_SRCS += hexDumpTest.cpp +testUtils_SRCS += wildcharMatcherTest.cpp +testUtils_SRCS += inetAddressUtilsTest.cpp +testUtils_LIBS += pvAccess pvData Com gtest_main +endif -PROD_HOST += wildcharMatcherTest -wildcharMatcherTest_SRCS += wildcharMatcherTest.cpp -wildcharMatcherTest_LIBS += pvAccess pvData Com +#PROD_HOST += loggerTest +#loggerTest_SRCS += loggerTest.cpp +#loggerTest_LIBS += pvAccess pvData Com -PROD_HOST += inetAddressUtilsTest -inetAddressUtilsTest_SRCS += inetAddressUtilsTest.cpp -inetAddressUtilsTest_LIBS += pvAccess pvData Com +#PROD_HOST += introspectionRegisterTest +#introspectionRegisterTest_SRCS += introspectionRegistryTest.cpp +#introspectionRegisterTest_LIBS += pvAccess Com pvData -PROD_HOST += loggerTest -loggerTest_SRCS += loggerTest.cpp -loggerTest_LIBS += pvAccess pvData Com +#PROD_HOST += transportRegisterTest +#transportRegisterTest_SRCS += transportRegistryTest.cpp +#transportRegisterTest_LIBS += pvAccess Com pvData -PROD_HOST += introspectionRegisterTest -introspectionRegisterTest_SRCS += introspectionRegistryTest.cpp -introspectionRegisterTest_LIBS += pvAccess Com pvData +#PROD_HOST += namedLockPatternTest +#namedLockPatternTest_SRCS += namedLockPatternTest.cpp +#namedLockPatternTest_LIBS += pvAccess Com pvData -PROD_HOST += transportRegisterTest -transportRegisterTest_SRCS += transportRegistryTest.cpp -transportRegisterTest_LIBS += pvAccess Com pvData - -PROD_HOST += namedLockPatternTest -namedLockPatternTest_SRCS += namedLockPatternTest.cpp -namedLockPatternTest_LIBS += pvAccess Com pvData - -PROD_HOST += configurationTest -configurationTest_SRCS += configurationTest.cpp -configurationTest_LIBS += pvAccess Com pvData +#PROD_HOST += configurationTest +#configurationTest_SRCS += configurationTest.cpp +#configurationTest_LIBS += pvAccess Com pvData include $(TOP)/configure/RULES #---------------------------------------- diff --git a/testApp/utils/hexDumpTest.cpp b/testApp/utils/hexDumpTest.cpp index 38c9ab6..6ccd5f4 100644 --- a/testApp/utils/hexDumpTest.cpp +++ b/testApp/utils/hexDumpTest.cpp @@ -1,29 +1,15 @@ -/* - * HexDumpTest.cpp - * - * Created on: Nov 8, 2010 - * Author: Miha Vitorovic - */ +#include #include -#include - using namespace epics::pvData; using namespace epics::pvAccess; -using std::cout; -using std::endl; -int main(int argc, char *argv[]) { +TEST(hexDumpTest, hexDump) +{ char TO_DUMP[] = "pvAccess dump test\0\1\2\3\4\5\6\254\255\256"; - - hexDump("test", (int8*)TO_DUMP, 18+9); - - hexDump("only text", (int8*)TO_DUMP, 18); - - hexDump("22 byte test", (int8*)TO_DUMP, 22); - - cout< #include #include @@ -21,125 +16,122 @@ using namespace epics::pvData; using namespace epics::pvAccess; using namespace std; -int main(int argc, char *argv[]) { - osiSockAttach(); - createFileLogger("inetAddresUtils.log"); +TEST(inetAddressUtils, getSocketAddressList) +{ + auto_ptr vec(getSocketAddressList("127.0.0.1 10.10.12.11:1234 192.168.3.4", 555)); - InetAddrVector *vec; - InetAddrVector *vec1; - - cout<<"Testing \"getSocketAddressList\""<size()==3); + ASSERT_EQ(static_cast(3), vec->size()); osiSockAddr addr; addr = vec->at(0); - assert(addr.ia.sin_family==AF_INET); - assert(addr.ia.sin_port==htons(555)); - assert(addr.ia.sin_addr.s_addr==htonl(0x7F000001)); - assert(inetAddressToString(addr)=="127.0.0.1:555"); - cout<<'\t'<at(1); - assert(addr.ia.sin_family==AF_INET); - assert(addr.ia.sin_port==htons(1234)); - assert(addr.ia.sin_addr.s_addr==htonl(0x0A0A0C0B)); - assert(inetAddressToString(addr)=="10.10.12.11:1234"); - cout<<'\t'<at(2); - assert(addr.ia.sin_family==AF_INET); - assert(addr.ia.sin_port==htons(555)); - assert(addr.ia.sin_addr.s_addr==htonl(0xC0A80304)); - assert(inetAddressToString(addr)=="192.168.3.4:555"); - cout<<'\t'<size()==4); + auto_ptr vec1(getSocketAddressList("172.16.55.160", 6789, vec.get())); + + ASSERT_EQ(static_cast(4), vec1->size()); addr = vec1->at(0); - assert(addr.ia.sin_family==AF_INET); - assert(addr.ia.sin_port==htons(6789)); - assert(addr.ia.sin_addr.s_addr==htonl(0xAC1037A0)); - assert(inetAddressToString(addr)=="172.16.55.160:6789"); - cout<<'\t'<at(1); - assert(addr.ia.sin_family==AF_INET); - assert(addr.ia.sin_port==htons(555)); - assert(addr.ia.sin_addr.s_addr==htonl(0x7F000001)); - assert(inetAddressToString(addr)=="127.0.0.1:555"); - cout<<'\t'<at(2); - assert(addr.ia.sin_family==AF_INET); - assert(addr.ia.sin_port==htons(1234)); - assert(addr.ia.sin_addr.s_addr==htonl(0x0A0A0C0B)); - assert(inetAddressToString(addr)=="10.10.12.11:1234"); - cout<<'\t'<at(3); - assert(addr.ia.sin_family==AF_INET); - assert(addr.ia.sin_port==htons(555)); - assert(addr.ia.sin_addr.s_addr==htonl(0xC0A80304)); - assert(inetAddressToString(addr)=="192.168.3.4:555"); - cout<<'\t'< vec(getSocketAddressList("127.0.0.1 10.10.12.11:1234 192.168.3.4", 555)); - cout<<"Testing \"ipv4AddressToInt\""<at(0)))==(int32)0x7F000001); - assert(ipv4AddressToInt((vec->at(1)))==(int32)0x0A0A0C0B); - assert(ipv4AddressToInt((vec->at(2)))==(int32)0xC0A80304); - cout<<"\nPASSED!\n"; + ASSERT_EQ(static_cast(3), vec->size()); - delete vec; - delete vec1; + EXPECT_EQ((int32)0x7F000001, ipv4AddressToInt((vec->at(0)))); + EXPECT_EQ((int32)0x0A0A0C0B, ipv4AddressToInt((vec->at(1)))); + EXPECT_EQ((int32)0xC0A80304, ipv4AddressToInt((vec->at(2)))); +} - osiSockAddr* paddr; - cout<<"Testing \"intToIPv4Address\""<ia.sin_family==AF_INET); - assert(inetAddressToString(*paddr)=="127.0.0.1:0"); - cout<<'\t'< paddr(intToIPv4Address(0x7F000001)); + ASSERT_NE((uintptr_t)0, (uintptr_t)paddr.get()); + EXPECT_EQ(AF_INET, paddr->ia.sin_family); + EXPECT_EQ("127.0.0.1:0", inetAddressToString(*paddr.get())); - paddr = intToIPv4Address(0x0A0A0C0B); - assert(paddr->ia.sin_family==AF_INET); - assert(inetAddressToString(*paddr)=="10.10.12.11:0"); - cout<<'\t'<ia.sin_family); + EXPECT_EQ("10.10.12.11:0", inetAddressToString(*paddr.get())); +} - cout<<"\nPASSED!\n"; - cout<<"Testing \"encodeAsIPv6Address\""< buff(new ByteBuffer(32, EPICS_ENDIAN_LITTLE)); char src[] = { (char)0, (char)0, (char)0, (char)0, (char)0, (char)0, (char)0, (char)0, (char)0, (char)0, (char)0xFF, (char)0xFF, (char)0x0A, (char)0x0A, (char)0x0C, (char)0x0B }; - encodeAsIPv6Address(buff, &addr); - assert(strncmp(buff->getArray(), src, 16)==0); - cout<<"\nPASSED!\n"; - - SOCKET socket = epicsSocketCreate(AF_INET, SOCK_STREAM, IPPROTO_TCP); - InetAddrVector* broadcasts = getBroadcastAddresses(socket,6678); - cout<<"Broadcast addresses: "<size()<size(); i++) { - cout<<"Broadcast address: "; - cout<at(i))< paddr(intToIPv4Address(0x0A0A0C0B)); + ASSERT_NE((uintptr_t)0, (uintptr_t)paddr.get()); + osiSockAddr addr = *paddr; + + encodeAsIPv6Address(buff.get(), &addr); + ASSERT_EQ(static_cast(16), buff->getPosition()); + + EXPECT_TRUE(strncmp(buff->getArray(), src, 16)==0); } + + +TEST(inetAddressUtils, getBroadcastAddresses) +{ + osiSockAttach(); + + SOCKET socket = epicsSocketCreate(AF_INET, SOCK_STREAM, IPPROTO_TCP); + auto_ptr broadcasts(getBroadcastAddresses(socket,6678)); + // at least one is expected + ASSERT_LT(static_cast(0), broadcasts->size()); + epicsSocketDestroy(socket); + + // debug + for(size_t i = 0; isize(); i++) { + cout<<"\t"<at(i))< #include -#include -#include - -using namespace epics::pvData; using namespace epics::pvAccess; -using std::cout; - -int main(int argc, char *argv[]) { - String testString = "Test string for matcher"; - - cout<<"testSet(\"[abc]\",1,'a').\n"; - assert(testSet("[abc]", 1, 'a')); - cout<<"testSet(\"[abc]\",1,'b').\n"; - assert(testSet("[abc]", 1, 'b')); - cout<<"testSet(\"[abc]\",1,'c').\n"; - assert(testSet("[abc]", 1, 'c')); - cout<<"testSet(\"[abc]\",1,'d').\n"; - assert(!testSet("[abc]", 1, 'd')); - cout<<"testSet(\"[!abc]\",1,'d').\n"; - assert(testSet("[!abc]", 1, 'd')); - cout<<"testSet(\"[a-c]\",1,'d').\n"; - assert(!testSet("[a-c]", 1, 'd')); - cout<<"testSet(\"[!a-c]\",1,'d').\n"; - assert(testSet("[!a-c]", 1, 'd')); - cout<<"testSet(\"[ac-f]\",1,'d').\n"; - assert(testSet("[ac-f]", 1, 'd')); - cout<<"testSet(\"[!ac-f]\",1,'d').\n"; - assert(!testSet("[!ac-f]", 1, 'd')); - - - cout<<"\n"; - - cout<<"Test string is: \""<