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::InitGoogleTest; 42fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 43fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillenamespace testing { 44fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillenamespace internal { 45fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 46fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <typename T> 47fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savillestruct LessByName { 48fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville bool operator()(const T* a, const T* b) { 49fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return strcmp(a->name(), b->name()) < 0; 50fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 51fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 52fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 53d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Savilleclass UnitTestHelper { 54fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville public: 55fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville // Returns the array of pointers to all test cases sorted by the test case 56fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville // name. The caller is responsible for deleting the array. 57fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static TestCase const** const GetSortedTestCases() { 58d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville UnitTest& unit_test = *UnitTest::GetInstance(); 59fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville TestCase const** const test_cases = 60d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville new const TestCase*[unit_test.total_test_case_count()]; 61fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 62d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville for (int i = 0; i < unit_test.total_test_case_count(); ++i) 63d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville test_cases[i] = unit_test.GetTestCase(i); 64fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 65fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville std::sort(test_cases, 66d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville test_cases + unit_test.total_test_case_count(), 67fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville LessByName<TestCase>()); 68fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return test_cases; 69fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 70fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 71fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville // Returns the test case by its name. The caller doesn't own the returned 72fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville // pointer. 73fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static const TestCase* FindTestCase(const char* name) { 74d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville UnitTest& unit_test = *UnitTest::GetInstance(); 75d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville for (int i = 0; i < unit_test.total_test_case_count(); ++i) { 76d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville const TestCase* test_case = unit_test.GetTestCase(i); 77fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville if (0 == strcmp(test_case->name(), name)) 78fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return test_case; 79fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 80fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return NULL; 81fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 82fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 83fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville // Returns the array of pointers to all tests in a particular test case 84fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville // sorted by the test name. The caller is responsible for deleting the 85fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville // array. 86fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville static TestInfo const** const GetSortedTests(const TestCase* test_case) { 87fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville TestInfo const** const tests = 88fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville new const TestInfo*[test_case->total_test_count()]; 89fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 90fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville for (int i = 0; i < test_case->total_test_count(); ++i) 91fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tests[i] = test_case->GetTestInfo(i); 92fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 93d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville std::sort(tests, tests + test_case->total_test_count(), 94fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville LessByName<TestInfo>()); 95fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return tests; 96fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 97fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 98fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 99fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if GTEST_HAS_TYPED_TEST 100fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilletemplate <typename T> class TestCaseWithCommentTest : public Test {}; 101fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleTYPED_TEST_CASE(TestCaseWithCommentTest, Types<int>); 102fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleTYPED_TEST(TestCaseWithCommentTest, Dummy) {} 103fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 104fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleconst int kTypedTestCases = 1; 105fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleconst int kTypedTests = 1; 106fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 107fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleString GetExpectedTestCaseComment() { 108fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville Message comment; 109fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville comment << "TypeParam = " << GetTypeName<int>().c_str(); 110fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return comment.GetString(); 111fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 112fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#else 113fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleconst int kTypedTestCases = 0; 114fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleconst int kTypedTests = 0; 115fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif // GTEST_HAS_TYPED_TEST 116fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 117fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// We can only test the accessors that do not change value while tests run. 118fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// Since tests can be run in any order, the values the accessors that track 119fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// test execution (such as failed_test_count) can not be predicted. 120fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleTEST(ApiTest, UnitTestImmutableAccessorsWork) { 121fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville UnitTest* unit_test = UnitTest::GetInstance(); 122fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 123fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ASSERT_EQ(2 + kTypedTestCases, unit_test->total_test_case_count()); 124fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(1 + kTypedTestCases, unit_test->test_case_to_run_count()); 125fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(2, unit_test->disabled_test_count()); 126fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(5 + kTypedTests, unit_test->total_test_count()); 127fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(3 + kTypedTests, unit_test->test_to_run_count()); 128fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 129d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville const TestCase** const test_cases = UnitTestHelper::GetSortedTestCases(); 130fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 131fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("ApiTest", test_cases[0]->name()); 132fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("DISABLED_Test", test_cases[1]->name()); 133fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if GTEST_HAS_TYPED_TEST 134fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("TestCaseWithCommentTest/0", test_cases[2]->name()); 135fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif // GTEST_HAS_TYPED_TEST 136fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 137fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville delete[] test_cases; 138fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 139fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville // The following lines initiate actions to verify certain methods in 140fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville // FinalSuccessChecker::TearDown. 141fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 142fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville // Records a test property to verify TestResult::GetTestProperty(). 143fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville RecordProperty("key", "value"); 144fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 145fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 146fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleTEST(ApiTest, TestCaseImmutableAccessorsWork) { 147d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville const TestCase* test_case = UnitTestHelper::FindTestCase("ApiTest"); 148fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ASSERT_TRUE(test_case != NULL); 149fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 150fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("ApiTest", test_case->name()); 151fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", test_case->comment()); 152fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(test_case->should_run()); 153fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(1, test_case->disabled_test_count()); 154fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(3, test_case->test_to_run_count()); 155fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ASSERT_EQ(4, test_case->total_test_count()); 156fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 157d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville const TestInfo** tests = UnitTestHelper::GetSortedTests(test_case); 158fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 159fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("DISABLED_Dummy1", tests[0]->name()); 160fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("ApiTest", tests[0]->test_case_name()); 161fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[0]->comment()); 162fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[0]->test_case_comment()); 163fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_FALSE(tests[0]->should_run()); 164fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 165fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("TestCaseDisabledAccessorsWork", tests[1]->name()); 166fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("ApiTest", tests[1]->test_case_name()); 167fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[1]->comment()); 168fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[1]->test_case_comment()); 169fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[1]->should_run()); 170fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 171fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("TestCaseImmutableAccessorsWork", tests[2]->name()); 172fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("ApiTest", tests[2]->test_case_name()); 173fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[2]->comment()); 174fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[2]->test_case_comment()); 175fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[2]->should_run()); 176fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 177fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("UnitTestImmutableAccessorsWork", tests[3]->name()); 178fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("ApiTest", tests[3]->test_case_name()); 179fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[3]->comment()); 180fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[3]->test_case_comment()); 181fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[3]->should_run()); 182fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 183fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville delete[] tests; 184fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tests = NULL; 185fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 186fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if GTEST_HAS_TYPED_TEST 187d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville test_case = UnitTestHelper::FindTestCase("TestCaseWithCommentTest/0"); 188fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ASSERT_TRUE(test_case != NULL); 189fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 190fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("TestCaseWithCommentTest/0", test_case->name()); 191fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ(GetExpectedTestCaseComment().c_str(), test_case->comment()); 192fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(test_case->should_run()); 193fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, test_case->disabled_test_count()); 194fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(1, test_case->test_to_run_count()); 195fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ASSERT_EQ(1, test_case->total_test_count()); 196fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 197d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville tests = UnitTestHelper::GetSortedTests(test_case); 198fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 199fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("Dummy", tests[0]->name()); 200fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("TestCaseWithCommentTest/0", tests[0]->test_case_name()); 201fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[0]->comment()); 202fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ(GetExpectedTestCaseComment().c_str(), 203fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tests[0]->test_case_comment()); 204fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[0]->should_run()); 205fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 206fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville delete[] tests; 207fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif // GTEST_HAS_TYPED_TEST 208fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 209fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 210fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleTEST(ApiTest, TestCaseDisabledAccessorsWork) { 211d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville const TestCase* test_case = UnitTestHelper::FindTestCase("DISABLED_Test"); 212fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ASSERT_TRUE(test_case != NULL); 213fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 214fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("DISABLED_Test", test_case->name()); 215fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", test_case->comment()); 216fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_FALSE(test_case->should_run()); 217fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(1, test_case->disabled_test_count()); 218fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, test_case->test_to_run_count()); 219fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ASSERT_EQ(1, test_case->total_test_count()); 220fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 221fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const TestInfo* const test_info = test_case->GetTestInfo(0); 222fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("Dummy2", test_info->name()); 223fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("DISABLED_Test", test_info->test_case_name()); 224fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", test_info->comment()); 225fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", test_info->test_case_comment()); 226fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_FALSE(test_info->should_run()); 227fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 228fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 229fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// These two tests are here to provide support for testing 230fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville// test_case_to_run_count, disabled_test_count, and test_to_run_count. 231fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleTEST(ApiTest, DISABLED_Dummy1) {} 232fbaaef999ba563838ebd00874ed8a1c01fbf286dWink SavilleTEST(DISABLED_Test, Dummy2) {} 233fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 234fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleclass FinalSuccessChecker : public Environment { 235fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville protected: 236fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville virtual void TearDown() { 237fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville UnitTest* unit_test = UnitTest::GetInstance(); 238fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 239fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(1 + kTypedTestCases, unit_test->successful_test_case_count()); 240fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(3 + kTypedTests, unit_test->successful_test_count()); 241fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, unit_test->failed_test_case_count()); 242fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, unit_test->failed_test_count()); 243fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(unit_test->Passed()); 244fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_FALSE(unit_test->Failed()); 245fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ASSERT_EQ(2 + kTypedTestCases, unit_test->total_test_case_count()); 246fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 247d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville const TestCase** const test_cases = UnitTestHelper::GetSortedTestCases(); 248fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 249fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("ApiTest", test_cases[0]->name()); 250fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", test_cases[0]->comment()); 251fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(test_cases[0]->should_run()); 252fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(1, test_cases[0]->disabled_test_count()); 253fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ASSERT_EQ(4, test_cases[0]->total_test_count()); 254fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(3, test_cases[0]->successful_test_count()); 255fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, test_cases[0]->failed_test_count()); 256fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(test_cases[0]->Passed()); 257fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_FALSE(test_cases[0]->Failed()); 258fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 259fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("DISABLED_Test", test_cases[1]->name()); 260fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", test_cases[1]->comment()); 261fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_FALSE(test_cases[1]->should_run()); 262fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(1, test_cases[1]->disabled_test_count()); 263fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ASSERT_EQ(1, test_cases[1]->total_test_count()); 264fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, test_cases[1]->successful_test_count()); 265fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, test_cases[1]->failed_test_count()); 266fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 267fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if GTEST_HAS_TYPED_TEST 268fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("TestCaseWithCommentTest/0", test_cases[2]->name()); 269fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ(GetExpectedTestCaseComment().c_str(), 270fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville test_cases[2]->comment()); 271fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(test_cases[2]->should_run()); 272fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, test_cases[2]->disabled_test_count()); 273fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville ASSERT_EQ(1, test_cases[2]->total_test_count()); 274fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(1, test_cases[2]->successful_test_count()); 275fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, test_cases[2]->failed_test_count()); 276fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(test_cases[2]->Passed()); 277fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_FALSE(test_cases[2]->Failed()); 278fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif // GTEST_HAS_TYPED_TEST 279fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 280d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville const TestCase* test_case = UnitTestHelper::FindTestCase("ApiTest"); 281d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville const TestInfo** tests = UnitTestHelper::GetSortedTests(test_case); 282fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("DISABLED_Dummy1", tests[0]->name()); 283fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("ApiTest", tests[0]->test_case_name()); 284fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_FALSE(tests[0]->should_run()); 285fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 286fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("TestCaseDisabledAccessorsWork", tests[1]->name()); 287fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("ApiTest", tests[1]->test_case_name()); 288fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[1]->comment()); 289fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[1]->test_case_comment()); 290fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[1]->should_run()); 291fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[1]->result()->Passed()); 292fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, tests[1]->result()->test_property_count()); 293fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 294fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("TestCaseImmutableAccessorsWork", tests[2]->name()); 295fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("ApiTest", tests[2]->test_case_name()); 296fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[2]->comment()); 297fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[2]->test_case_comment()); 298fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[2]->should_run()); 299fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[2]->result()->Passed()); 300fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, tests[2]->result()->test_property_count()); 301fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 302fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("UnitTestImmutableAccessorsWork", tests[3]->name()); 303fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("ApiTest", tests[3]->test_case_name()); 304fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[3]->comment()); 305fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[3]->test_case_comment()); 306fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[3]->should_run()); 307fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[3]->result()->Passed()); 308fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(1, tests[3]->result()->test_property_count()); 309fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville const TestProperty& property = tests[3]->result()->GetTestProperty(0); 310fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("key", property.key()); 311fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("value", property.value()); 312fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 313fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville delete[] tests; 314fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 315fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#if GTEST_HAS_TYPED_TEST 316d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville test_case = UnitTestHelper::FindTestCase("TestCaseWithCommentTest/0"); 317d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville tests = UnitTestHelper::GetSortedTests(test_case); 318fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 319fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("Dummy", tests[0]->name()); 320fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("TestCaseWithCommentTest/0", tests[0]->test_case_name()); 321fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ("", tests[0]->comment()); 322fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_STREQ(GetExpectedTestCaseComment().c_str(), 323fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville tests[0]->test_case_comment()); 324fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[0]->should_run()); 325fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_TRUE(tests[0]->result()->Passed()); 326fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville EXPECT_EQ(0, tests[0]->result()->test_property_count()); 327fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 328fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville delete[] tests; 329fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville#endif // GTEST_HAS_TYPED_TEST 330fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville delete[] test_cases; 331fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville } 332fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville}; 333fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 334d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville} // namespace internal 335fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} // namespace testing 336fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 337fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Savilleint main(int argc, char **argv) { 338fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville InitGoogleTest(&argc, argv); 339fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 340d0332953cda33fb4f8e24ebff9c49159b69c43d6Wink Saville AddGlobalTestEnvironment(new testing::internal::FinalSuccessChecker()); 341fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville 342fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville return RUN_ALL_TESTS(); 343fbaaef999ba563838ebd00874ed8a1c01fbf286dWink Saville} 344