From 1c1b372decaa2fb7f9761c376f8b44d2e6e33c35 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Wed, 27 May 2020 22:07:38 +0200 Subject: Fix platform family checks (fixed pthreads on linux) --- src/Platform.cpp | 12 +----------- tests/src/platformTest.cpp | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 11 deletions(-) create mode 100644 tests/src/platformTest.cpp diff --git a/src/Platform.cpp b/src/Platform.cpp index 55c2188..5f9f9af 100644 --- a/src/Platform.cpp +++ b/src/Platform.cpp @@ -6,16 +6,6 @@ namespace sibs { static std::unordered_map platformNames; static bool platformNamesSet = false; - static int countSetBits(u64 value) - { - int count = 0; - while(value) - { - count += (value & 1ULL); - value >>= 1ULL; - } - return count; - } // Returns -1 if no bit is set static u64 getLeastSignificantBitSetPosition(u64 value) @@ -94,7 +84,7 @@ namespace sibs bool isSamePlatformFamily(Platform a, Platform b) { - return (a & b) == a; + return (a & b) == a || (b & a) == b; } bool isBaseForPlatform(Platform base, Platform platform) diff --git a/tests/src/platformTest.cpp b/tests/src/platformTest.cpp new file mode 100644 index 0000000..aecc3e4 --- /dev/null +++ b/tests/src/platformTest.cpp @@ -0,0 +1,14 @@ +#include +#include "../../include/Platform.hpp" + +using namespace sibs; + +TEST_CASE("platform same family") +{ + REQUIRE(isSamePlatformFamily(PLATFORM_LINUX, PLATFORM_LINUX_X86_64)); + REQUIRE(isSamePlatformFamily(PLATFORM_LINUX_X86_64, PLATFORM_LINUX)); + REQUIRE(!isSamePlatformFamily(PLATFORM_LINUX_X86_64, PLATFORM_MACOS)); + REQUIRE(!isSamePlatformFamily(PLATFORM_MACOS, PLATFORM_LINUX_X86_64)); + REQUIRE(!isSamePlatformFamily(PLATFORM_MACOS, PLATFORM_LINUX)); + REQUIRE(!isSamePlatformFamily(PLATFORM_LINUX, PLATFORM_MACOS)); +} -- cgit v1.2.3