141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// Copyright 2009 Google Inc. All rights reserved. 241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// 341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// Redistribution and use in source and binary forms, with or without 441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// modification, are permitted provided that the following conditions are 541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// met: 641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// 741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// * Redistributions of source code must retain the above copyright 841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// notice, this list of conditions and the following disclaimer. 941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// * Redistributions in binary form must reproduce the above 1041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// copyright notice, this list of conditions and the following disclaimer 1141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// in the documentation and/or other materials provided with the 1241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// distribution. 1341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// * Neither the name of Google Inc. nor the names of its 1441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// contributors may be used to endorse or promote products derived from 1541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// this software without specific prior written permission. 1641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// 1741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// 2941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// Author: vladl@google.com (Vlad Losev) 3041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// 3141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// The Google C++ Testing Framework (Google Test) 3241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// 3341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// This file contains tests verifying correctness of data provided via 3441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// UnitTest's public methods. 3541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 3641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot#include "gtest/gtest.h" 3741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 3841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot#include <string.h> // For strcmp. 3941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot#include <algorithm> 4041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 4141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabotusing ::testing::InitGoogleTest; 4241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 4341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabotnamespace testing { 4441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabotnamespace internal { 4541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 4641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabottemplate <typename T> 4741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabotstruct LessByName { 4841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot bool operator()(const T* a, const T* b) { 4941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot return strcmp(a->name(), b->name()) < 0; 5041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot } 5141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot}; 5241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 5341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabotclass UnitTestHelper { 5441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot public: 5541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot // Returns the array of pointers to all test cases sorted by the test case 5641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot // name. The caller is responsible for deleting the array. 5741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot static TestCase const** const GetSortedTestCases() { 5841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot UnitTest& unit_test = *UnitTest::GetInstance(); 5941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot TestCase const** const test_cases = 6041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot new const TestCase*[unit_test.total_test_case_count()]; 6141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 6241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot for (int i = 0; i < unit_test.total_test_case_count(); ++i) 6341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot test_cases[i] = unit_test.GetTestCase(i); 6441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 6541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot std::sort(test_cases, 6641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot test_cases + unit_test.total_test_case_count(), 6741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot LessByName<TestCase>()); 6841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot return test_cases; 6941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot } 7041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 7141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot // Returns the test case by its name. The caller doesn't own the returned 7241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot // pointer. 7341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot static const TestCase* FindTestCase(const char* name) { 7441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot UnitTest& unit_test = *UnitTest::GetInstance(); 7541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot for (int i = 0; i < unit_test.total_test_case_count(); ++i) { 7641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot const TestCase* test_case = unit_test.GetTestCase(i); 7741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot if (0 == strcmp(test_case->name(), name)) 7841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot return test_case; 7941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot } 8041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot return NULL; 8141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot } 8241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 8341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot // Returns the array of pointers to all tests in a particular test case 8441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot // sorted by the test name. The caller is responsible for deleting the 8541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot // array. 8641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot static TestInfo const** const GetSortedTests(const TestCase* test_case) { 8741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot TestInfo const** const tests = 8841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot new const TestInfo*[test_case->total_test_count()]; 8941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 9041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot for (int i = 0; i < test_case->total_test_count(); ++i) 9141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot tests[i] = test_case->GetTestInfo(i); 9241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 9341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot std::sort(tests, tests + test_case->total_test_count(), 9441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot LessByName<TestInfo>()); 9541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot return tests; 9641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot } 9741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot}; 9841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 9941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot#if GTEST_HAS_TYPED_TEST 10041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabottemplate <typename T> class TestCaseWithCommentTest : public Test {}; 10141d0579e8de9ef4ff178fc4991043c61a19943f7Brett ChabotTYPED_TEST_CASE(TestCaseWithCommentTest, Types<int>); 10241d0579e8de9ef4ff178fc4991043c61a19943f7Brett ChabotTYPED_TEST(TestCaseWithCommentTest, Dummy) {} 10341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 10441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabotconst int kTypedTestCases = 1; 10541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabotconst int kTypedTests = 1; 10641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot#else 10741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabotconst int kTypedTestCases = 0; 10841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabotconst int kTypedTests = 0; 10941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot#endif // GTEST_HAS_TYPED_TEST 11041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 11141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// We can only test the accessors that do not change value while tests run. 11241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// Since tests can be run in any order, the values the accessors that track 11341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// test execution (such as failed_test_count) can not be predicted. 11441d0579e8de9ef4ff178fc4991043c61a19943f7Brett ChabotTEST(ApiTest, UnitTestImmutableAccessorsWork) { 11541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot UnitTest* unit_test = UnitTest::GetInstance(); 11641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 11741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot ASSERT_EQ(2 + kTypedTestCases, unit_test->total_test_case_count()); 11841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(1 + kTypedTestCases, unit_test->test_case_to_run_count()); 11941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(2, unit_test->disabled_test_count()); 12041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(5 + kTypedTests, unit_test->total_test_count()); 12141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(3 + kTypedTests, unit_test->test_to_run_count()); 12241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 12341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot const TestCase** const test_cases = UnitTestHelper::GetSortedTestCases(); 12441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 12541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("ApiTest", test_cases[0]->name()); 12641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("DISABLED_Test", test_cases[1]->name()); 12741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot#if GTEST_HAS_TYPED_TEST 12841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("TestCaseWithCommentTest/0", test_cases[2]->name()); 12941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot#endif // GTEST_HAS_TYPED_TEST 13041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 13141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot delete[] test_cases; 13241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 13341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot // The following lines initiate actions to verify certain methods in 13441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot // FinalSuccessChecker::TearDown. 13541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 13641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot // Records a test property to verify TestResult::GetTestProperty(). 13741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot RecordProperty("key", "value"); 13841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot} 13941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 14041d0579e8de9ef4ff178fc4991043c61a19943f7Brett ChabotAssertionResult IsNull(const char* str) { 14141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot if (str != NULL) { 14241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot return testing::AssertionFailure() << "argument is " << str; 14341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot } 14441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot return AssertionSuccess(); 14541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot} 14641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 14741d0579e8de9ef4ff178fc4991043c61a19943f7Brett ChabotTEST(ApiTest, TestCaseImmutableAccessorsWork) { 14841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot const TestCase* test_case = UnitTestHelper::FindTestCase("ApiTest"); 14941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot ASSERT_TRUE(test_case != NULL); 15041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 15141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("ApiTest", test_case->name()); 15241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(IsNull(test_case->type_param())); 15341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(test_case->should_run()); 15441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(1, test_case->disabled_test_count()); 15541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(3, test_case->test_to_run_count()); 15641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot ASSERT_EQ(4, test_case->total_test_count()); 15741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 15841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot const TestInfo** tests = UnitTestHelper::GetSortedTests(test_case); 15941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 16041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("DISABLED_Dummy1", tests[0]->name()); 16141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("ApiTest", tests[0]->test_case_name()); 16241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(IsNull(tests[0]->value_param())); 16341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(IsNull(tests[0]->type_param())); 16441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_FALSE(tests[0]->should_run()); 16541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 16641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("TestCaseDisabledAccessorsWork", tests[1]->name()); 16741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("ApiTest", tests[1]->test_case_name()); 16841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(IsNull(tests[1]->value_param())); 16941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(IsNull(tests[1]->type_param())); 17041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(tests[1]->should_run()); 17141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 17241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("TestCaseImmutableAccessorsWork", tests[2]->name()); 17341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("ApiTest", tests[2]->test_case_name()); 17441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(IsNull(tests[2]->value_param())); 17541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(IsNull(tests[2]->type_param())); 17641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(tests[2]->should_run()); 17741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 17841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("UnitTestImmutableAccessorsWork", tests[3]->name()); 17941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("ApiTest", tests[3]->test_case_name()); 18041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(IsNull(tests[3]->value_param())); 18141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(IsNull(tests[3]->type_param())); 18241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(tests[3]->should_run()); 18341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 18441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot delete[] tests; 18541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot tests = NULL; 18641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 18741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot#if GTEST_HAS_TYPED_TEST 18841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot test_case = UnitTestHelper::FindTestCase("TestCaseWithCommentTest/0"); 18941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot ASSERT_TRUE(test_case != NULL); 19041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 19141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("TestCaseWithCommentTest/0", test_case->name()); 19241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ(GetTypeName<int>().c_str(), test_case->type_param()); 19341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(test_case->should_run()); 19441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(0, test_case->disabled_test_count()); 19541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(1, test_case->test_to_run_count()); 19641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot ASSERT_EQ(1, test_case->total_test_count()); 19741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 19841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot tests = UnitTestHelper::GetSortedTests(test_case); 19941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 20041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("Dummy", tests[0]->name()); 20141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("TestCaseWithCommentTest/0", tests[0]->test_case_name()); 20241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(IsNull(tests[0]->value_param())); 20341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ(GetTypeName<int>().c_str(), tests[0]->type_param()); 20441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(tests[0]->should_run()); 20541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 20641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot delete[] tests; 20741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot#endif // GTEST_HAS_TYPED_TEST 20841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot} 20941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 21041d0579e8de9ef4ff178fc4991043c61a19943f7Brett ChabotTEST(ApiTest, TestCaseDisabledAccessorsWork) { 21141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot const TestCase* test_case = UnitTestHelper::FindTestCase("DISABLED_Test"); 21241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot ASSERT_TRUE(test_case != NULL); 21341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 21441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("DISABLED_Test", test_case->name()); 21541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(IsNull(test_case->type_param())); 21641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_FALSE(test_case->should_run()); 21741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(1, test_case->disabled_test_count()); 21841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(0, test_case->test_to_run_count()); 21941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot ASSERT_EQ(1, test_case->total_test_count()); 22041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 22141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot const TestInfo* const test_info = test_case->GetTestInfo(0); 22241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("Dummy2", test_info->name()); 22341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("DISABLED_Test", test_info->test_case_name()); 22441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(IsNull(test_info->value_param())); 22541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(IsNull(test_info->type_param())); 22641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_FALSE(test_info->should_run()); 22741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot} 22841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 22941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// These two tests are here to provide support for testing 23041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// test_case_to_run_count, disabled_test_count, and test_to_run_count. 23141d0579e8de9ef4ff178fc4991043c61a19943f7Brett ChabotTEST(ApiTest, DISABLED_Dummy1) {} 23241d0579e8de9ef4ff178fc4991043c61a19943f7Brett ChabotTEST(DISABLED_Test, Dummy2) {} 23341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 23441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabotclass FinalSuccessChecker : public Environment { 23541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot protected: 23641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot virtual void TearDown() { 23741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot UnitTest* unit_test = UnitTest::GetInstance(); 23841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 23941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(1 + kTypedTestCases, unit_test->successful_test_case_count()); 24041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(3 + kTypedTests, unit_test->successful_test_count()); 24141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(0, unit_test->failed_test_case_count()); 24241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(0, unit_test->failed_test_count()); 24341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(unit_test->Passed()); 24441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_FALSE(unit_test->Failed()); 24541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot ASSERT_EQ(2 + kTypedTestCases, unit_test->total_test_case_count()); 24641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 24741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot const TestCase** const test_cases = UnitTestHelper::GetSortedTestCases(); 24841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 24941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("ApiTest", test_cases[0]->name()); 25041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(IsNull(test_cases[0]->type_param())); 25141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(test_cases[0]->should_run()); 25241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(1, test_cases[0]->disabled_test_count()); 25341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot ASSERT_EQ(4, test_cases[0]->total_test_count()); 25441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(3, test_cases[0]->successful_test_count()); 25541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(0, test_cases[0]->failed_test_count()); 25641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(test_cases[0]->Passed()); 25741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_FALSE(test_cases[0]->Failed()); 25841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 25941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("DISABLED_Test", test_cases[1]->name()); 26041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(IsNull(test_cases[1]->type_param())); 26141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_FALSE(test_cases[1]->should_run()); 26241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(1, test_cases[1]->disabled_test_count()); 26341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot ASSERT_EQ(1, test_cases[1]->total_test_count()); 26441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(0, test_cases[1]->successful_test_count()); 26541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(0, test_cases[1]->failed_test_count()); 26641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 26741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot#if GTEST_HAS_TYPED_TEST 26841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("TestCaseWithCommentTest/0", test_cases[2]->name()); 26941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ(GetTypeName<int>().c_str(), test_cases[2]->type_param()); 27041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(test_cases[2]->should_run()); 27141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(0, test_cases[2]->disabled_test_count()); 27241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot ASSERT_EQ(1, test_cases[2]->total_test_count()); 27341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(1, test_cases[2]->successful_test_count()); 27441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(0, test_cases[2]->failed_test_count()); 27541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(test_cases[2]->Passed()); 27641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_FALSE(test_cases[2]->Failed()); 27741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot#endif // GTEST_HAS_TYPED_TEST 27841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 27941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot const TestCase* test_case = UnitTestHelper::FindTestCase("ApiTest"); 28041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot const TestInfo** tests = UnitTestHelper::GetSortedTests(test_case); 28141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("DISABLED_Dummy1", tests[0]->name()); 28241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("ApiTest", tests[0]->test_case_name()); 28341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_FALSE(tests[0]->should_run()); 28441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 28541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("TestCaseDisabledAccessorsWork", tests[1]->name()); 28641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("ApiTest", tests[1]->test_case_name()); 28741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(IsNull(tests[1]->value_param())); 28841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(IsNull(tests[1]->type_param())); 28941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(tests[1]->should_run()); 29041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(tests[1]->result()->Passed()); 29141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(0, tests[1]->result()->test_property_count()); 29241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 29341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("TestCaseImmutableAccessorsWork", tests[2]->name()); 29441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("ApiTest", tests[2]->test_case_name()); 29541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(IsNull(tests[2]->value_param())); 29641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(IsNull(tests[2]->type_param())); 29741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(tests[2]->should_run()); 29841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(tests[2]->result()->Passed()); 29941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(0, tests[2]->result()->test_property_count()); 30041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 30141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("UnitTestImmutableAccessorsWork", tests[3]->name()); 30241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("ApiTest", tests[3]->test_case_name()); 30341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(IsNull(tests[3]->value_param())); 30441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(IsNull(tests[3]->type_param())); 30541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(tests[3]->should_run()); 30641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(tests[3]->result()->Passed()); 30741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(1, tests[3]->result()->test_property_count()); 30841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot const TestProperty& property = tests[3]->result()->GetTestProperty(0); 30941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("key", property.key()); 31041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("value", property.value()); 31141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 31241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot delete[] tests; 31341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 31441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot#if GTEST_HAS_TYPED_TEST 31541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot test_case = UnitTestHelper::FindTestCase("TestCaseWithCommentTest/0"); 31641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot tests = UnitTestHelper::GetSortedTests(test_case); 31741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 31841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("Dummy", tests[0]->name()); 31941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("TestCaseWithCommentTest/0", tests[0]->test_case_name()); 32041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(IsNull(tests[0]->value_param())); 32141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ(GetTypeName<int>().c_str(), tests[0]->type_param()); 32241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(tests[0]->should_run()); 32341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(tests[0]->result()->Passed()); 32441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(0, tests[0]->result()->test_property_count()); 32541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 32641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot delete[] tests; 32741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot#endif // GTEST_HAS_TYPED_TEST 32841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot delete[] test_cases; 32941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot } 33041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot}; 33141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 33241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot} // namespace internal 33341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot} // namespace testing 33441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 33541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabotint main(int argc, char **argv) { 33641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot InitGoogleTest(&argc, argv); 33741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 33841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot AddGlobalTestEnvironment(new testing::internal::FinalSuccessChecker()); 33941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 34041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot return RUN_ALL_TESTS(); 34141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot} 342