113481Sgiacomo.travaglini@arm.com// Copyright 2009 Google Inc. All rights reserved. 213481Sgiacomo.travaglini@arm.com// 313481Sgiacomo.travaglini@arm.com// Redistribution and use in source and binary forms, with or without 413481Sgiacomo.travaglini@arm.com// modification, are permitted provided that the following conditions are 513481Sgiacomo.travaglini@arm.com// met: 613481Sgiacomo.travaglini@arm.com// 713481Sgiacomo.travaglini@arm.com// * Redistributions of source code must retain the above copyright 813481Sgiacomo.travaglini@arm.com// notice, this list of conditions and the following disclaimer. 913481Sgiacomo.travaglini@arm.com// * Redistributions in binary form must reproduce the above 1013481Sgiacomo.travaglini@arm.com// copyright notice, this list of conditions and the following disclaimer 1113481Sgiacomo.travaglini@arm.com// in the documentation and/or other materials provided with the 1213481Sgiacomo.travaglini@arm.com// distribution. 1313481Sgiacomo.travaglini@arm.com// * Neither the name of Google Inc. nor the names of its 1413481Sgiacomo.travaglini@arm.com// contributors may be used to endorse or promote products derived from 1513481Sgiacomo.travaglini@arm.com// this software without specific prior written permission. 1613481Sgiacomo.travaglini@arm.com// 1713481Sgiacomo.travaglini@arm.com// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1813481Sgiacomo.travaglini@arm.com// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1913481Sgiacomo.travaglini@arm.com// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2013481Sgiacomo.travaglini@arm.com// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2113481Sgiacomo.travaglini@arm.com// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2213481Sgiacomo.travaglini@arm.com// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2313481Sgiacomo.travaglini@arm.com// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2413481Sgiacomo.travaglini@arm.com// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2513481Sgiacomo.travaglini@arm.com// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2613481Sgiacomo.travaglini@arm.com// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2713481Sgiacomo.travaglini@arm.com// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2813481Sgiacomo.travaglini@arm.com// 2913481Sgiacomo.travaglini@arm.com// Author: vladl@google.com (Vlad Losev) 3013481Sgiacomo.travaglini@arm.com// 3113481Sgiacomo.travaglini@arm.com// The Google C++ Testing Framework (Google Test) 3213481Sgiacomo.travaglini@arm.com// 3313481Sgiacomo.travaglini@arm.com// This file contains tests verifying correctness of data provided via 3413481Sgiacomo.travaglini@arm.com// UnitTest's public methods. 3513481Sgiacomo.travaglini@arm.com 3613481Sgiacomo.travaglini@arm.com#include "gtest/gtest.h" 3713481Sgiacomo.travaglini@arm.com 3813481Sgiacomo.travaglini@arm.com#include <string.h> // For strcmp. 3913481Sgiacomo.travaglini@arm.com#include <algorithm> 4013481Sgiacomo.travaglini@arm.com 4113481Sgiacomo.travaglini@arm.comusing ::testing::InitGoogleTest; 4213481Sgiacomo.travaglini@arm.com 4313481Sgiacomo.travaglini@arm.comnamespace testing { 4413481Sgiacomo.travaglini@arm.comnamespace internal { 4513481Sgiacomo.travaglini@arm.com 4613481Sgiacomo.travaglini@arm.comtemplate <typename T> 4713481Sgiacomo.travaglini@arm.comstruct LessByName { 4813481Sgiacomo.travaglini@arm.com bool operator()(const T* a, const T* b) { 4913481Sgiacomo.travaglini@arm.com return strcmp(a->name(), b->name()) < 0; 5013481Sgiacomo.travaglini@arm.com } 5113481Sgiacomo.travaglini@arm.com}; 5213481Sgiacomo.travaglini@arm.com 5313481Sgiacomo.travaglini@arm.comclass UnitTestHelper { 5413481Sgiacomo.travaglini@arm.com public: 5513481Sgiacomo.travaglini@arm.com // Returns the array of pointers to all test cases sorted by the test case 5613481Sgiacomo.travaglini@arm.com // name. The caller is responsible for deleting the array. 5713481Sgiacomo.travaglini@arm.com static TestCase const** GetSortedTestCases() { 5813481Sgiacomo.travaglini@arm.com UnitTest& unit_test = *UnitTest::GetInstance(); 5913481Sgiacomo.travaglini@arm.com TestCase const** const test_cases = 6013481Sgiacomo.travaglini@arm.com new const TestCase*[unit_test.total_test_case_count()]; 6113481Sgiacomo.travaglini@arm.com 6213481Sgiacomo.travaglini@arm.com for (int i = 0; i < unit_test.total_test_case_count(); ++i) 6313481Sgiacomo.travaglini@arm.com test_cases[i] = unit_test.GetTestCase(i); 6413481Sgiacomo.travaglini@arm.com 6513481Sgiacomo.travaglini@arm.com std::sort(test_cases, 6613481Sgiacomo.travaglini@arm.com test_cases + unit_test.total_test_case_count(), 6713481Sgiacomo.travaglini@arm.com LessByName<TestCase>()); 6813481Sgiacomo.travaglini@arm.com return test_cases; 6913481Sgiacomo.travaglini@arm.com } 7013481Sgiacomo.travaglini@arm.com 7113481Sgiacomo.travaglini@arm.com // Returns the test case by its name. The caller doesn't own the returned 7213481Sgiacomo.travaglini@arm.com // pointer. 7313481Sgiacomo.travaglini@arm.com static const TestCase* FindTestCase(const char* name) { 7413481Sgiacomo.travaglini@arm.com UnitTest& unit_test = *UnitTest::GetInstance(); 7513481Sgiacomo.travaglini@arm.com for (int i = 0; i < unit_test.total_test_case_count(); ++i) { 7613481Sgiacomo.travaglini@arm.com const TestCase* test_case = unit_test.GetTestCase(i); 7713481Sgiacomo.travaglini@arm.com if (0 == strcmp(test_case->name(), name)) 7813481Sgiacomo.travaglini@arm.com return test_case; 7913481Sgiacomo.travaglini@arm.com } 8013481Sgiacomo.travaglini@arm.com return NULL; 8113481Sgiacomo.travaglini@arm.com } 8213481Sgiacomo.travaglini@arm.com 8313481Sgiacomo.travaglini@arm.com // Returns the array of pointers to all tests in a particular test case 8413481Sgiacomo.travaglini@arm.com // sorted by the test name. The caller is responsible for deleting the 8513481Sgiacomo.travaglini@arm.com // array. 8613481Sgiacomo.travaglini@arm.com static TestInfo const** GetSortedTests(const TestCase* test_case) { 8713481Sgiacomo.travaglini@arm.com TestInfo const** const tests = 8813481Sgiacomo.travaglini@arm.com new const TestInfo*[test_case->total_test_count()]; 8913481Sgiacomo.travaglini@arm.com 9013481Sgiacomo.travaglini@arm.com for (int i = 0; i < test_case->total_test_count(); ++i) 9113481Sgiacomo.travaglini@arm.com tests[i] = test_case->GetTestInfo(i); 9213481Sgiacomo.travaglini@arm.com 9313481Sgiacomo.travaglini@arm.com std::sort(tests, tests + test_case->total_test_count(), 9413481Sgiacomo.travaglini@arm.com LessByName<TestInfo>()); 9513481Sgiacomo.travaglini@arm.com return tests; 9613481Sgiacomo.travaglini@arm.com } 9713481Sgiacomo.travaglini@arm.com}; 9813481Sgiacomo.travaglini@arm.com 9913481Sgiacomo.travaglini@arm.com#if GTEST_HAS_TYPED_TEST 10013481Sgiacomo.travaglini@arm.comtemplate <typename T> class TestCaseWithCommentTest : public Test {}; 10113481Sgiacomo.travaglini@arm.comTYPED_TEST_CASE(TestCaseWithCommentTest, Types<int>); 10213481Sgiacomo.travaglini@arm.comTYPED_TEST(TestCaseWithCommentTest, Dummy) {} 10313481Sgiacomo.travaglini@arm.com 10413481Sgiacomo.travaglini@arm.comconst int kTypedTestCases = 1; 10513481Sgiacomo.travaglini@arm.comconst int kTypedTests = 1; 10613481Sgiacomo.travaglini@arm.com#else 10713481Sgiacomo.travaglini@arm.comconst int kTypedTestCases = 0; 10813481Sgiacomo.travaglini@arm.comconst int kTypedTests = 0; 10913481Sgiacomo.travaglini@arm.com#endif // GTEST_HAS_TYPED_TEST 11013481Sgiacomo.travaglini@arm.com 11113481Sgiacomo.travaglini@arm.com// We can only test the accessors that do not change value while tests run. 11213481Sgiacomo.travaglini@arm.com// Since tests can be run in any order, the values the accessors that track 11313481Sgiacomo.travaglini@arm.com// test execution (such as failed_test_count) can not be predicted. 11413481Sgiacomo.travaglini@arm.comTEST(ApiTest, UnitTestImmutableAccessorsWork) { 11513481Sgiacomo.travaglini@arm.com UnitTest* unit_test = UnitTest::GetInstance(); 11613481Sgiacomo.travaglini@arm.com 11713481Sgiacomo.travaglini@arm.com ASSERT_EQ(2 + kTypedTestCases, unit_test->total_test_case_count()); 11813481Sgiacomo.travaglini@arm.com EXPECT_EQ(1 + kTypedTestCases, unit_test->test_case_to_run_count()); 11913481Sgiacomo.travaglini@arm.com EXPECT_EQ(2, unit_test->disabled_test_count()); 12013481Sgiacomo.travaglini@arm.com EXPECT_EQ(5 + kTypedTests, unit_test->total_test_count()); 12113481Sgiacomo.travaglini@arm.com EXPECT_EQ(3 + kTypedTests, unit_test->test_to_run_count()); 12213481Sgiacomo.travaglini@arm.com 12313481Sgiacomo.travaglini@arm.com const TestCase** const test_cases = UnitTestHelper::GetSortedTestCases(); 12413481Sgiacomo.travaglini@arm.com 12513481Sgiacomo.travaglini@arm.com EXPECT_STREQ("ApiTest", test_cases[0]->name()); 12613481Sgiacomo.travaglini@arm.com EXPECT_STREQ("DISABLED_Test", test_cases[1]->name()); 12713481Sgiacomo.travaglini@arm.com#if GTEST_HAS_TYPED_TEST 12813481Sgiacomo.travaglini@arm.com EXPECT_STREQ("TestCaseWithCommentTest/0", test_cases[2]->name()); 12913481Sgiacomo.travaglini@arm.com#endif // GTEST_HAS_TYPED_TEST 13013481Sgiacomo.travaglini@arm.com 13113481Sgiacomo.travaglini@arm.com delete[] test_cases; 13213481Sgiacomo.travaglini@arm.com 13313481Sgiacomo.travaglini@arm.com // The following lines initiate actions to verify certain methods in 13413481Sgiacomo.travaglini@arm.com // FinalSuccessChecker::TearDown. 13513481Sgiacomo.travaglini@arm.com 13613481Sgiacomo.travaglini@arm.com // Records a test property to verify TestResult::GetTestProperty(). 13713481Sgiacomo.travaglini@arm.com RecordProperty("key", "value"); 13813481Sgiacomo.travaglini@arm.com} 13913481Sgiacomo.travaglini@arm.com 14013481Sgiacomo.travaglini@arm.comAssertionResult IsNull(const char* str) { 14113481Sgiacomo.travaglini@arm.com if (str != NULL) { 14213481Sgiacomo.travaglini@arm.com return testing::AssertionFailure() << "argument is " << str; 14313481Sgiacomo.travaglini@arm.com } 14413481Sgiacomo.travaglini@arm.com return AssertionSuccess(); 14513481Sgiacomo.travaglini@arm.com} 14613481Sgiacomo.travaglini@arm.com 14713481Sgiacomo.travaglini@arm.comTEST(ApiTest, TestCaseImmutableAccessorsWork) { 14813481Sgiacomo.travaglini@arm.com const TestCase* test_case = UnitTestHelper::FindTestCase("ApiTest"); 14913481Sgiacomo.travaglini@arm.com ASSERT_TRUE(test_case != NULL); 15013481Sgiacomo.travaglini@arm.com 15113481Sgiacomo.travaglini@arm.com EXPECT_STREQ("ApiTest", test_case->name()); 15213481Sgiacomo.travaglini@arm.com EXPECT_TRUE(IsNull(test_case->type_param())); 15313481Sgiacomo.travaglini@arm.com EXPECT_TRUE(test_case->should_run()); 15413481Sgiacomo.travaglini@arm.com EXPECT_EQ(1, test_case->disabled_test_count()); 15513481Sgiacomo.travaglini@arm.com EXPECT_EQ(3, test_case->test_to_run_count()); 15613481Sgiacomo.travaglini@arm.com ASSERT_EQ(4, test_case->total_test_count()); 15713481Sgiacomo.travaglini@arm.com 15813481Sgiacomo.travaglini@arm.com const TestInfo** tests = UnitTestHelper::GetSortedTests(test_case); 15913481Sgiacomo.travaglini@arm.com 16013481Sgiacomo.travaglini@arm.com EXPECT_STREQ("DISABLED_Dummy1", tests[0]->name()); 16113481Sgiacomo.travaglini@arm.com EXPECT_STREQ("ApiTest", tests[0]->test_case_name()); 16213481Sgiacomo.travaglini@arm.com EXPECT_TRUE(IsNull(tests[0]->value_param())); 16313481Sgiacomo.travaglini@arm.com EXPECT_TRUE(IsNull(tests[0]->type_param())); 16413481Sgiacomo.travaglini@arm.com EXPECT_FALSE(tests[0]->should_run()); 16513481Sgiacomo.travaglini@arm.com 16613481Sgiacomo.travaglini@arm.com EXPECT_STREQ("TestCaseDisabledAccessorsWork", tests[1]->name()); 16713481Sgiacomo.travaglini@arm.com EXPECT_STREQ("ApiTest", tests[1]->test_case_name()); 16813481Sgiacomo.travaglini@arm.com EXPECT_TRUE(IsNull(tests[1]->value_param())); 16913481Sgiacomo.travaglini@arm.com EXPECT_TRUE(IsNull(tests[1]->type_param())); 17013481Sgiacomo.travaglini@arm.com EXPECT_TRUE(tests[1]->should_run()); 17113481Sgiacomo.travaglini@arm.com 17213481Sgiacomo.travaglini@arm.com EXPECT_STREQ("TestCaseImmutableAccessorsWork", tests[2]->name()); 17313481Sgiacomo.travaglini@arm.com EXPECT_STREQ("ApiTest", tests[2]->test_case_name()); 17413481Sgiacomo.travaglini@arm.com EXPECT_TRUE(IsNull(tests[2]->value_param())); 17513481Sgiacomo.travaglini@arm.com EXPECT_TRUE(IsNull(tests[2]->type_param())); 17613481Sgiacomo.travaglini@arm.com EXPECT_TRUE(tests[2]->should_run()); 17713481Sgiacomo.travaglini@arm.com 17813481Sgiacomo.travaglini@arm.com EXPECT_STREQ("UnitTestImmutableAccessorsWork", tests[3]->name()); 17913481Sgiacomo.travaglini@arm.com EXPECT_STREQ("ApiTest", tests[3]->test_case_name()); 18013481Sgiacomo.travaglini@arm.com EXPECT_TRUE(IsNull(tests[3]->value_param())); 18113481Sgiacomo.travaglini@arm.com EXPECT_TRUE(IsNull(tests[3]->type_param())); 18213481Sgiacomo.travaglini@arm.com EXPECT_TRUE(tests[3]->should_run()); 18313481Sgiacomo.travaglini@arm.com 18413481Sgiacomo.travaglini@arm.com delete[] tests; 18513481Sgiacomo.travaglini@arm.com tests = NULL; 18613481Sgiacomo.travaglini@arm.com 18713481Sgiacomo.travaglini@arm.com#if GTEST_HAS_TYPED_TEST 18813481Sgiacomo.travaglini@arm.com test_case = UnitTestHelper::FindTestCase("TestCaseWithCommentTest/0"); 18913481Sgiacomo.travaglini@arm.com ASSERT_TRUE(test_case != NULL); 19013481Sgiacomo.travaglini@arm.com 19113481Sgiacomo.travaglini@arm.com EXPECT_STREQ("TestCaseWithCommentTest/0", test_case->name()); 19213481Sgiacomo.travaglini@arm.com EXPECT_STREQ(GetTypeName<int>().c_str(), test_case->type_param()); 19313481Sgiacomo.travaglini@arm.com EXPECT_TRUE(test_case->should_run()); 19413481Sgiacomo.travaglini@arm.com EXPECT_EQ(0, test_case->disabled_test_count()); 19513481Sgiacomo.travaglini@arm.com EXPECT_EQ(1, test_case->test_to_run_count()); 19613481Sgiacomo.travaglini@arm.com ASSERT_EQ(1, test_case->total_test_count()); 19713481Sgiacomo.travaglini@arm.com 19813481Sgiacomo.travaglini@arm.com tests = UnitTestHelper::GetSortedTests(test_case); 19913481Sgiacomo.travaglini@arm.com 20013481Sgiacomo.travaglini@arm.com EXPECT_STREQ("Dummy", tests[0]->name()); 20113481Sgiacomo.travaglini@arm.com EXPECT_STREQ("TestCaseWithCommentTest/0", tests[0]->test_case_name()); 20213481Sgiacomo.travaglini@arm.com EXPECT_TRUE(IsNull(tests[0]->value_param())); 20313481Sgiacomo.travaglini@arm.com EXPECT_STREQ(GetTypeName<int>().c_str(), tests[0]->type_param()); 20413481Sgiacomo.travaglini@arm.com EXPECT_TRUE(tests[0]->should_run()); 20513481Sgiacomo.travaglini@arm.com 20613481Sgiacomo.travaglini@arm.com delete[] tests; 20713481Sgiacomo.travaglini@arm.com#endif // GTEST_HAS_TYPED_TEST 20813481Sgiacomo.travaglini@arm.com} 20913481Sgiacomo.travaglini@arm.com 21013481Sgiacomo.travaglini@arm.comTEST(ApiTest, TestCaseDisabledAccessorsWork) { 21113481Sgiacomo.travaglini@arm.com const TestCase* test_case = UnitTestHelper::FindTestCase("DISABLED_Test"); 21213481Sgiacomo.travaglini@arm.com ASSERT_TRUE(test_case != NULL); 21313481Sgiacomo.travaglini@arm.com 21413481Sgiacomo.travaglini@arm.com EXPECT_STREQ("DISABLED_Test", test_case->name()); 21513481Sgiacomo.travaglini@arm.com EXPECT_TRUE(IsNull(test_case->type_param())); 21613481Sgiacomo.travaglini@arm.com EXPECT_FALSE(test_case->should_run()); 21713481Sgiacomo.travaglini@arm.com EXPECT_EQ(1, test_case->disabled_test_count()); 21813481Sgiacomo.travaglini@arm.com EXPECT_EQ(0, test_case->test_to_run_count()); 21913481Sgiacomo.travaglini@arm.com ASSERT_EQ(1, test_case->total_test_count()); 22013481Sgiacomo.travaglini@arm.com 22113481Sgiacomo.travaglini@arm.com const TestInfo* const test_info = test_case->GetTestInfo(0); 22213481Sgiacomo.travaglini@arm.com EXPECT_STREQ("Dummy2", test_info->name()); 22313481Sgiacomo.travaglini@arm.com EXPECT_STREQ("DISABLED_Test", test_info->test_case_name()); 22413481Sgiacomo.travaglini@arm.com EXPECT_TRUE(IsNull(test_info->value_param())); 22513481Sgiacomo.travaglini@arm.com EXPECT_TRUE(IsNull(test_info->type_param())); 22613481Sgiacomo.travaglini@arm.com EXPECT_FALSE(test_info->should_run()); 22713481Sgiacomo.travaglini@arm.com} 22813481Sgiacomo.travaglini@arm.com 22913481Sgiacomo.travaglini@arm.com// These two tests are here to provide support for testing 23013481Sgiacomo.travaglini@arm.com// test_case_to_run_count, disabled_test_count, and test_to_run_count. 23113481Sgiacomo.travaglini@arm.comTEST(ApiTest, DISABLED_Dummy1) {} 23213481Sgiacomo.travaglini@arm.comTEST(DISABLED_Test, Dummy2) {} 23313481Sgiacomo.travaglini@arm.com 23413481Sgiacomo.travaglini@arm.comclass FinalSuccessChecker : public Environment { 23513481Sgiacomo.travaglini@arm.com protected: 23613481Sgiacomo.travaglini@arm.com virtual void TearDown() { 23713481Sgiacomo.travaglini@arm.com UnitTest* unit_test = UnitTest::GetInstance(); 23813481Sgiacomo.travaglini@arm.com 23913481Sgiacomo.travaglini@arm.com EXPECT_EQ(1 + kTypedTestCases, unit_test->successful_test_case_count()); 24013481Sgiacomo.travaglini@arm.com EXPECT_EQ(3 + kTypedTests, unit_test->successful_test_count()); 24113481Sgiacomo.travaglini@arm.com EXPECT_EQ(0, unit_test->failed_test_case_count()); 24213481Sgiacomo.travaglini@arm.com EXPECT_EQ(0, unit_test->failed_test_count()); 24313481Sgiacomo.travaglini@arm.com EXPECT_TRUE(unit_test->Passed()); 24413481Sgiacomo.travaglini@arm.com EXPECT_FALSE(unit_test->Failed()); 24513481Sgiacomo.travaglini@arm.com ASSERT_EQ(2 + kTypedTestCases, unit_test->total_test_case_count()); 24613481Sgiacomo.travaglini@arm.com 24713481Sgiacomo.travaglini@arm.com const TestCase** const test_cases = UnitTestHelper::GetSortedTestCases(); 24813481Sgiacomo.travaglini@arm.com 24913481Sgiacomo.travaglini@arm.com EXPECT_STREQ("ApiTest", test_cases[0]->name()); 25013481Sgiacomo.travaglini@arm.com EXPECT_TRUE(IsNull(test_cases[0]->type_param())); 25113481Sgiacomo.travaglini@arm.com EXPECT_TRUE(test_cases[0]->should_run()); 25213481Sgiacomo.travaglini@arm.com EXPECT_EQ(1, test_cases[0]->disabled_test_count()); 25313481Sgiacomo.travaglini@arm.com ASSERT_EQ(4, test_cases[0]->total_test_count()); 25413481Sgiacomo.travaglini@arm.com EXPECT_EQ(3, test_cases[0]->successful_test_count()); 25513481Sgiacomo.travaglini@arm.com EXPECT_EQ(0, test_cases[0]->failed_test_count()); 25613481Sgiacomo.travaglini@arm.com EXPECT_TRUE(test_cases[0]->Passed()); 25713481Sgiacomo.travaglini@arm.com EXPECT_FALSE(test_cases[0]->Failed()); 25813481Sgiacomo.travaglini@arm.com 25913481Sgiacomo.travaglini@arm.com EXPECT_STREQ("DISABLED_Test", test_cases[1]->name()); 26013481Sgiacomo.travaglini@arm.com EXPECT_TRUE(IsNull(test_cases[1]->type_param())); 26113481Sgiacomo.travaglini@arm.com EXPECT_FALSE(test_cases[1]->should_run()); 26213481Sgiacomo.travaglini@arm.com EXPECT_EQ(1, test_cases[1]->disabled_test_count()); 26313481Sgiacomo.travaglini@arm.com ASSERT_EQ(1, test_cases[1]->total_test_count()); 26413481Sgiacomo.travaglini@arm.com EXPECT_EQ(0, test_cases[1]->successful_test_count()); 26513481Sgiacomo.travaglini@arm.com EXPECT_EQ(0, test_cases[1]->failed_test_count()); 26613481Sgiacomo.travaglini@arm.com 26713481Sgiacomo.travaglini@arm.com#if GTEST_HAS_TYPED_TEST 26813481Sgiacomo.travaglini@arm.com EXPECT_STREQ("TestCaseWithCommentTest/0", test_cases[2]->name()); 26913481Sgiacomo.travaglini@arm.com EXPECT_STREQ(GetTypeName<int>().c_str(), test_cases[2]->type_param()); 27013481Sgiacomo.travaglini@arm.com EXPECT_TRUE(test_cases[2]->should_run()); 27113481Sgiacomo.travaglini@arm.com EXPECT_EQ(0, test_cases[2]->disabled_test_count()); 27213481Sgiacomo.travaglini@arm.com ASSERT_EQ(1, test_cases[2]->total_test_count()); 27313481Sgiacomo.travaglini@arm.com EXPECT_EQ(1, test_cases[2]->successful_test_count()); 27413481Sgiacomo.travaglini@arm.com EXPECT_EQ(0, test_cases[2]->failed_test_count()); 27513481Sgiacomo.travaglini@arm.com EXPECT_TRUE(test_cases[2]->Passed()); 27613481Sgiacomo.travaglini@arm.com EXPECT_FALSE(test_cases[2]->Failed()); 27713481Sgiacomo.travaglini@arm.com#endif // GTEST_HAS_TYPED_TEST 27813481Sgiacomo.travaglini@arm.com 27913481Sgiacomo.travaglini@arm.com const TestCase* test_case = UnitTestHelper::FindTestCase("ApiTest"); 28013481Sgiacomo.travaglini@arm.com const TestInfo** tests = UnitTestHelper::GetSortedTests(test_case); 28113481Sgiacomo.travaglini@arm.com EXPECT_STREQ("DISABLED_Dummy1", tests[0]->name()); 28213481Sgiacomo.travaglini@arm.com EXPECT_STREQ("ApiTest", tests[0]->test_case_name()); 28313481Sgiacomo.travaglini@arm.com EXPECT_FALSE(tests[0]->should_run()); 28413481Sgiacomo.travaglini@arm.com 28513481Sgiacomo.travaglini@arm.com EXPECT_STREQ("TestCaseDisabledAccessorsWork", tests[1]->name()); 28613481Sgiacomo.travaglini@arm.com EXPECT_STREQ("ApiTest", tests[1]->test_case_name()); 28713481Sgiacomo.travaglini@arm.com EXPECT_TRUE(IsNull(tests[1]->value_param())); 28813481Sgiacomo.travaglini@arm.com EXPECT_TRUE(IsNull(tests[1]->type_param())); 28913481Sgiacomo.travaglini@arm.com EXPECT_TRUE(tests[1]->should_run()); 29013481Sgiacomo.travaglini@arm.com EXPECT_TRUE(tests[1]->result()->Passed()); 29113481Sgiacomo.travaglini@arm.com EXPECT_EQ(0, tests[1]->result()->test_property_count()); 29213481Sgiacomo.travaglini@arm.com 29313481Sgiacomo.travaglini@arm.com EXPECT_STREQ("TestCaseImmutableAccessorsWork", tests[2]->name()); 29413481Sgiacomo.travaglini@arm.com EXPECT_STREQ("ApiTest", tests[2]->test_case_name()); 29513481Sgiacomo.travaglini@arm.com EXPECT_TRUE(IsNull(tests[2]->value_param())); 29613481Sgiacomo.travaglini@arm.com EXPECT_TRUE(IsNull(tests[2]->type_param())); 29713481Sgiacomo.travaglini@arm.com EXPECT_TRUE(tests[2]->should_run()); 29813481Sgiacomo.travaglini@arm.com EXPECT_TRUE(tests[2]->result()->Passed()); 29913481Sgiacomo.travaglini@arm.com EXPECT_EQ(0, tests[2]->result()->test_property_count()); 30013481Sgiacomo.travaglini@arm.com 30113481Sgiacomo.travaglini@arm.com EXPECT_STREQ("UnitTestImmutableAccessorsWork", tests[3]->name()); 30213481Sgiacomo.travaglini@arm.com EXPECT_STREQ("ApiTest", tests[3]->test_case_name()); 30313481Sgiacomo.travaglini@arm.com EXPECT_TRUE(IsNull(tests[3]->value_param())); 30413481Sgiacomo.travaglini@arm.com EXPECT_TRUE(IsNull(tests[3]->type_param())); 30513481Sgiacomo.travaglini@arm.com EXPECT_TRUE(tests[3]->should_run()); 30613481Sgiacomo.travaglini@arm.com EXPECT_TRUE(tests[3]->result()->Passed()); 30713481Sgiacomo.travaglini@arm.com EXPECT_EQ(1, tests[3]->result()->test_property_count()); 30813481Sgiacomo.travaglini@arm.com const TestProperty& property = tests[3]->result()->GetTestProperty(0); 30913481Sgiacomo.travaglini@arm.com EXPECT_STREQ("key", property.key()); 31013481Sgiacomo.travaglini@arm.com EXPECT_STREQ("value", property.value()); 31113481Sgiacomo.travaglini@arm.com 31213481Sgiacomo.travaglini@arm.com delete[] tests; 31313481Sgiacomo.travaglini@arm.com 31413481Sgiacomo.travaglini@arm.com#if GTEST_HAS_TYPED_TEST 31513481Sgiacomo.travaglini@arm.com test_case = UnitTestHelper::FindTestCase("TestCaseWithCommentTest/0"); 31613481Sgiacomo.travaglini@arm.com tests = UnitTestHelper::GetSortedTests(test_case); 31713481Sgiacomo.travaglini@arm.com 31813481Sgiacomo.travaglini@arm.com EXPECT_STREQ("Dummy", tests[0]->name()); 31913481Sgiacomo.travaglini@arm.com EXPECT_STREQ("TestCaseWithCommentTest/0", tests[0]->test_case_name()); 32013481Sgiacomo.travaglini@arm.com EXPECT_TRUE(IsNull(tests[0]->value_param())); 32113481Sgiacomo.travaglini@arm.com EXPECT_STREQ(GetTypeName<int>().c_str(), tests[0]->type_param()); 32213481Sgiacomo.travaglini@arm.com EXPECT_TRUE(tests[0]->should_run()); 32313481Sgiacomo.travaglini@arm.com EXPECT_TRUE(tests[0]->result()->Passed()); 32413481Sgiacomo.travaglini@arm.com EXPECT_EQ(0, tests[0]->result()->test_property_count()); 32513481Sgiacomo.travaglini@arm.com 32613481Sgiacomo.travaglini@arm.com delete[] tests; 32713481Sgiacomo.travaglini@arm.com#endif // GTEST_HAS_TYPED_TEST 32813481Sgiacomo.travaglini@arm.com delete[] test_cases; 32913481Sgiacomo.travaglini@arm.com } 33013481Sgiacomo.travaglini@arm.com}; 33113481Sgiacomo.travaglini@arm.com 33213481Sgiacomo.travaglini@arm.com} // namespace internal 33313481Sgiacomo.travaglini@arm.com} // namespace testing 33413481Sgiacomo.travaglini@arm.com 33513481Sgiacomo.travaglini@arm.comint main(int argc, char **argv) { 33613481Sgiacomo.travaglini@arm.com InitGoogleTest(&argc, argv); 33713481Sgiacomo.travaglini@arm.com 33813481Sgiacomo.travaglini@arm.com AddGlobalTestEnvironment(new testing::internal::FinalSuccessChecker()); 33913481Sgiacomo.travaglini@arm.com 34013481Sgiacomo.travaglini@arm.com return RUN_ALL_TESTS(); 34113481Sgiacomo.travaglini@arm.com} 342