38#include "gtest/gtest.h"
41using ::testing::TestWithParam;
42using ::testing::Values;
53template <
size_t max_precalculated>
62class PrimeTableTestSmpl7 :
public TestWithParam<CreatePrimeTableFunc*> {
64 ~PrimeTableTestSmpl7()
override {
delete table_; }
65 void SetUp()
override { table_ = (*GetParam())(); }
66 void TearDown()
override {
75TEST_P(PrimeTableTestSmpl7, ReturnsFalseForNonPrimes) {
76 EXPECT_FALSE(table_->IsPrime(-5));
77 EXPECT_FALSE(table_->IsPrime(0));
78 EXPECT_FALSE(table_->IsPrime(1));
79 EXPECT_FALSE(table_->IsPrime(4));
80 EXPECT_FALSE(table_->IsPrime(6));
81 EXPECT_FALSE(table_->IsPrime(100));
84TEST_P(PrimeTableTestSmpl7, ReturnsTrueForPrimes) {
85 EXPECT_TRUE(table_->IsPrime(2));
86 EXPECT_TRUE(table_->IsPrime(3));
87 EXPECT_TRUE(table_->IsPrime(5));
88 EXPECT_TRUE(table_->IsPrime(7));
89 EXPECT_TRUE(table_->IsPrime(11));
90 EXPECT_TRUE(table_->IsPrime(131));
93TEST_P(PrimeTableTestSmpl7, CanGetNextPrime) {
94 EXPECT_EQ(2, table_->GetNextPrime(0));
95 EXPECT_EQ(3, table_->GetNextPrime(2));
96 EXPECT_EQ(5, table_->GetNextPrime(3));
97 EXPECT_EQ(7, table_->GetNextPrime(5));
98 EXPECT_EQ(11, table_->GetNextPrime(7));
99 EXPECT_EQ(131, table_->GetNextPrime(128));
109INSTANTIATE_TEST_SUITE_P(OnTheFlyAndPreCalculated, PrimeTableTestSmpl7,
110 Values(&CreateOnTheFlyPrimeTable,
111 &CreatePreCalculatedPrimeTable<1000>));