summaryrefslogtreecommitdiffstats
path: root/UnitTests
diff options
context:
space:
mode:
authorEgor Yusov <egor.yusov@gmail.com>2019-12-05 05:33:26 +0000
committerEgor Yusov <egor.yusov@gmail.com>2019-12-05 05:33:26 +0000
commit41e9a2eea3ea7a9a8e413d04ddf6c4132699f67f (patch)
tree42bbdf674bd7aa735b7b69c4b6f4d2fb6276cd75 /UnitTests
parentFixed few c++17 build issued; disabled AVX2 in release build (diff)
downloadDiligentCore-41e9a2eea3ea7a9a8e413d04ddf6c4132699f67f.tar.gz
DiligentCore-41e9a2eea3ea7a9a8e413d04ddf6c4132699f67f.zip
Added PlatformMisc and StringTools tests
Diffstat (limited to 'UnitTests')
-rw-r--r--UnitTests/CMakeLists.txt8
-rw-r--r--UnitTests/src/Common/StringToolsTest.cpp58
-rw-r--r--UnitTests/src/Platforms/PlatformMiscTest.cpp81
3 files changed, 142 insertions, 5 deletions
diff --git a/UnitTests/CMakeLists.txt b/UnitTests/CMakeLists.txt
index ed203451..780a9cc2 100644
--- a/UnitTests/CMakeLists.txt
+++ b/UnitTests/CMakeLists.txt
@@ -3,13 +3,11 @@ cmake_minimum_required (VERSION 3.6)
project(DiligentCoreTest)
file(GLOB COMMON_SOURCE src/Common/*)
-file(GLOB COMMON_INCLUDE include/Common/*)
-
file(GLOB GRAPHICS_ACCESSORIES_SOURCE src/GraphicsAccessories/*)
-file(GLOB GRAPHICS_ACCESSORIES_INCLUDE include/GraphicsAccessories/*)
+file(GLOB PLATFORMS_SOURCE src/Platforms/*)
-set(SOURCE ${COMMON_SOURCE} ${GRAPHICS_ACCESSORIES_SOURCE})
-set(INCLUDE ${COMMON_INCLUDE} ${GRAPHICS_ACCESSORIES_INCLUDE})
+set(SOURCE ${COMMON_SOURCE} ${GRAPHICS_ACCESSORIES_SOURCE} ${PLATFORMS_SOURCE})
+set(INCLUDE)
add_executable(DiligentCoreTest ${SOURCE} ${INCLUDE})
set_common_target_properties(DiligentCoreTest)
diff --git a/UnitTests/src/Common/StringToolsTest.cpp b/UnitTests/src/Common/StringToolsTest.cpp
new file mode 100644
index 00000000..2a9cd51c
--- /dev/null
+++ b/UnitTests/src/Common/StringToolsTest.cpp
@@ -0,0 +1,58 @@
+/* Copyright 2019 Diligent Graphics LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.
+ *
+ * In no event and under no legal theory, whether in tort (including negligence),
+ * contract, or otherwise, unless required by applicable law (such as deliberate
+ * and grossly negligent acts) or agreed to in writing, shall any Contributor be
+ * liable for any damages, including any direct, indirect, special, incidental,
+ * or consequential damages of any character arising as a result of this License or
+ * out of the use or inability to use the software (including but not limited to damages
+ * for loss of goodwill, work stoppage, computer failure or malfunction, or any and
+ * all other commercial damages or losses), even if such Contributor has been advised
+ * of the possibility of such damages.
+ */
+
+// EngineSandbox.cpp : Defines the entry point for the application.
+//
+
+#include "StringTools.h"
+
+#include "gtest/gtest.h"
+
+using namespace Diligent;
+
+namespace
+{
+
+TEST(Common_StringTools, StreqSuff)
+{
+ EXPECT_TRUE(StreqSuff("abc_def", "abc", "_def"));
+ EXPECT_TRUE(!StreqSuff("abc", "abc", "_def"));
+ EXPECT_TRUE(!StreqSuff("ab", "abc", "_def"));
+ EXPECT_TRUE(!StreqSuff("abc_de", "abc", "_def"));
+ EXPECT_TRUE(!StreqSuff("abc_def", "ab", "_def"));
+ EXPECT_TRUE(!StreqSuff("abc_def", "abd", "_def"));
+ EXPECT_TRUE(!StreqSuff("abc_def", "abc", "_de"));
+ EXPECT_TRUE(!StreqSuff("abc", "abc", "_def"));
+ EXPECT_TRUE(!StreqSuff("abc_def", "", "_def"));
+ EXPECT_TRUE(!StreqSuff("abc_def", "", ""));
+
+ EXPECT_TRUE(StreqSuff("abc", "abc", "_def", true));
+ EXPECT_TRUE(!StreqSuff("abc", "abc_", "_def", true));
+ EXPECT_TRUE(!StreqSuff("abc_", "abc", "_def", true));
+ EXPECT_TRUE(StreqSuff("abc", "abc", nullptr, true));
+ EXPECT_TRUE(StreqSuff("abc", "abc", nullptr, false));
+ EXPECT_TRUE(!StreqSuff("ab", "abc", nullptr, true));
+ EXPECT_TRUE(!StreqSuff("abc", "ab", nullptr, false));
+}
+
+} // namespace
diff --git a/UnitTests/src/Platforms/PlatformMiscTest.cpp b/UnitTests/src/Platforms/PlatformMiscTest.cpp
new file mode 100644
index 00000000..4760c613
--- /dev/null
+++ b/UnitTests/src/Platforms/PlatformMiscTest.cpp
@@ -0,0 +1,81 @@
+/* Copyright 2019 Diligent Graphics LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF ANY PROPRIETARY RIGHTS.
+ *
+ * In no event and under no legal theory, whether in tort (including negligence),
+ * contract, or otherwise, unless required by applicable law (such as deliberate
+ * and grossly negligent acts) or agreed to in writing, shall any Contributor be
+ * liable for any damages, including any direct, indirect, special, incidental,
+ * or consequential damages of any character arising as a result of this License or
+ * out of the use or inability to use the software (including but not limited to damages
+ * for loss of goodwill, work stoppage, computer failure or malfunction, or any and
+ * all other commercial damages or losses), even if such Contributor has been advised
+ * of the possibility of such damages.
+ */
+
+// EngineSandbox.cpp : Defines the entry point for the application.
+//
+
+#include "PlatformMisc.h"
+
+#include "gtest/gtest.h"
+
+using namespace Diligent;
+
+namespace
+{
+
+TEST(Platforms_PlatformMisc, GetMsbLsb)
+{
+ EXPECT_EQ(PlatformMisc::GetMSB(Uint32{0}), Uint32{32});
+ for (Uint32 i = 0; i < 32; ++i)
+ {
+ auto MSB = PlatformMisc::GetMSB((Uint32{1} << i) | 1);
+ EXPECT_EQ(MSB, i);
+ }
+
+ EXPECT_EQ(PlatformMisc::GetMSB(Uint64{0}), Uint64{64});
+ for (Uint32 i = 0; i < 64; ++i)
+ {
+ auto MSB = PlatformMisc::GetMSB((Uint64{1} << i) | 1);
+ EXPECT_EQ(MSB, i);
+ }
+
+ EXPECT_EQ(PlatformMisc::GetLSB(Uint32{0}), Uint32{32});
+ for (Uint32 i = 0; i < 32; ++i)
+ {
+ auto LSB = PlatformMisc::GetLSB((Uint32{1} << i) | (Uint32{1} << 31));
+ EXPECT_EQ(LSB, i);
+ }
+
+ EXPECT_EQ(PlatformMisc::GetLSB(Uint64{0}), Uint64{64});
+ for (Uint32 i = 0; i < 64; ++i)
+ {
+ auto LSB = PlatformMisc::GetLSB((Uint64{1} << i) | (Uint64{1} << 63));
+ EXPECT_EQ(LSB, i);
+ }
+}
+
+TEST(Platforms_PlatformMisc, CountOneBits)
+{
+ EXPECT_EQ(PlatformMisc::CountOneBits(Uint32{0}), Uint32{0});
+ EXPECT_EQ(PlatformMisc::CountOneBits(Uint64{0}), Uint64{0});
+ EXPECT_EQ(PlatformMisc::CountOneBits(Uint32{1}), Uint32{1});
+ EXPECT_EQ(PlatformMisc::CountOneBits(Uint64{1}), Uint64{1});
+ EXPECT_EQ(PlatformMisc::CountOneBits(Uint32{7}), Uint32{3});
+ EXPECT_EQ(PlatformMisc::CountOneBits(Uint64{7}), Uint64{3});
+ EXPECT_EQ(PlatformMisc::CountOneBits((Uint32{1} << 31) | (Uint32{1} << 15)), Uint32{2});
+ EXPECT_EQ(PlatformMisc::CountOneBits((Uint64{1} << 63) | (Uint32{1} << 31)), Uint64{2});
+ EXPECT_EQ(PlatformMisc::CountOneBits((Uint32{1} << 31) - 1), Uint32{31});
+ EXPECT_EQ(PlatformMisc::CountOneBits((Uint64{1} << 63) - 1), Uint64{63});
+}
+
+} // namespace