diff options
Diffstat (limited to 'tests/ByteBuffer')
-rw-r--r-- | tests/ByteBuffer/ByteBufferTest.cpp | 88 | ||||
-rw-r--r-- | tests/ByteBuffer/CMakeLists.txt | 46 |
2 files changed, 134 insertions, 0 deletions
diff --git a/tests/ByteBuffer/ByteBufferTest.cpp b/tests/ByteBuffer/ByteBufferTest.cpp new file mode 100644 index 000000000..ddfe9e1d2 --- /dev/null +++ b/tests/ByteBuffer/ByteBufferTest.cpp @@ -0,0 +1,88 @@ + +// ByteBufferTest.cpp + +// Implements the main app entrypoint for the cByteBuffer class test + +#include "Globals.h" +#include "ByteBuffer.h" + + + + + +static void TestRead(void) +{ + cByteBuffer buf(50); + buf.Write("\x05\xac\x02\x00", 4); + UInt32 v1; + assert_test(buf.ReadVarInt(v1) && (v1 == 5)); + UInt32 v2; + assert_test(buf.ReadVarInt(v2) && (v2 == 300)); + UInt32 v3; + assert_test(buf.ReadVarInt(v3) && (v3 == 0)); +} + + + + + +static void TestWrite(void) +{ + cByteBuffer buf(50); + buf.WriteVarInt32(5); + buf.WriteVarInt32(300); + buf.WriteVarInt32(0); + AString All; + buf.ReadAll(All); + assert_test(All.size() == 4); + assert_test(memcmp(All.data(), "\x05\xac\x02\x00", All.size()) == 0); +} + + + + + +static void TestWrap(void) +{ + cByteBuffer buf(3); + for (int i = 0; i < 1000; i++) + { + size_t FreeSpace = buf.GetFreeSpace(); + assert_test(buf.GetReadableSpace() == 0); + assert_test(FreeSpace > 0); + assert_test(buf.Write("a", 1)); + assert_test(buf.CanReadBytes(1)); + assert_test(buf.GetReadableSpace() == 1); + UInt8 v = 0; + assert_test(buf.ReadBEUInt8(v)); + assert_test(v == 'a'); + assert_test(buf.GetReadableSpace() == 0); + buf.CommitRead(); + assert_test(buf.GetFreeSpace() == FreeSpace); // We're back to normal + } +} + + + + + +int main(int argc, char * argv[]) +{ + LOGD("Test started"); + + LOGD("Testing reads"); + TestRead(); + + LOGD("Testing writes"); + TestWrite(); + + LOGD("Testing wraps"); + TestWrap(); + + LOG("ByteBuffer test finished."); +} + + + + + diff --git a/tests/ByteBuffer/CMakeLists.txt b/tests/ByteBuffer/CMakeLists.txt new file mode 100644 index 000000000..5c82d25d9 --- /dev/null +++ b/tests/ByteBuffer/CMakeLists.txt @@ -0,0 +1,46 @@ +cmake_minimum_required (VERSION 2.6) + +enable_testing() +add_definitions(-DTEST_GLOBALS=1) + +include_directories(${CMAKE_SOURCE_DIR}/src/) + +add_definitions(-DTEST_GLOBALS=1) + +set (SHARED_SRCS + ${CMAKE_SOURCE_DIR}/src/ByteBuffer.cpp + ${CMAKE_SOURCE_DIR}/src/OSSupport/StackTrace.cpp +) + +set (SHARED_HDRS + ${CMAKE_SOURCE_DIR}/src/ByteBuffer.h + ${CMAKE_SOURCE_DIR}/src/OSSupport/StackTrace.h +) + +set (SRCS + ByteBufferTest.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(ByteBuffer-exe ${SRCS} ${SHARED_SRCS} ${SHARED_HDRS}) +if (WIN32) + target_link_libraries(ByteBuffer-exe ws2_32) +endif() +add_test(NAME ByteBuffer-test COMMAND ByteBuffer-exe) + + + + + +# Put the projects into solution folders (MSVC): +set_target_properties( + ByteBuffer-exe + PROPERTIES FOLDER Tests +) |