diff options
| author | Egor Yusov <egor.yusov@gmail.com> | 2019-12-05 05:33:26 +0000 |
|---|---|---|
| committer | Egor Yusov <egor.yusov@gmail.com> | 2019-12-05 05:33:26 +0000 |
| commit | 41e9a2eea3ea7a9a8e413d04ddf6c4132699f67f (patch) | |
| tree | 42bbdf674bd7aa735b7b69c4b6f4d2fb6276cd75 /UnitTests | |
| parent | Fixed few c++17 build issued; disabled AVX2 in release build (diff) | |
| download | DiligentCore-41e9a2eea3ea7a9a8e413d04ddf6c4132699f67f.tar.gz DiligentCore-41e9a2eea3ea7a9a8e413d04ddf6c4132699f67f.zip | |
Added PlatformMisc and StringTools tests
Diffstat (limited to 'UnitTests')
| -rw-r--r-- | UnitTests/CMakeLists.txt | 8 | ||||
| -rw-r--r-- | UnitTests/src/Common/StringToolsTest.cpp | 58 | ||||
| -rw-r--r-- | UnitTests/src/Platforms/PlatformMiscTest.cpp | 81 |
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 |
