35#include "gtest/gtest.h"
45PrimeTable* CreatePrimeTable<OnTheFlyPrimeTable>() {
50PrimeTable* CreatePrimeTable<PreCalculatedPrimeTable>() {
56class PrimeTableTest :
public testing::Test {
60 PrimeTableTest() : table_(CreatePrimeTable<T>()) {}
62 ~PrimeTableTest()
override {
delete table_; }
89typedef Types<OnTheFlyPrimeTable, PreCalculatedPrimeTable> Implementations;
95TYPED_TEST(PrimeTableTest, ReturnsFalseForNonPrimes) {
103 EXPECT_FALSE(this->table_->IsPrime(-5));
104 EXPECT_FALSE(this->table_->IsPrime(0));
105 EXPECT_FALSE(this->table_->IsPrime(1));
106 EXPECT_FALSE(this->table_->IsPrime(4));
107 EXPECT_FALSE(this->table_->IsPrime(6));
108 EXPECT_FALSE(this->table_->IsPrime(100));
111TYPED_TEST(PrimeTableTest, ReturnsTrueForPrimes) {
112 EXPECT_TRUE(this->table_->IsPrime(2));
113 EXPECT_TRUE(this->table_->IsPrime(3));
114 EXPECT_TRUE(this->table_->IsPrime(5));
115 EXPECT_TRUE(this->table_->IsPrime(7));
116 EXPECT_TRUE(this->table_->IsPrime(11));
117 EXPECT_TRUE(this->table_->IsPrime(131));
121 EXPECT_EQ(2, this->table_->GetNextPrime(0));
122 EXPECT_EQ(3, this->table_->GetNextPrime(2));
123 EXPECT_EQ(5, this->table_->GetNextPrime(3));
124 EXPECT_EQ(7, this->table_->GetNextPrime(5));
125 EXPECT_EQ(11, this->table_->GetNextPrime(7));
126 EXPECT_EQ(131, this->table_->GetNextPrime(128));
152class PrimeTableTest2 :
public PrimeTableTest<T> {};
161TYPED_TEST_P(PrimeTableTest2, ReturnsFalseForNonPrimes) {
162 EXPECT_FALSE(this->table_->IsPrime(-5));
163 EXPECT_FALSE(this->table_->IsPrime(0));
164 EXPECT_FALSE(this->table_->IsPrime(1));
165 EXPECT_FALSE(this->table_->IsPrime(4));
166 EXPECT_FALSE(this->table_->IsPrime(6));
167 EXPECT_FALSE(this->table_->IsPrime(100));
171 EXPECT_TRUE(this->table_->IsPrime(2));
172 EXPECT_TRUE(this->table_->IsPrime(3));
173 EXPECT_TRUE(this->table_->IsPrime(5));
174 EXPECT_TRUE(this->table_->IsPrime(7));
175 EXPECT_TRUE(this->table_->IsPrime(11));
176 EXPECT_TRUE(this->table_->IsPrime(131));
180 EXPECT_EQ(2, this->table_->GetNextPrime(0));
181 EXPECT_EQ(3, this->table_->GetNextPrime(2));
182 EXPECT_EQ(5, this->table_->GetNextPrime(3));
183 EXPECT_EQ(7, this->table_->GetNextPrime(5));
184 EXPECT_EQ(11, this->table_->GetNextPrime(7));
185 EXPECT_EQ(131, this->table_->GetNextPrime(128));
193 ReturnsFalseForNonPrimes, ReturnsTrueForPrimes, CanGetNextPrime);
208typedef Types<OnTheFlyPrimeTable, PreCalculatedPrimeTable>
209 PrimeTableImplementations;
212 PrimeTableImplementations);
TYPED_TEST_SUITE_P(ArrayTest)
REGISTER_TYPED_TEST_SUITE_P(ArrayTest, Default, Constructors, SubscriptOp, AssignmentOp, EqualityOp, Serialization)
TYPED_TEST_P(ArrayTest, Default)
TYPED_TEST_SUITE(ArrayToStringTest, ArrayTypes)
TYPED_TEST(ArrayToStringTest, ToString)
INSTANTIATE_TYPED_TEST_SUITE_P(FppTest, ArrayTest, ArrayTestImplementations)