summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpeterbell10 <peterbell10@live.co.uk>2017-09-11 23:17:51 +0200
committerMattes D <github@xoft.cz>2017-09-11 23:17:51 +0200
commit642fc239e2fc4524c47e5adba405bbdfcb7d0239 (patch)
tree34781378449fef884cac3871e228b99d0347b40d
parentFix crash for players out of the world. Fixes #4006 (#4007) (diff)
downloadcuberite-642fc239e2fc4524c47e5adba405bbdfcb7d0239.tar
cuberite-642fc239e2fc4524c47e5adba405bbdfcb7d0239.tar.gz
cuberite-642fc239e2fc4524c47e5adba405bbdfcb7d0239.tar.bz2
cuberite-642fc239e2fc4524c47e5adba405bbdfcb7d0239.tar.lz
cuberite-642fc239e2fc4524c47e5adba405bbdfcb7d0239.tar.xz
cuberite-642fc239e2fc4524c47e5adba405bbdfcb7d0239.tar.zst
cuberite-642fc239e2fc4524c47e5adba405bbdfcb7d0239.zip
-rw-r--r--tests/CMakeLists.txt1
-rw-r--r--tests/UUID/CMakeLists.txt35
-rw-r--r--tests/UUID/UUIDTest.cpp132
3 files changed, 168 insertions, 0 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 59a62e1bb..eba4bc4c8 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -15,3 +15,4 @@ add_subdirectory(LuaThreadStress)
add_subdirectory(Network)
add_subdirectory(OSSupport)
add_subdirectory(SchematicFileSerializer)
+add_subdirectory(UUID)
diff --git a/tests/UUID/CMakeLists.txt b/tests/UUID/CMakeLists.txt
new file mode 100644
index 000000000..72746d10d
--- /dev/null
+++ b/tests/UUID/CMakeLists.txt
@@ -0,0 +1,35 @@
+enable_testing()
+
+set (SHARED_SRCS
+ ${CMAKE_SOURCE_DIR}/src/UUID.cpp
+ ${CMAKE_SOURCE_DIR}/src/StringUtils.cpp
+)
+
+set (SHARED_HDRS
+ ${CMAKE_SOURCE_DIR}/src/UUID.h
+ ${CMAKE_SOURCE_DIR}/src/StringUtils.h
+)
+
+set (SRCS
+ UUIDTest.cpp
+)
+
+source_group("Shared" FILES ${SHARED_SRCS} ${SHARED_HDRS})
+source_group("Sources" FILES ${SRCS})
+
+add_executable(UUIDTest ${SRCS} ${SHARED_SRCS} ${SHARED_HDRS})
+target_link_libraries(UUIDTest mbedcrypto)
+target_compile_definitions(UUIDTest PRIVATE TEST_GLOBALS=1)
+target_include_directories(UUIDTest PRIVATE
+ ${CMAKE_SOURCE_DIR}/src/
+ ${CMAKE_SOURCE_DIR}/lib/mbedtls/include
+)
+
+add_test(NAME UUID-test COMMAND UUIDTest)
+
+
+# Put the projects into solution folders (MSVC):
+set_target_properties(
+ UUIDTest
+ PROPERTIES FOLDER Tests
+)
diff --git a/tests/UUID/UUIDTest.cpp b/tests/UUID/UUIDTest.cpp
new file mode 100644
index 000000000..abd9db8df
--- /dev/null
+++ b/tests/UUID/UUIDTest.cpp
@@ -0,0 +1,132 @@
+
+// UUIDTest.cpp
+
+#include "Globals.h"
+#include "UUID.h"
+
+#include <numeric> // for std::iota
+
+
+/** Test that FromString -> ToShortString preserves the original value for short UUIDs. */
+static void UUIDFromStringToShortString()
+{
+ const char TestStrings[][33]{
+ "0123456789abcdef0123456789ABCDEF",
+ "d188b2648cc311e7bb31be2e44b06b34",
+ "e760d270d8b34288b895d9f78a31e083",
+ "7052f2f2594246abb8e3fed602158870",
+ "7f14d4b60cd84ba7885c8301b67ce891",
+ "57be7039250548b590af272291fabcfa"
+ };
+
+ for (auto TestString : TestStrings)
+ {
+ cUUID UUID;
+ assert_test(UUID.FromString(TestString));
+ auto ResultString = UUID.ToShortString();
+ // Result should be equivalent to original
+ assert_test(NoCaseCompare(ResultString, TestString) == 0);
+ // And should be all lower case
+ assert_test(ResultString == StrToLower(ResultString));
+ }
+}
+
+
+
+
+
+/** Test that FromString -> ToLongString preserves the original value for long UUIDs. */
+static void UUIDFromStringToLongString()
+{
+ const char TestStrings[][37]{
+ "01234567-89ab-cdef-0123-456789ABCDEF",
+ "d188b264-8cc3-11e7-bb31-be2e44b06b34",
+ "e760d270-d8b3-4288-b895-d9f78a31e083",
+ "7052f2f2-5942-46ab-b8e3-fed602158870",
+ "7f14d4b6-0cd8-4ba7-885c-8301b67ce891",
+ "57be7039-2505-48b5-90af-272291fabcfa"
+ };
+
+ for (auto TestString : TestStrings)
+ {
+ cUUID UUID;
+ assert_test(UUID.FromString(TestString));
+ auto ResultString = UUID.ToLongString();
+ // Result should be equivalent to original
+ assert_test(NoCaseCompare(ResultString, TestString) == 0);
+ // And should be all lower case
+ assert_test(ResultString == StrToLower(ResultString));
+ }
+}
+
+
+
+
+
+/** Test that FromRaw -> ToRaw preserves the original value. */
+static void UUIDFromRawToRaw()
+{
+ std::array<Byte, 16> TestData[16]{};
+ // Fill test data with all values 0 - 255
+ for (int i = 0; i != 16; ++i)
+ {
+ std::iota(begin(TestData[i]), end(TestData[i]), i * 16);
+ }
+
+ for (const auto & TestRaw : TestData)
+ {
+ cUUID UUID;
+ UUID.FromRaw(TestRaw);
+ auto ResultRaw = UUID.ToRaw();
+ assert_test(ResultRaw == TestRaw);
+ }
+}
+
+
+
+
+
+/** Test that IsNil correctly identifies nil UUIDs. */
+static void UUIDNil()
+{
+ const auto NilString = "00000000-0000-0000-0000-000000000000";
+ const auto NonNilString = "e760d270-d8b3-4288-b895-d9f78a31e083";
+
+ {
+ cUUID UUID;
+ assert_test(UUID.FromString(NilString));
+ assert_test(UUID.IsNil());
+ }
+ {
+ cUUID UUID;
+ assert_test(UUID.FromString(NonNilString));
+ assert_test(!UUID.IsNil());
+ }
+}
+
+
+
+
+
+int main(int argc, char * argv[])
+{
+ LOG("UUID tests started");
+
+ LOG("Testing short string UUIDs");
+ UUIDFromStringToShortString();
+
+ LOG("Testing long strings UUIDs");
+ UUIDFromStringToLongString();
+
+ LOG("Testing raw UUIDs");
+ UUIDFromRawToRaw();
+
+ LOG("Testing nil UUIDs");
+ UUIDNil();
+
+ LOG("UUID tests finished");
+}
+
+
+
+