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