From b579ca4985ee81248289fff9a7876322b660bb59 Mon Sep 17 00:00:00 2001 From: Louis Langholtz Date: Mon, 6 Feb 2023 10:17:56 -0700 Subject: [PATCH] Updates unit tests that were failing on Apple M2 Silicon Fix for issue #436. --- UnitTests/World.cpp | 17 +++++++++++++++++ UnitTests/functional.cpp | 14 ++++---------- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/UnitTests/World.cpp b/UnitTests/World.cpp index 14752f4590..908cf03bf7 100644 --- a/UnitTests/World.cpp +++ b/UnitTests/World.cpp @@ -2793,6 +2793,16 @@ TEST(World_Longer, TilesComesToRest) if (firstStepWithZeroMoved) { EXPECT_EQ(*firstStepWithZeroMoved, 1800u); } +#elif defined(__arm64__) // At least for Apple Silicon + EXPECT_GE(world->GetContactRange(), 1447u); + EXPECT_LE(world->GetContactRange(), 1451u); + EXPECT_GE(totalBodiesSlept, 667u); + EXPECT_LE(totalBodiesSlept, 670u); + EXPECT_TRUE(firstStepWithZeroMoved); + if (firstStepWithZeroMoved) { + EXPECT_GE(*firstStepWithZeroMoved, 1798u); + EXPECT_LE(*firstStepWithZeroMoved, 1812u); + } #else // unrecognized arch; just check results are within range of others EXPECT_GE(world->GetContactRange(), 1447u); EXPECT_LE(world->GetContactRange(), 1450u); @@ -2952,6 +2962,13 @@ TEST(World_Longer, TilesComesToRest) EXPECT_EQ(sumRegVelIters, 46981ul); EXPECT_EQ(sumToiPosIters, 43684ul); EXPECT_EQ(sumToiVelIters, 112778ul); +#elif defined(__arm64__) + // At least for Apple Silicon... + EXPECT_EQ(numSteps, 1799ul); + EXPECT_EQ(sumRegPosIters, 36512ul); + EXPECT_EQ(sumRegVelIters, 46940ul); + EXPECT_EQ(sumToiPosIters, 44021ul); + EXPECT_EQ(sumToiVelIters, 113137ul); #else // These will likely fail and need to be tweaked for the particular hardware... EXPECT_EQ(numSteps, 1814ul); diff --git a/UnitTests/functional.cpp b/UnitTests/functional.cpp index ab8d8bd1b5..f10b699c49 100644 --- a/UnitTests/functional.cpp +++ b/UnitTests/functional.cpp @@ -24,20 +24,14 @@ TEST(functional, FunctionSize) { #ifdef __APPLE__ +#if defined(__arm64__) + EXPECT_EQ(sizeof(std::function), std::size_t(32)); +#else EXPECT_EQ(sizeof(std::function), std::size_t(48)); - EXPECT_EQ(sizeof(std::function), std::size_t(48)); - EXPECT_EQ(sizeof(std::function), std::size_t(48)); - EXPECT_EQ(sizeof(std::function), std::size_t(48)); - EXPECT_EQ(sizeof(std::function), std::size_t(48)); - EXPECT_EQ(sizeof(std::function), std::size_t(48)); +#endif #endif #ifdef __linux__ EXPECT_EQ(sizeof(std::function), std::size_t(32)); - EXPECT_EQ(sizeof(std::function), std::size_t(32)); - EXPECT_EQ(sizeof(std::function), std::size_t(32)); - EXPECT_EQ(sizeof(std::function), std::size_t(32)); - EXPECT_EQ(sizeof(std::function), std::size_t(32)); - EXPECT_EQ(sizeof(std::function), std::size_t(32)); #endif }