This commit is contained in:
misterg 2017-08-01 14:36:29 -04:00
parent 7755e5d241
commit f63e2a14a2
13 changed files with 326 additions and 28 deletions

2
.gitignore vendored
View File

@ -1,3 +1,5 @@
# Ignore CI build directory # Ignore CI build directory
build/ build/
xcuserdata xcuserdata
cmake-build-debug/
.idea/

292
BUILD.bazel Normal file
View File

@ -0,0 +1,292 @@
package(default_visibility = ["//visibility:public"])
licenses(["notice"])
config_setting(
name = "win",
values = {"cpu": "x64_windows_msvc"},
)
cc_library(
name = "gmock",
srcs = glob(
include = [
"googlemock/src/*.cc",
"googlemock/include/gmock/**/*.h",
],
exclude = [
"googlemock/src/gmock-all.cc",
],
),
hdrs = glob([
"googlemock/include/gmock/*.h",
]),
includes = [
"googlemock",
"googlemock/include",
],
linkopts = select({
":win": [],
"//conditions:default": ["-pthread"],
}),
deps = [
":gtest",
],
)
cc_library(
name = "gtest",
srcs = glob(
include = [
"googletest/src/*.cc",
"googletest/src/*.h",
"googletest/include/gtest/**/*.h",
],
exclude = [
"googletest/src/gtest-all.cc",
"googletest/src/gtest_main.cc",
],
),
hdrs = glob([
"googletest/include/gtest/*.h",
]),
copts = select(
{
":win": [],
"//conditions:default": ["-pthread"],
},
),
includes = [
"googletest",
"googletest/include",
],
linkopts = select({
":win": [],
"//conditions:default": [
"-pthread",
],
}),
)
cc_library(
name = "gtest_main",
srcs = glob(
include = [
"googletest/src/gtest_main.cc",
],
),
hdrs = glob([
"googletest/include/gtest/*.h",
"googletest/include/gtest/**/*.h",
]),
includes = [
"googletest",
"googletest/include",
],
deps = [":gmock"],
)
"""googletest own tests """
#on windows exclude gtest-tuple.h and gtest-tuple_test.cc
filegroup(
name = "win_only_test_files",
srcs = glob(
include = [
"googletest/test/gtest-*.cc",
"googletest/test/*.h",
"googletest/include/gtest/**/*.h",
],
exclude = [
"googletest/src/gtest-unittest-api_test.cc",
"googletest/include/gtest/internal/gtest-tuple.h",
"googletest/test/gtest-tuple_test.cc",
"googletest/src/gtest-all.cc",
"googletest/test/gtest_all_test.cc",
"googletest/test/gtest-death-test_ex_test.cc",
"googletest/test/gtest-listener_test.cc",
"googletest/test/gtest-unittest-api_test.cc",
"googletest/test/gtest-param-test_test.cc",
],
),
)
filegroup(
name = "default_test_files",
srcs = glob(
include = [
"googletest/test/gtest-*.cc",
"googletest/test/*.h",
"googletest/include/gtest/**/*.h",
],
exclude = [
"googletest/src/gtest-unittest-api_test.cc",
"googletest/src/gtest-all.cc",
"googletest/test/gtest_all_test.cc",
"googletest/test/gtest-death-test_ex_test.cc",
"googletest/test/gtest-listener_test.cc",
"googletest/test/gtest-unittest-api_test.cc",
"googletest/test/gtest-param-test_test.cc",
],
),
)
cc_test(
name = "gtest_all_test",
size = "small",
srcs = select({
":win": [":win_only_test_files"],
"//conditions:default": [":default_test_files"],
}),
copts = select({
":win": ["-DGTEST_USE_OWN_TR1_TUPLE=0"],
"//conditions:default": ["-DGTEST_USE_OWN_TR1_TUPLE=1"],
}),
includes = [
"googletest",
"googletest/include",
"googletest/include/internal",
"googletest/test",
],
linkopts = select({
":win": [],
"//conditions:default": [
"-pthread",
],
}),
deps = [":gtest_main"],
)
""" these googletest tests have their own main()"""
cc_test(
name = "gtest-death-test",
size = "small",
srcs = [
"googletest/test/gtest-death-test_ex_test.cc",
],
copts = [
"-DGTEST_ENABLE_CATCH_EXCEPTIONS_=1",
],
deps = [
":gtest_main",
],
)
cc_test(
name = "gtest-listener_test",
size = "small",
srcs = [
"googletest/test/gtest-listener_test.cc",
],
deps = [
":gtest_main",
],
)
cc_test(
name = "gtest-unittest-api_test",
size = "small",
srcs = [
"googletest/test/gtest-unittest-api_test.cc",
],
deps = [
":gtest_main",
],
)
cc_test(
name = "gtest-param-test_test",
size = "small",
srcs = [
"googletest/test/gtest-param-test2_test.cc",
"googletest/test/gtest-param-test_test.cc",
"googletest/test/gtest-param-test_test.h",
],
deps = [
":gtest_main",
],
)
""" googletest samples"""
cc_library(
name = "googletest_sample_lib",
srcs = [
"googletest/samples/sample1.cc",
"googletest/samples/sample2.cc",
"googletest/samples/sample4.cc",
],
hdrs = [
"googletest/samples/prime_tables.h",
"googletest/samples/sample1.h",
"googletest/samples/sample2.h",
"googletest/samples/sample3-inl.h",
"googletest/samples/sample4.h",
],
deps = ["gtest"],
)
cc_test(
name = "googletest_samples",
size = "small",
srcs = glob(
include = [
"googletest/samples/sample*.cc",
"googletest/samples/sample*.h",
],
exclude = [
"googletest/samples/sample1.cc",
"googletest/samples/sample2.cc",
"googletest/samples/sample4.cc",
"googletest/samples/prime_tables.h",
"googletest/samples/sample1.h",
"googletest/samples/sample2.h",
"googletest/samples/sample3-inl.h",
"googletest/samples/sample4.h",
"googletest/samples/sample9_unittest.cc",
"googletest/samples/sample10_unittest.cc",
],
),
includes = [
"googletest/samples",
],
deps = [
":googletest_sample_lib",
":gtest_main",
],
)
""" googletest samples 9 and 10 have their own main()"""
cc_test(
name = "googletest_sample9",
size = "small",
srcs = glob(
include = [
"googletest/samples/sample9_unittest.cc",
],
),
includes = [
"googletest/samples",
],
deps = [
":gtest",
],
)
cc_test(
name = "googletest_sample10",
size = "small",
srcs = glob(
include = [
"googletest/samples/sample10_unittest.cc",
],
),
includes = [
"googletest/samples",
],
deps = [
":gtest",
],
)

1
WORKSPACE Normal file
View File

@ -0,0 +1 @@
workspace(name = "com_google_googletest")

View File

@ -35,7 +35,7 @@
#include <stdlib.h> #include <stdlib.h>
#include "gtest/gtest.h" #include "gtest/gtest.h"
namespace {
using ::testing::EmptyTestEventListener; using ::testing::EmptyTestEventListener;
using ::testing::InitGoogleTest; using ::testing::InitGoogleTest;
using ::testing::Test; using ::testing::Test;
@ -142,3 +142,4 @@ int main(int argc, char **argv) {
} }
return RUN_ALL_TESTS(); return RUN_ALL_TESTS();
} }
} // namespace

View File

@ -46,7 +46,7 @@
#include <limits.h> #include <limits.h>
#include "sample1.h" #include "sample1.h"
#include "gtest/gtest.h" #include "gtest/gtest.h"
namespace {
// Step 2. Use the TEST macro to define your tests. // Step 2. Use the TEST macro to define your tests.
// //
@ -72,7 +72,6 @@
// //
// </TechnicalDetails> // </TechnicalDetails>
// Tests Factorial(). // Tests Factorial().
// Tests factorial of negative numbers. // Tests factorial of negative numbers.
@ -100,9 +99,7 @@ TEST(FactorialTest, Negative) {
} }
// Tests factorial of 0. // Tests factorial of 0.
TEST(FactorialTest, Zero) { TEST(FactorialTest, Zero) { EXPECT_EQ(1, Factorial(0)); }
EXPECT_EQ(1, Factorial(0));
}
// Tests factorial of positive numbers. // Tests factorial of positive numbers.
TEST(FactorialTest, Positive) { TEST(FactorialTest, Positive) {
@ -112,7 +109,6 @@ TEST(FactorialTest, Positive) {
EXPECT_EQ(40320, Factorial(8)); EXPECT_EQ(40320, Factorial(8));
} }
// Tests IsPrime() // Tests IsPrime()
// Tests negative input. // Tests negative input.
@ -139,6 +135,7 @@ TEST(IsPrimeTest, Positive) {
EXPECT_FALSE(IsPrime(6)); EXPECT_FALSE(IsPrime(6));
EXPECT_TRUE(IsPrime(23)); EXPECT_TRUE(IsPrime(23));
} }
} // namespace
// Step 3. Call RUN_ALL_TESTS() in main(). // Step 3. Call RUN_ALL_TESTS() in main().
// //

View File

@ -42,7 +42,7 @@
#include "sample2.h" #include "sample2.h"
#include "gtest/gtest.h" #include "gtest/gtest.h"
namespace {
// In this example, we test the MyString class (a simple string). // In this example, we test the MyString class (a simple string).
// Tests the default c'tor. // Tests the default c'tor.
@ -107,3 +107,4 @@ TEST(MyString, Set) {
s.Set(NULL); s.Set(NULL);
EXPECT_STREQ(NULL, s.c_string()); EXPECT_STREQ(NULL, s.c_string());
} }
} // namespace

View File

@ -67,7 +67,7 @@
#include "gtest/gtest.h" #include "gtest/gtest.h"
// To use a test fixture, derive a class from testing::Test. // To use a test fixture, derive a class from testing::Test.
class QueueTest : public testing::Test { class QueueTestSmpl3 : public testing::Test {
protected: // You should make the members protected s.t. they can be protected: // You should make the members protected s.t. they can be
// accessed from sub-classes. // accessed from sub-classes.
@ -120,13 +120,13 @@ class QueueTest : public testing::Test {
// instead of TEST. // instead of TEST.
// Tests the default c'tor. // Tests the default c'tor.
TEST_F(QueueTest, DefaultConstructor) { TEST_F(QueueTestSmpl3, DefaultConstructor) {
// You can access data in the test fixture here. // You can access data in the test fixture here.
EXPECT_EQ(0u, q0_.Size()); EXPECT_EQ(0u, q0_.Size());
} }
// Tests Dequeue(). // Tests Dequeue().
TEST_F(QueueTest, Dequeue) { TEST_F(QueueTestSmpl3, Dequeue) {
int * n = q0_.Dequeue(); int * n = q0_.Dequeue();
EXPECT_TRUE(n == NULL); EXPECT_TRUE(n == NULL);
@ -144,7 +144,7 @@ TEST_F(QueueTest, Dequeue) {
} }
// Tests the Queue::Map() function. // Tests the Queue::Map() function.
TEST_F(QueueTest, Map) { TEST_F(QueueTestSmpl3, Map) {
MapTester(&q0_); MapTester(&q0_);
MapTester(&q1_); MapTester(&q1_);
MapTester(&q2_); MapTester(&q2_);

View File

@ -31,7 +31,7 @@
#include "gtest/gtest.h" #include "gtest/gtest.h"
#include "sample4.h" #include "sample4.h"
namespace {
// Tests the Increment() method. // Tests the Increment() method.
TEST(Counter, Increment) { TEST(Counter, Increment) {
Counter c; Counter c;
@ -43,3 +43,4 @@ TEST(Counter, Increment) {
EXPECT_EQ(1, c.Increment()); EXPECT_EQ(1, c.Increment());
EXPECT_EQ(2, c.Increment()); EXPECT_EQ(2, c.Increment());
} }
} // namespace

View File

@ -49,7 +49,7 @@
#include "sample3-inl.h" #include "sample3-inl.h"
#include "gtest/gtest.h" #include "gtest/gtest.h"
#include "sample1.h" #include "sample1.h"
namespace {
// In this sample, we want to ensure that every test finishes within // In this sample, we want to ensure that every test finishes within
// ~5 seconds. If a test takes longer to run, we consider it a // ~5 seconds. If a test takes longer to run, we consider it a
// failure. // failure.
@ -191,7 +191,7 @@ TEST_F(QueueTest, Dequeue) {
EXPECT_EQ(1u, q2_.Size()); EXPECT_EQ(1u, q2_.Size());
delete n; delete n;
} }
} // namespace
// If necessary, you can derive further test fixtures from a derived // If necessary, you can derive further test fixtures from a derived
// fixture itself. For example, you can derive another fixture from // fixture itself. For example, you can derive another fixture from
// QueueTest. Google Test imposes no limit on how deep the hierarchy // QueueTest. Google Test imposes no limit on how deep the hierarchy

View File

@ -36,7 +36,7 @@
#include "prime_tables.h" #include "prime_tables.h"
#include "gtest/gtest.h" #include "gtest/gtest.h"
namespace {
// First, we define some factory functions for creating instances of // First, we define some factory functions for creating instances of
// the implementations. You may be able to skip this step if all your // the implementations. You may be able to skip this step if all your
// implementations can be constructed the same way. // implementations can be constructed the same way.
@ -222,3 +222,4 @@ INSTANTIATE_TYPED_TEST_CASE_P(OnTheFlyAndPreCalculated, // Instance name
PrimeTableImplementations); // Type list PrimeTableImplementations); // Type list
#endif // GTEST_HAS_TYPED_TEST_P #endif // GTEST_HAS_TYPED_TEST_P
} // namespace

View File

@ -39,7 +39,7 @@
#include "prime_tables.h" #include "prime_tables.h"
#include "gtest/gtest.h" #include "gtest/gtest.h"
namespace {
#if GTEST_HAS_PARAM_TEST #if GTEST_HAS_PARAM_TEST
using ::testing::TestWithParam; using ::testing::TestWithParam;
@ -65,9 +65,9 @@ PrimeTable* CreatePreCalculatedPrimeTable() {
// can refer to the test parameter by GetParam(). In this case, the test // can refer to the test parameter by GetParam(). In this case, the test
// parameter is a factory function which we call in fixture's SetUp() to // parameter is a factory function which we call in fixture's SetUp() to
// create and store an instance of PrimeTable. // create and store an instance of PrimeTable.
class PrimeTableTest : public TestWithParam<CreatePrimeTableFunc*> { class PrimeTableTestSmpl7 : public TestWithParam<CreatePrimeTableFunc*> {
public: public:
virtual ~PrimeTableTest() { delete table_; } virtual ~PrimeTableTestSmpl7() { delete table_; }
virtual void SetUp() { table_ = (*GetParam())(); } virtual void SetUp() { table_ = (*GetParam())(); }
virtual void TearDown() { virtual void TearDown() {
delete table_; delete table_;
@ -78,7 +78,7 @@ class PrimeTableTest : public TestWithParam<CreatePrimeTableFunc*> {
PrimeTable* table_; PrimeTable* table_;
}; };
TEST_P(PrimeTableTest, ReturnsFalseForNonPrimes) { TEST_P(PrimeTableTestSmpl7, ReturnsFalseForNonPrimes) {
EXPECT_FALSE(table_->IsPrime(-5)); EXPECT_FALSE(table_->IsPrime(-5));
EXPECT_FALSE(table_->IsPrime(0)); EXPECT_FALSE(table_->IsPrime(0));
EXPECT_FALSE(table_->IsPrime(1)); EXPECT_FALSE(table_->IsPrime(1));
@ -87,7 +87,7 @@ TEST_P(PrimeTableTest, ReturnsFalseForNonPrimes) {
EXPECT_FALSE(table_->IsPrime(100)); EXPECT_FALSE(table_->IsPrime(100));
} }
TEST_P(PrimeTableTest, ReturnsTrueForPrimes) { TEST_P(PrimeTableTestSmpl7, ReturnsTrueForPrimes) {
EXPECT_TRUE(table_->IsPrime(2)); EXPECT_TRUE(table_->IsPrime(2));
EXPECT_TRUE(table_->IsPrime(3)); EXPECT_TRUE(table_->IsPrime(3));
EXPECT_TRUE(table_->IsPrime(5)); EXPECT_TRUE(table_->IsPrime(5));
@ -96,7 +96,7 @@ TEST_P(PrimeTableTest, ReturnsTrueForPrimes) {
EXPECT_TRUE(table_->IsPrime(131)); EXPECT_TRUE(table_->IsPrime(131));
} }
TEST_P(PrimeTableTest, CanGetNextPrime) { TEST_P(PrimeTableTestSmpl7, CanGetNextPrime) {
EXPECT_EQ(2, table_->GetNextPrime(0)); EXPECT_EQ(2, table_->GetNextPrime(0));
EXPECT_EQ(3, table_->GetNextPrime(2)); EXPECT_EQ(3, table_->GetNextPrime(2));
EXPECT_EQ(5, table_->GetNextPrime(3)); EXPECT_EQ(5, table_->GetNextPrime(3));
@ -112,10 +112,9 @@ TEST_P(PrimeTableTest, CanGetNextPrime) {
// //
// Here, we instantiate our tests with a list of two PrimeTable object // Here, we instantiate our tests with a list of two PrimeTable object
// factory functions: // factory functions:
INSTANTIATE_TEST_CASE_P( INSTANTIATE_TEST_CASE_P(OnTheFlyAndPreCalculated, PrimeTableTestSmpl7,
OnTheFlyAndPreCalculated, Values(&CreateOnTheFlyPrimeTable,
PrimeTableTest, &CreatePreCalculatedPrimeTable<1000>));
Values(&CreateOnTheFlyPrimeTable, &CreatePreCalculatedPrimeTable<1000>));
#else #else
@ -128,3 +127,4 @@ INSTANTIATE_TEST_CASE_P(
TEST(DummyTest, ValueParameterizedTestsAreNotSupportedOnThisPlatform) {} TEST(DummyTest, ValueParameterizedTestsAreNotSupportedOnThisPlatform) {}
#endif // GTEST_HAS_PARAM_TEST #endif // GTEST_HAS_PARAM_TEST
}

View File

@ -37,7 +37,7 @@
#include "prime_tables.h" #include "prime_tables.h"
#include "gtest/gtest.h" #include "gtest/gtest.h"
namespace {
#if GTEST_HAS_COMBINE #if GTEST_HAS_COMBINE
// Suppose we want to introduce a new, improved implementation of PrimeTable // Suppose we want to introduce a new, improved implementation of PrimeTable
@ -171,3 +171,4 @@ INSTANTIATE_TEST_CASE_P(MeaningfulTestParameters,
TEST(DummyTest, CombineIsNotSupportedOnThisPlatform) {} TEST(DummyTest, CombineIsNotSupportedOnThisPlatform) {}
#endif // GTEST_HAS_COMBINE #endif // GTEST_HAS_COMBINE
}

View File

@ -35,7 +35,7 @@
#include <stdio.h> #include <stdio.h>
#include "gtest/gtest.h" #include "gtest/gtest.h"
namespace {
using ::testing::EmptyTestEventListener; using ::testing::EmptyTestEventListener;
using ::testing::InitGoogleTest; using ::testing::InitGoogleTest;
using ::testing::Test; using ::testing::Test;
@ -158,3 +158,4 @@ int main(int argc, char **argv) {
return ret_val; return ret_val;
} }
} // namespace