gtest-unittest-api_test.cc revision fbaaef999ba563838ebd00874ed8a1c01fbf286d
1fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// Copyright 2009 Google Inc. All rights reserved. 2fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// 3fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// Redistribution and use in source and binary forms, with or without 4fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// modification, are permitted provided that the following conditions are 5fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// met: 6fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// 7fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// * Redistributions of source code must retain the above copyright 8fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// notice, this list of conditions and the following disclaimer. 9fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// * Redistributions in binary form must reproduce the above 10fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// copyright notice, this list of conditions and the following disclaimer 11fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// in the documentation and/or other materials provided with the 12fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// distribution. 13fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// * Neither the name of Google Inc. nor the names of its 14fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// contributors may be used to endorse or promote products derived from 15fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// this software without specific prior written permission. 16fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// 17fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 18fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 19fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 20fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 21fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// 29fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// Author: vladl@google.com (Vlad Losev) 30fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// 31fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// The Google C++ Testing Framework (Google Test) 32fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// 33fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// This file contains tests verifying correctness of data provided via 34fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// UnitTest's public methods. 35fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 36fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <gtest/gtest.h> 37fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 38fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <string.h> // For strcmp. 39fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#include <algorithm> 40fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 41fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleusing ::testing::AddGlobalTestEnvironment; 42fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleusing ::testing::Environment; 43fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleusing ::testing::InitGoogleTest; 44fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleusing ::testing::Test; 45fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleusing ::testing::TestInfo; 46fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleusing ::testing::TestPartResult; 47fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleusing ::testing::UnitTest; 48fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleusing ::testing::internal::TestCase; 49fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleusing ::testing::internal::TestProperty; 50fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 51fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if GTEST_HAS_TYPED_TEST 52fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleusing ::testing::Types; 53fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleusing ::testing::internal::GetTypeName; 54fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleusing ::testing::internal::String; 55fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif // GTEST_HAS_TYPED_TEST 56fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 57fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillenamespace testing { 58fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillenamespace internal { 59fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 60fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <typename T> 61fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct LessByName { 62fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville bool operator()(const T* a, const T* b) { 63fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return strcmp(a->name(), b->name()) < 0; 64fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 65fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 66fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 67fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass UnitTestAccessor { 68fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 69fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville // Returns the array of pointers to all test cases sorted by the test case 70fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville // name. The caller is responsible for deleting the array. 71fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static TestCase const** const GetSortedTestCases() { 72fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville UnitTest* unit_test = UnitTest::GetInstance(); 73fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville TestCase const** const test_cases = 74fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville new const TestCase*[unit_test->total_test_case_count()]; 75fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 76fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for (int i = 0; i < unit_test->total_test_case_count(); ++i) 77fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test_cases[i] = unit_test->GetTestCase(i); 78fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 79fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville std::sort(test_cases, 80fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test_cases + unit_test->total_test_case_count(), 81fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville LessByName<TestCase>()); 82fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return test_cases; 83fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 84fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 85fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville // Returns the test case by its name. The caller doesn't own the returned 86fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville // pointer. 87fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static const TestCase* FindTestCase(const char* name) { 88fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville UnitTest* unit_test = UnitTest::GetInstance(); 89fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for (int i = 0; i < unit_test->total_test_case_count(); ++i) { 90fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const TestCase* test_case = unit_test->GetTestCase(i); 91fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (0 == strcmp(test_case->name(), name)) 92fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return test_case; 93fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 94fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return NULL; 95fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 96fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 97fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville // Returns the array of pointers to all tests in a particular test case 98fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville // sorted by the test name. The caller is responsible for deleting the 99fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville // array. 100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static TestInfo const** const GetSortedTests(const TestCase* test_case) { 101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville TestInfo const** const tests = 102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville new const TestInfo*[test_case->total_test_count()]; 103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for (int i = 0; i < test_case->total_test_count(); ++i) 105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tests[i] = test_case->GetTestInfo(i); 106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville std::sort(tests, 108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tests + test_case->total_test_count(), 109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville LessByName<TestInfo>()); 110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return tests; 111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// TODO(vladl@google.com): Put tests into the internal namespace after 115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// UnitTest methods are published. 116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} // namespace internal 117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleusing internal::UnitTestAccessor; 119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if GTEST_HAS_TYPED_TEST 121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <typename T> class TestCaseWithCommentTest : public Test {}; 122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleTYPED_TEST_CASE(TestCaseWithCommentTest, Types<int>); 123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleTYPED_TEST(TestCaseWithCommentTest, Dummy) {} 124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleconst int kTypedTestCases = 1; 126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleconst int kTypedTests = 1; 127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleString GetExpectedTestCaseComment() { 129fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Message comment; 130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville comment << "TypeParam = " << GetTypeName<int>().c_str(); 131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return comment.GetString(); 132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#else 134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleconst int kTypedTestCases = 0; 135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleconst int kTypedTests = 0; 136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif // GTEST_HAS_TYPED_TEST 137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// We can only test the accessors that do not change value while tests run. 139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// Since tests can be run in any order, the values the accessors that track 140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// test execution (such as failed_test_count) can not be predicted. 141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleTEST(ApiTest, UnitTestImmutableAccessorsWork) { 142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville UnitTest* unit_test = UnitTest::GetInstance(); 143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ASSERT_EQ(2 + kTypedTestCases, unit_test->total_test_case_count()); 145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(1 + kTypedTestCases, unit_test->test_case_to_run_count()); 146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(2, unit_test->disabled_test_count()); 147fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(5 + kTypedTests, unit_test->total_test_count()); 148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(3 + kTypedTests, unit_test->test_to_run_count()); 149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const TestCase** const test_cases = UnitTestAccessor::GetSortedTestCases(); 151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("ApiTest", test_cases[0]->name()); 153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("DISABLED_Test", test_cases[1]->name()); 154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if GTEST_HAS_TYPED_TEST 155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("TestCaseWithCommentTest/0", test_cases[2]->name()); 156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif // GTEST_HAS_TYPED_TEST 157fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville delete[] test_cases; 159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville // The following lines initiate actions to verify certain methods in 161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville // FinalSuccessChecker::TearDown. 162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville // Records a test property to verify TestResult::GetTestProperty(). 164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville RecordProperty("key", "value"); 165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleTEST(ApiTest, TestCaseImmutableAccessorsWork) { 168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const TestCase* test_case = UnitTestAccessor::FindTestCase("ApiTest"); 169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ASSERT_TRUE(test_case != NULL); 170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("ApiTest", test_case->name()); 172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", test_case->comment()); 173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(test_case->should_run()); 174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(1, test_case->disabled_test_count()); 175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(3, test_case->test_to_run_count()); 176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ASSERT_EQ(4, test_case->total_test_count()); 177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const TestInfo** tests = UnitTestAccessor::GetSortedTests(test_case); 179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("DISABLED_Dummy1", tests[0]->name()); 181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("ApiTest", tests[0]->test_case_name()); 182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[0]->comment()); 183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[0]->test_case_comment()); 184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_FALSE(tests[0]->should_run()); 185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("TestCaseDisabledAccessorsWork", tests[1]->name()); 187fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("ApiTest", tests[1]->test_case_name()); 188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[1]->comment()); 189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[1]->test_case_comment()); 190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[1]->should_run()); 191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("TestCaseImmutableAccessorsWork", tests[2]->name()); 193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("ApiTest", tests[2]->test_case_name()); 194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[2]->comment()); 195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[2]->test_case_comment()); 196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[2]->should_run()); 197fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("UnitTestImmutableAccessorsWork", tests[3]->name()); 199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("ApiTest", tests[3]->test_case_name()); 200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[3]->comment()); 201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[3]->test_case_comment()); 202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[3]->should_run()); 203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville delete[] tests; 205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tests = NULL; 206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if GTEST_HAS_TYPED_TEST 208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test_case = UnitTestAccessor::FindTestCase("TestCaseWithCommentTest/0"); 209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ASSERT_TRUE(test_case != NULL); 210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 211fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("TestCaseWithCommentTest/0", test_case->name()); 212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ(GetExpectedTestCaseComment().c_str(), test_case->comment()); 213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(test_case->should_run()); 214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, test_case->disabled_test_count()); 215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(1, test_case->test_to_run_count()); 216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ASSERT_EQ(1, test_case->total_test_count()); 217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tests = UnitTestAccessor::GetSortedTests(test_case); 219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("Dummy", tests[0]->name()); 221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("TestCaseWithCommentTest/0", tests[0]->test_case_name()); 222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[0]->comment()); 223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ(GetExpectedTestCaseComment().c_str(), 224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tests[0]->test_case_comment()); 225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[0]->should_run()); 226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville delete[] tests; 228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif // GTEST_HAS_TYPED_TEST 229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleTEST(ApiTest, TestCaseDisabledAccessorsWork) { 232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const TestCase* test_case = UnitTestAccessor::FindTestCase("DISABLED_Test"); 233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ASSERT_TRUE(test_case != NULL); 234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("DISABLED_Test", test_case->name()); 236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", test_case->comment()); 237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_FALSE(test_case->should_run()); 238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(1, test_case->disabled_test_count()); 239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, test_case->test_to_run_count()); 240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ASSERT_EQ(1, test_case->total_test_count()); 241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const TestInfo* const test_info = test_case->GetTestInfo(0); 243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("Dummy2", test_info->name()); 244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("DISABLED_Test", test_info->test_case_name()); 245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", test_info->comment()); 246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", test_info->test_case_comment()); 247fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_FALSE(test_info->should_run()); 248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// These two tests are here to provide support for testing 251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// test_case_to_run_count, disabled_test_count, and test_to_run_count. 252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleTEST(ApiTest, DISABLED_Dummy1) {} 253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleTEST(DISABLED_Test, Dummy2) {} 254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass FinalSuccessChecker : public Environment { 256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville protected: 257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville virtual void TearDown() { 258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville UnitTest* unit_test = UnitTest::GetInstance(); 259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(1 + kTypedTestCases, unit_test->successful_test_case_count()); 261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(3 + kTypedTests, unit_test->successful_test_count()); 262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, unit_test->failed_test_case_count()); 263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, unit_test->failed_test_count()); 264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(unit_test->Passed()); 265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_FALSE(unit_test->Failed()); 266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ASSERT_EQ(2 + kTypedTestCases, unit_test->total_test_case_count()); 267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const TestCase** const test_cases = UnitTestAccessor::GetSortedTestCases(); 269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("ApiTest", test_cases[0]->name()); 271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", test_cases[0]->comment()); 272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(test_cases[0]->should_run()); 273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(1, test_cases[0]->disabled_test_count()); 274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ASSERT_EQ(4, test_cases[0]->total_test_count()); 275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(3, test_cases[0]->successful_test_count()); 276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, test_cases[0]->failed_test_count()); 277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(test_cases[0]->Passed()); 278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_FALSE(test_cases[0]->Failed()); 279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 280fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("DISABLED_Test", test_cases[1]->name()); 281fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", test_cases[1]->comment()); 282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_FALSE(test_cases[1]->should_run()); 283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(1, test_cases[1]->disabled_test_count()); 284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ASSERT_EQ(1, test_cases[1]->total_test_count()); 285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, test_cases[1]->successful_test_count()); 286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, test_cases[1]->failed_test_count()); 287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if GTEST_HAS_TYPED_TEST 289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("TestCaseWithCommentTest/0", test_cases[2]->name()); 290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ(GetExpectedTestCaseComment().c_str(), 291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test_cases[2]->comment()); 292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(test_cases[2]->should_run()); 293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, test_cases[2]->disabled_test_count()); 294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ASSERT_EQ(1, test_cases[2]->total_test_count()); 295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(1, test_cases[2]->successful_test_count()); 296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, test_cases[2]->failed_test_count()); 297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(test_cases[2]->Passed()); 298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_FALSE(test_cases[2]->Failed()); 299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif // GTEST_HAS_TYPED_TEST 300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const TestCase* test_case = UnitTestAccessor::FindTestCase("ApiTest"); 302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const TestInfo** tests = UnitTestAccessor::GetSortedTests(test_case); 303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("DISABLED_Dummy1", tests[0]->name()); 304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("ApiTest", tests[0]->test_case_name()); 305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_FALSE(tests[0]->should_run()); 306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("TestCaseDisabledAccessorsWork", tests[1]->name()); 308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("ApiTest", tests[1]->test_case_name()); 309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[1]->comment()); 310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[1]->test_case_comment()); 311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[1]->should_run()); 312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[1]->result()->Passed()); 313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, tests[1]->result()->test_property_count()); 314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("TestCaseImmutableAccessorsWork", tests[2]->name()); 316fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("ApiTest", tests[2]->test_case_name()); 317fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[2]->comment()); 318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[2]->test_case_comment()); 319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[2]->should_run()); 320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[2]->result()->Passed()); 321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, tests[2]->result()->test_property_count()); 322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("UnitTestImmutableAccessorsWork", tests[3]->name()); 324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("ApiTest", tests[3]->test_case_name()); 325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[3]->comment()); 326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[3]->test_case_comment()); 327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[3]->should_run()); 328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[3]->result()->Passed()); 329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(1, tests[3]->result()->test_property_count()); 330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const TestProperty& property = tests[3]->result()->GetTestProperty(0); 331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("key", property.key()); 332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("value", property.value()); 333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 334fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville delete[] tests; 335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if GTEST_HAS_TYPED_TEST 337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test_case = UnitTestAccessor::FindTestCase("TestCaseWithCommentTest/0"); 338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tests = UnitTestAccessor::GetSortedTests(test_case); 339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 340fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("Dummy", tests[0]->name()); 341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("TestCaseWithCommentTest/0", tests[0]->test_case_name()); 342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[0]->comment()); 343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ(GetExpectedTestCaseComment().c_str(), 344fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tests[0]->test_case_comment()); 345fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[0]->should_run()); 346fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[0]->result()->Passed()); 347fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, tests[0]->result()->test_property_count()); 348fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 349fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville delete[] tests; 350fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif // GTEST_HAS_TYPED_TEST 351fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville delete[] test_cases; 352fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 353fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 354fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 355fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} // namespace testing 356fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 357fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleint main(int argc, char **argv) { 358fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville InitGoogleTest(&argc, argv); 359fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 360fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville AddGlobalTestEnvironment(new testing::FinalSuccessChecker()); 361fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 362fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return RUN_ALL_TESTS(); 363fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 364