From 7b60621171ed37b8b23ee26468b29e6a09bde350 Mon Sep 17 00:00:00 2001 From: Darryl Pogue Date: Sun, 12 Jan 2014 17:43:54 -0800 Subject: [PATCH] Get CTest working and add pnEncryption tests. This will allow you to run all the tests with `make test` or `ctest`. --- CMakeLists.txt | 3 +- Sources/Tests/CMakeLists.txt | 11 +++- Sources/Tests/CoreLibTests/CMakeLists.txt | 3 +- Sources/Tests/NucleusTests/CMakeLists.txt | 1 + .../pnEncryptionTest/CMakeLists.txt | 17 +++++ .../pnEncryptionTest/test_plMD5Checksum.cpp | 60 ++++++++++++++++++ .../pnEncryptionTest/test_plSHA1Checksum.cpp | 62 +++++++++++++++++++ 7 files changed, 151 insertions(+), 6 deletions(-) create mode 100644 Sources/Tests/NucleusTests/CMakeLists.txt create mode 100644 Sources/Tests/NucleusTests/pnEncryptionTest/CMakeLists.txt create mode 100644 Sources/Tests/NucleusTests/pnEncryptionTest/test_plMD5Checksum.cpp create mode 100644 Sources/Tests/NucleusTests/pnEncryptionTest/test_plSHA1Checksum.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 62e7398d..fcb1f744 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -134,5 +134,6 @@ add_subdirectory(Sources/Plasma) add_subdirectory(Sources/Tools) if(PLASMA_BUILD_TESTS) - add_subdirectory(Sources/Tests) + enable_testing() + add_subdirectory(Sources/Tests EXCLUDE_FROM_ALL) endif(PLASMA_BUILD_TESTS) diff --git a/Sources/Tests/CMakeLists.txt b/Sources/Tests/CMakeLists.txt index 3959ffcc..6a92d56b 100644 --- a/Sources/Tests/CMakeLists.txt +++ b/Sources/Tests/CMakeLists.txt @@ -1,5 +1,10 @@ if( MSVC ) # VS2012 doesn't support correctly the tuples yet and gtest doesn't compile without this - add_definitions( /D _VARIADIC_MAX=10 ) - endif() + add_definitions( /D _VARIADIC_MAX=10 ) +endif() + add_subdirectory(gtest-1.6.0) -add_subdirectory(CoreLibTests) \ No newline at end of file + +add_subdirectory(CoreLibTests) +#add_subdirectory(FeatureTests) +add_subdirectory(NucleusTests) +#add_subdirectory(PubUtilTests) diff --git a/Sources/Tests/CoreLibTests/CMakeLists.txt b/Sources/Tests/CoreLibTests/CMakeLists.txt index c71cc0e0..c4c92b2d 100644 --- a/Sources/Tests/CoreLibTests/CMakeLists.txt +++ b/Sources/Tests/CoreLibTests/CMakeLists.txt @@ -1,6 +1,5 @@ project(CoreLibTests) -enable_testing() include_directories(${GTEST_INCLUDE_DIR}) include_directories(${gtest_SOURCE_DIR}/include ${gtest_SOURCE_DIR}) include_directories(../../Plasma/CoreLib) @@ -14,4 +13,4 @@ target_link_libraries(plStringTest gtest gtest_main CoreLib) add_test( NAME plStringTest COMMAND plStringTest -) \ No newline at end of file +) diff --git a/Sources/Tests/NucleusTests/CMakeLists.txt b/Sources/Tests/NucleusTests/CMakeLists.txt new file mode 100644 index 00000000..56df15ee --- /dev/null +++ b/Sources/Tests/NucleusTests/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(pnEncryptionTest) diff --git a/Sources/Tests/NucleusTests/pnEncryptionTest/CMakeLists.txt b/Sources/Tests/NucleusTests/pnEncryptionTest/CMakeLists.txt new file mode 100644 index 00000000..faa48c64 --- /dev/null +++ b/Sources/Tests/NucleusTests/pnEncryptionTest/CMakeLists.txt @@ -0,0 +1,17 @@ +include_directories(${GTEST_INCLUDE_DIR}) +include_directories(${gtest_SOURCE_DIR}/include ${gtest_SOURCE_DIR}) +include_directories(../../../Plasma/CoreLib) +include_directories(../../../Plasma/NucleusLib) +include_directories(${OPENSSL_INCLUDE_DIR}) + +add_executable(test_plMD5Checksum test_plMD5Checksum.cpp) +target_link_libraries(test_plMD5Checksum gtest gtest_main) +target_link_libraries(test_plMD5Checksum ${OPENSSL_LIBRARIES}) +target_link_libraries(test_plMD5Checksum CoreLib pnEncryption) +add_test(NAME test_plMD5Checksum COMMAND test_plMD5Checksum) + +add_executable(test_plSHA1Checksum test_plSHA1Checksum.cpp) +target_link_libraries(test_plSHA1Checksum gtest gtest_main) +target_link_libraries(test_plSHA1Checksum ${OPENSSL_LIBRARIES}) +target_link_libraries(test_plSHA1Checksum CoreLib pnEncryption) +add_test(NAME test_plSHA1Checksum COMMAND test_plSHA1Checksum) diff --git a/Sources/Tests/NucleusTests/pnEncryptionTest/test_plMD5Checksum.cpp b/Sources/Tests/NucleusTests/pnEncryptionTest/test_plMD5Checksum.cpp new file mode 100644 index 00000000..5d2995e1 --- /dev/null +++ b/Sources/Tests/NucleusTests/pnEncryptionTest/test_plMD5Checksum.cpp @@ -0,0 +1,60 @@ +/*==LICENSE==* + +CyanWorlds.com Engine - MMOG client, server and tools +Copyright (C) 2011 Cyan Worlds, Inc. + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +Additional permissions under GNU GPL version 3 section 7 + +If you modify this Program, or any covered work, by linking or +combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, +NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent +JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK +(or a modified version of those libraries), +containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, +PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG +JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the +licensors of this Program grant you additional +permission to convey the resulting work. Corresponding Source for a +non-source form of such a combination shall include the source code for +the parts of OpenSSL and IJG JPEG Library used as well as that of the covered +work. + +You can contact Cyan Worlds, Inc. by email legal@cyan.com + or by snail mail at: + Cyan Worlds, Inc. + 14617 N Newport Hwy + Mead, WA 99021 + +*==LICENSE==*/ + +#include +#include +#include "pnEncryption/plChecksum.h" + +TEST(plMD5Checksum, ctor_with_buffer) +{ + const char* buffer = "Hello World"; + const char* hexStr = "b10a8db164e0754105b7a99be72e3fe5"; + const uint8_t value[16] = {0xb1, 0x0a, 0x8d, 0xb1, 0x64, 0xe0, 0x75, 0x41, + 0x05, 0xb7, 0xa9, 0x9b, 0xe7, 0x2e, 0x3f, 0xe5}; + + plMD5Checksum sum(strlen(buffer), (uint8_t*)buffer); + + EXPECT_EQ(sum.GetSize(), sizeof(value)); + EXPECT_EQ(memcmp(sum.GetValue(), value, 16), 0); + EXPECT_STREQ(sum.GetAsHexString(), hexStr); +} + diff --git a/Sources/Tests/NucleusTests/pnEncryptionTest/test_plSHA1Checksum.cpp b/Sources/Tests/NucleusTests/pnEncryptionTest/test_plSHA1Checksum.cpp new file mode 100644 index 00000000..2b9a2b2e --- /dev/null +++ b/Sources/Tests/NucleusTests/pnEncryptionTest/test_plSHA1Checksum.cpp @@ -0,0 +1,62 @@ +/*==LICENSE==* + +CyanWorlds.com Engine - MMOG client, server and tools +Copyright (C) 2011 Cyan Worlds, Inc. + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . + +Additional permissions under GNU GPL version 3 section 7 + +If you modify this Program, or any covered work, by linking or +combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK, +NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent +JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK +(or a modified version of those libraries), +containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA, +PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG +JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the +licensors of this Program grant you additional +permission to convey the resulting work. Corresponding Source for a +non-source form of such a combination shall include the source code for +the parts of OpenSSL and IJG JPEG Library used as well as that of the covered +work. + +You can contact Cyan Worlds, Inc. by email legal@cyan.com + or by snail mail at: + Cyan Worlds, Inc. + 14617 N Newport Hwy + Mead, WA 99021 + +*==LICENSE==*/ + +#include +#include +#include "pnEncryption/plChecksum.h" + +TEST(plSHA1Checksum, ctor_with_buffer) +{ + const char* buffer = "Hello World"; + const char* hexStr = "0a4d55a8d778e5022fab701977c5d840bbc486d0"; + const ShaDigest value = {0x0a, 0x4d, 0x55, 0xa8, + 0xd7, 0x78, 0xe5, 0x02, + 0x2f, 0xab, 0x70, 0x19, + 0x77, 0xc5, 0xd8, 0x40, + 0xbb, 0xc4, 0x86, 0xd0}; + + plSHA1Checksum sum(strlen(buffer), (uint8_t*)buffer); + + EXPECT_EQ(sum.GetSize(), sizeof(value)); + EXPECT_EQ(memcmp(sum.GetValue(), value, 20), 0); + EXPECT_STREQ(sum.GetAsHexString(), hexStr); +}