1 ///
2 /// \author John Farrier
3 ///
4 /// \copyright Copyright 2019 John Farrier
5 ///
6 /// Licensed under the Apache License, Version 2.0 (the "License");
7 /// you may not use this file except in compliance with the License.
8 /// You may obtain a copy of the License at
9 ///
10 /// http://www.apache.org/licenses/LICENSE-2.0
11 ///
12 /// Unless required by applicable law or agreed to in writing, software
13 /// distributed under the License is distributed on an "AS IS" BASIS,
14 /// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 /// See the License for the specific language governing permissions and
16 /// limitations under the License.
17 ///
18
19 #include <celero/Celero.h>
20 #include <celero/Experiment.h>
21 #include <celero/ExperimentResult.h>
22 #include <gtest/gtest.h>
23
24 const char* GroupNameString{"GroupName\0"};
25 const char* BenchmarkNameString = "BenchmarkName\0";
26 constexpr uint64_t Samples{0};
27 constexpr uint64_t Iterations{0};
28
29 // Build a class called "CeleroUserBenchmark_GroupName1_BenchmarkName1"
BENCHMARK(GroupName,BenchmarkName,Samples,Iterations)30 BENCHMARK(GroupName, BenchmarkName, Samples, Iterations){};
31
TEST(Celero,RegisterTest)32 TEST(Celero, RegisterTest)
33 {
34 std::shared_ptr<celero::Benchmark> benchmark;
35 EXPECT_NO_THROW(benchmark = celero::RegisterTest(nullptr, nullptr, 0, 0, 0, nullptr));
36 EXPECT_EQ(nullptr, benchmark);
37
38 EXPECT_NO_THROW(benchmark = celero::RegisterTest(GroupNameString, nullptr, 0, 0, 0, nullptr));
39 EXPECT_EQ(nullptr, benchmark);
40
41 EXPECT_NO_THROW(benchmark = celero::RegisterTest(GroupNameString, BenchmarkNameString, 0, 0, 0, nullptr));
42 EXPECT_NE(nullptr, benchmark);
43
44 auto experimentFactory = std::make_shared<::celero::GenericFactory<CeleroUserBenchmark_GroupName_BenchmarkName>>();
45 EXPECT_NO_THROW(benchmark = celero::RegisterTest(nullptr, nullptr, 0, 0, 0, experimentFactory));
46 EXPECT_EQ(nullptr, benchmark);
47
48 EXPECT_NO_THROW(benchmark = celero::RegisterTest(GroupNameString, nullptr, 0, 0, 0, experimentFactory));
49 EXPECT_EQ(nullptr, benchmark);
50
51 EXPECT_NO_THROW(benchmark = celero::RegisterTest(GroupNameString, BenchmarkNameString, 0, 0, 0, experimentFactory));
52 EXPECT_NE(nullptr, benchmark);
53 }
54
TEST(Celero,RegisterBaseline)55 TEST(Celero, RegisterBaseline)
56 {
57 std::shared_ptr<celero::Benchmark> benchmark;
58 EXPECT_NO_THROW(benchmark = celero::RegisterBaseline(nullptr, nullptr, 0, 0, 0, nullptr));
59 EXPECT_EQ(nullptr, benchmark);
60
61 EXPECT_NO_THROW(benchmark = celero::RegisterBaseline(GroupNameString, nullptr, 0, 0, 0, nullptr));
62 EXPECT_EQ(nullptr, benchmark);
63
64 EXPECT_NO_THROW(benchmark = celero::RegisterBaseline(GroupNameString, BenchmarkNameString, 0, 0, 0, nullptr));
65 EXPECT_NE(nullptr, benchmark);
66
67 auto experimentFactory = std::make_shared<::celero::GenericFactory<CeleroUserBenchmark_GroupName_BenchmarkName>>();
68 EXPECT_NO_THROW(benchmark = celero::RegisterBaseline(nullptr, nullptr, 0, 0, 0, experimentFactory));
69 EXPECT_EQ(nullptr, benchmark);
70
71 EXPECT_NO_THROW(benchmark = celero::RegisterBaseline(GroupNameString, nullptr, 0, 0, 0, experimentFactory));
72 EXPECT_EQ(nullptr, benchmark);
73
74 EXPECT_NO_THROW(benchmark = celero::RegisterBaseline(GroupNameString, BenchmarkNameString, 0, 0, 0, experimentFactory));
75 EXPECT_NE(nullptr, benchmark);
76 }
77
TEST(Celero,BuildDistribution)78 TEST(Celero, BuildDistribution)
79 {
80 EXPECT_NO_THROW(celero::BuildDistribution(0, 0));
81
82 const auto dist = celero::BuildDistribution(10, 10);
83 EXPECT_EQ(size_t(10), dist.size());
84 }
85