diff options
-rw-r--r-- | src/CompositeChat.cpp | 89 | ||||
-rw-r--r-- | tests/CMakeLists.txt | 1 | ||||
-rw-r--r-- | tests/CompositeChat/CMakeLists.txt | 47 | ||||
-rw-r--r-- | tests/CompositeChat/ClientHandle.cpp | 20 | ||||
-rw-r--r-- | tests/CompositeChat/CompositeChatTest.cpp | 112 |
5 files changed, 180 insertions, 89 deletions
diff --git a/src/CompositeChat.cpp b/src/CompositeChat.cpp index 82e3d09f2..d110d5908 100644 --- a/src/CompositeChat.cpp +++ b/src/CompositeChat.cpp @@ -6,95 +6,6 @@ #include "Globals.h" #include "CompositeChat.h" #include "ClientHandle.h" -#include "SelfTests.h" - - - - - -#ifdef SELF_TEST - -/** A simple self-test that verifies that the composite chat parser is working properly. */ -class SelfTest_CompositeChat -{ -public: - SelfTest_CompositeChat(void) - { - cSelfTests::Get().Register(cSelfTests::SelfTestFunction(&TestParser1), "CompositeChat parser test 1"); - cSelfTests::Get().Register(cSelfTests::SelfTestFunction(&TestParser2), "CompositeChat parser test 2"); - cSelfTests::Get().Register(cSelfTests::SelfTestFunction(&TestParser3), "CompositeChat parser test 3"); - cSelfTests::Get().Register(cSelfTests::SelfTestFunction(&TestParser4), "CompositeChat parser test 4"); - cSelfTests::Get().Register(cSelfTests::SelfTestFunction(&TestParser5), "CompositeChat parser test 5"); - } - - static void TestParser1(void) - { - cCompositeChat Msg; - Msg.ParseText("Testing @2color codes and http://links parser"); - const cCompositeChat::cParts & Parts = Msg.GetParts(); - assert_test(Parts.size() == 4); - assert_test(Parts[0]->m_PartType == cCompositeChat::ptText); - assert_test(Parts[1]->m_PartType == cCompositeChat::ptText); - assert_test(Parts[2]->m_PartType == cCompositeChat::ptUrl); - assert_test(Parts[3]->m_PartType == cCompositeChat::ptText); - assert_test(Parts[0]->m_Style == ""); - assert_test(Parts[1]->m_Style == "@2"); - assert_test(Parts[2]->m_Style == "@2"); - assert_test(Parts[3]->m_Style == "@2"); - } - - static void TestParser2(void) - { - cCompositeChat Msg; - Msg.ParseText("@3Advanced stuff: @5overriding color codes and http://links.with/@4color-in-them handling"); - const cCompositeChat::cParts & Parts = Msg.GetParts(); - assert_test(Parts.size() == 4); - assert_test(Parts[0]->m_PartType == cCompositeChat::ptText); - assert_test(Parts[1]->m_PartType == cCompositeChat::ptText); - assert_test(Parts[2]->m_PartType == cCompositeChat::ptUrl); - assert_test(Parts[3]->m_PartType == cCompositeChat::ptText); - assert_test(Parts[0]->m_Style == "@3"); - assert_test(Parts[1]->m_Style == "@5"); - assert_test(Parts[2]->m_Style == "@5"); - assert_test(Parts[3]->m_Style == "@5"); - } - - static void TestParser3(void) - { - cCompositeChat Msg; - Msg.ParseText("http://links.starting the text"); - const cCompositeChat::cParts & Parts = Msg.GetParts(); - assert_test(Parts.size() == 2); - assert_test(Parts[0]->m_PartType == cCompositeChat::ptUrl); - assert_test(Parts[1]->m_PartType == cCompositeChat::ptText); - assert_test(Parts[0]->m_Style == ""); - assert_test(Parts[1]->m_Style == ""); - } - - static void TestParser4(void) - { - cCompositeChat Msg; - Msg.ParseText("links finishing the text: http://some.server"); - const cCompositeChat::cParts & Parts = Msg.GetParts(); - assert_test(Parts.size() == 2); - assert_test(Parts[0]->m_PartType == cCompositeChat::ptText); - assert_test(Parts[1]->m_PartType == cCompositeChat::ptUrl); - assert_test(Parts[0]->m_Style == ""); - assert_test(Parts[1]->m_Style == ""); - } - - static void TestParser5(void) - { - cCompositeChat Msg; - Msg.ParseText("http://only.links"); - const cCompositeChat::cParts & Parts = Msg.GetParts(); - assert_test(Parts.size() == 1); - assert_test(Parts[0]->m_PartType == cCompositeChat::ptUrl); - assert_test(Parts[0]->m_Style == ""); - } - -} gTest; -#endif // SELF_TEST diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 2a85f7b3d..61f34d9fb 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -10,6 +10,7 @@ endif() add_subdirectory(ByteBuffer) add_subdirectory(ChunkData) +add_subdirectory(CompositeChat) add_subdirectory(HTTP) add_subdirectory(LoadablePieces) add_subdirectory(Network) diff --git a/tests/CompositeChat/CMakeLists.txt b/tests/CompositeChat/CMakeLists.txt new file mode 100644 index 000000000..e8120eff5 --- /dev/null +++ b/tests/CompositeChat/CMakeLists.txt @@ -0,0 +1,47 @@ +cmake_minimum_required (VERSION 2.6) + +enable_testing() +add_definitions(-DTEST_GLOBALS=1) + +include_directories(${CMAKE_CURRENT_SOURCE_DIR}) +include_directories(${CMAKE_SOURCE_DIR}/src/) +include_directories(${CMAKE_SOURCE_DIR}/lib/jsoncpp/include) + +add_definitions(-DTEST_GLOBALS=1) + +set (SHARED_SRCS + ${CMAKE_SOURCE_DIR}/src/CompositeChat.cpp + ${CMAKE_SOURCE_DIR}/src/OSSupport/StackTrace.cpp +) + +set (SHARED_HDRS + ${CMAKE_SOURCE_DIR}/src/CompositeChat.h + ${CMAKE_SOURCE_DIR}/src/OSSupport/StackTrace.h +) + +set (SRCS + CompositeChatTest.cpp + ClientHandle.cpp +) + +if (MSVC) + # Add the MSVC-specific LeakFinder / StackTracer sources: + list (APPEND SHARED_SRCS ${CMAKE_SOURCE_DIR}/src/LeakFinder.cpp ${CMAKE_SOURCE_DIR}/src/StackWalker.cpp) + list (APPEND SHARED_HDRS ${CMAKE_SOURCE_DIR}/src/LeakFinder.h ${CMAKE_SOURCE_DIR}/src/StackWalker.h) +endif() + +source_group("Shared" FILES ${SHARED_SRCS} ${SHARED_HDRS}) +source_group("Sources" FILES ${SRCS}) +add_executable(CompositeChat-exe ${SRCS} ${SHARED_SRCS} ${SHARED_HDRS}) +target_link_libraries(CompositeChat-exe jsoncpp_lib_static) +add_test(NAME CompositeChat-test COMMAND CompositeChat-exe) + + + + + +# Put the projects into solution folders (MSVC): +set_target_properties( + CompositeChat-exe + PROPERTIES FOLDER Tests +) diff --git a/tests/CompositeChat/ClientHandle.cpp b/tests/CompositeChat/ClientHandle.cpp new file mode 100644 index 000000000..e66b2237e --- /dev/null +++ b/tests/CompositeChat/ClientHandle.cpp @@ -0,0 +1,20 @@ + +// ClientHandle.cpp + +// Mocks the cClientHandle class used by the tests + +#include "Globals.h" +#include "ClientHandle.h" + + + + + +AString cClientHandle::FormatMessageType(bool a_ShouldShowPrefixes, eMessageType a_MsgType, const AString & a_AdditionalData) +{ + return "<FormatMessageType mocked>"; +} + + + + diff --git a/tests/CompositeChat/CompositeChatTest.cpp b/tests/CompositeChat/CompositeChatTest.cpp new file mode 100644 index 000000000..12d9de673 --- /dev/null +++ b/tests/CompositeChat/CompositeChatTest.cpp @@ -0,0 +1,112 @@ + +// CompositeChatTest.cpp + +// Implements the main app entrypoint for the cCompositeChat class test + +#include "Globals.h" +#include "CompositeChat.h" + + + + + +static void TestParser1(void) +{ + cCompositeChat Msg; + Msg.ParseText("Testing @2color codes and http://links parser"); + const cCompositeChat::cParts & Parts = Msg.GetParts(); + assert_test(Parts.size() == 4); + assert_test(Parts[0]->m_PartType == cCompositeChat::ptText); + assert_test(Parts[1]->m_PartType == cCompositeChat::ptText); + assert_test(Parts[2]->m_PartType == cCompositeChat::ptUrl); + assert_test(Parts[3]->m_PartType == cCompositeChat::ptText); + assert_test(Parts[0]->m_Style == ""); + assert_test(Parts[1]->m_Style == "@2"); + assert_test(Parts[2]->m_Style == "@2"); + assert_test(Parts[3]->m_Style == "@2"); +} + + + + + +static void TestParser2(void) +{ + cCompositeChat Msg; + Msg.ParseText("@3Advanced stuff: @5overriding color codes and http://links.with/@4color-in-them handling"); + const cCompositeChat::cParts & Parts = Msg.GetParts(); + assert_test(Parts.size() == 4); + assert_test(Parts[0]->m_PartType == cCompositeChat::ptText); + assert_test(Parts[1]->m_PartType == cCompositeChat::ptText); + assert_test(Parts[2]->m_PartType == cCompositeChat::ptUrl); + assert_test(Parts[3]->m_PartType == cCompositeChat::ptText); + assert_test(Parts[0]->m_Style == "@3"); + assert_test(Parts[1]->m_Style == "@5"); + assert_test(Parts[2]->m_Style == "@5"); + assert_test(Parts[3]->m_Style == "@5"); +} + + + + + +static void TestParser3(void) +{ + cCompositeChat Msg; + Msg.ParseText("http://links.starting the text"); + const cCompositeChat::cParts & Parts = Msg.GetParts(); + assert_test(Parts.size() == 2); + assert_test(Parts[0]->m_PartType == cCompositeChat::ptUrl); + assert_test(Parts[1]->m_PartType == cCompositeChat::ptText); + assert_test(Parts[0]->m_Style == ""); + assert_test(Parts[1]->m_Style == ""); +} + + + + + +static void TestParser4(void) +{ + cCompositeChat Msg; + Msg.ParseText("links finishing the text: http://some.server"); + const cCompositeChat::cParts & Parts = Msg.GetParts(); + assert_test(Parts.size() == 2); + assert_test(Parts[0]->m_PartType == cCompositeChat::ptText); + assert_test(Parts[1]->m_PartType == cCompositeChat::ptUrl); + assert_test(Parts[0]->m_Style == ""); + assert_test(Parts[1]->m_Style == ""); +} + + + + + +static void TestParser5(void) +{ + cCompositeChat Msg; + Msg.ParseText("http://only.links"); + const cCompositeChat::cParts & Parts = Msg.GetParts(); + assert_test(Parts.size() == 1); + assert_test(Parts[0]->m_PartType == cCompositeChat::ptUrl); + assert_test(Parts[0]->m_Style == ""); +} + + + + + +int main(int argc, char * argv[]) +{ + TestParser1(); + TestParser2(); + TestParser3(); + TestParser4(); + TestParser5(); + LOG("CompositeChat test finished."); +} + + + + + |