9#ifndef DRYCHEM_COMMON_UTILITIES_LIBS_UTILITIES_TESTS_TESTTESTING_TESTPERFORMANCETESTING_HPP
10#define DRYCHEM_COMMON_UTILITIES_LIBS_UTILITIES_TESTS_TESTTESTING_TESTPERFORMANCETESTING_HPP
15#include <gtest/gtest.h>
19GTEST_TEST(testPerformanceTesting, timeAndInvokeReturnsAReturnTypeStruct)
23 std::size_t iterations {1'000};
27 ASSERT_TRUE(ret.
time >= 0);
28 ASSERT_EQ(ret.
result, 332'833'500ULL);
31GTEST_TEST(testPerformanceTesting, timeAndInvokeWithAVoidFunctionReturnsOnlyTheTime)
35 std::size_t iterations {1'000};
37 auto time = DryChem::timeAndInvoke(voidSumSquares, iterations);
39 ASSERT_TRUE(time >= 0);
42GTEST_TEST(testPerformanceTesting, timeAndInvokeWithAFunctorReturnsResultAndTime)
46 std::size_t iterations {1'000};
48 auto [result, time] = DryChem::timeAndInvoke(SumSquares(), iterations);
50 ASSERT_TRUE(time >= 0);
51 ASSERT_EQ(result, 332'833'500ULL);
54GTEST_TEST(testPerformanceTesting, timeAndInvokeWithAMemberFunctionReturnsResultAndTime)
58 std::size_t iterations {1'000};
59 MyClass myClass {iterations};
61 auto [result, time] = DryChem::timeAndInvoke(&MyClass::sumSquares, myClass);
63 ASSERT_TRUE(time >= 0);
64 ASSERT_EQ(result, 332'833'500ULL);
67GTEST_TEST(testPerformanceTesting, timeAndInvokeWithAPlainFunctionReturnsResultAndTime)
71 std::size_t iterations {1'000};
73 auto [result, time] = DryChem::timeAndInvoke(sumSquares, iterations);
75 ASSERT_TRUE(time >= 0);
76 ASSERT_EQ(result, 332'833'500ULL);
79GTEST_TEST(testPerformanceTesting, timeAndInvokeWithALambdaFunctionReturnsResultAndTime)
83 std::size_t iterations {1'000};
85 auto [result, time] = DryChem::timeAndInvoke([=]() {
return sumSquares(iterations); });
87 ASSERT_TRUE(time >= 0);
88 ASSERT_EQ(result, 332'833'500ULL);
Definition testingDetails.hpp:30
unsigned long long sumSquares(unsigned long long iter)
Definition testingDetails.hpp:48
void voidSumSquares(unsigned long long iter)
Definition testingDetails.hpp:58
Definition performanceTesting.hpp:33
std::invoke_result_t< F, TArgs... > result
Definition performanceTesting.hpp:34
std::chrono::microseconds::rep time
Definition performanceTesting.hpp:35
Definition testingDetails.hpp:17