141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// Copyright 2008 Google Inc. 241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// All Rights Reserved. 341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// 441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// Redistribution and use in source and binary forms, with or without 541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// modification, are permitted provided that the following conditions are 641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// met: 741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// 841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// * Redistributions of source code must retain the above copyright 941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// notice, this list of conditions and the following disclaimer. 1041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// * Redistributions in binary form must reproduce the above 1141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// copyright notice, this list of conditions and the following disclaimer 1241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// in the documentation and/or other materials provided with the 1341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// distribution. 1441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// * Neither the name of Google Inc. nor the names of its 1541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// contributors may be used to endorse or promote products derived from 1641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// this software without specific prior written permission. 1741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// 1841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// 301be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania// Author: mheule@google.com (Markus Heule) 3141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot// 321be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 3341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot#include "gtest/gtest-test-part.h" 341be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 3541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot#include "gtest/gtest.h" 361be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 3741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabotusing testing::Message; 381be2c9def7187e4e643c00a31dd9986395795d7dNicolas Cataniausing testing::Test; 391be2c9def7187e4e643c00a31dd9986395795d7dNicolas Cataniausing testing::TestPartResult; 401be2c9def7187e4e643c00a31dd9986395795d7dNicolas Cataniausing testing::TestPartResultArray; 411be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 421be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catanianamespace { 431be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 441be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania// Tests the TestPartResult class. 451be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 461be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania// The test fixture for testing TestPartResult. 471be2c9def7187e4e643c00a31dd9986395795d7dNicolas Cataniaclass TestPartResultTest : public Test { 481be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania protected: 491be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania TestPartResultTest() 5041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot : r1_(TestPartResult::kSuccess, "foo/bar.cc", 10, "Success!"), 5141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot r2_(TestPartResult::kNonFatalFailure, "foo/bar.cc", -1, "Failure!"), 5241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot r3_(TestPartResult::kFatalFailure, NULL, -1, "Failure!") {} 531be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 541be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania TestPartResult r1_, r2_, r3_; 551be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania}; 561be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 5741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 5841d0579e8de9ef4ff178fc4991043c61a19943f7Brett ChabotTEST_F(TestPartResultTest, ConstructorWorks) { 5941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot Message message; 6041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot message << "something is terribly wrong"; 6141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot message << static_cast<const char*>(testing::internal::kStackTraceMarker); 6241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot message << "some unimportant stack trace"; 6341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 6441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot const TestPartResult result(TestPartResult::kNonFatalFailure, 6541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot "some_file.cc", 6641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 42, 6741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot message.GetString().c_str()); 6841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 6941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(TestPartResult::kNonFatalFailure, result.type()); 7041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("some_file.cc", result.file_name()); 7141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(42, result.line_number()); 7241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ(message.GetString().c_str(), result.message()); 7341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_STREQ("something is terribly wrong", result.summary()); 7441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot} 7541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 7641d0579e8de9ef4ff178fc4991043c61a19943f7Brett ChabotTEST_F(TestPartResultTest, ResultAccessorsWork) { 7741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot const TestPartResult success(TestPartResult::kSuccess, 7841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot "file.cc", 7941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 42, 8041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot "message"); 8141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(success.passed()); 8241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_FALSE(success.failed()); 8341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_FALSE(success.nonfatally_failed()); 8441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_FALSE(success.fatally_failed()); 8541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 8641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot const TestPartResult nonfatal_failure(TestPartResult::kNonFatalFailure, 8741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot "file.cc", 8841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 42, 8941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot "message"); 9041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_FALSE(nonfatal_failure.passed()); 9141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(nonfatal_failure.failed()); 9241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(nonfatal_failure.nonfatally_failed()); 9341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_FALSE(nonfatal_failure.fatally_failed()); 9441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 9541d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot const TestPartResult fatal_failure(TestPartResult::kFatalFailure, 9641d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot "file.cc", 9741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 42, 9841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot "message"); 9941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_FALSE(fatal_failure.passed()); 10041d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(fatal_failure.failed()); 10141d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_FALSE(fatal_failure.nonfatally_failed()); 10241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_TRUE(fatal_failure.fatally_failed()); 10341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot} 10441d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot 1051be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania// Tests TestPartResult::type(). 1061be2c9def7187e4e643c00a31dd9986395795d7dNicolas CataniaTEST_F(TestPartResultTest, type) { 10741d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(TestPartResult::kSuccess, r1_.type()); 10841d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(TestPartResult::kNonFatalFailure, r2_.type()); 10941d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_EQ(TestPartResult::kFatalFailure, r3_.type()); 1101be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania} 1111be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 1121be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania// Tests TestPartResult::file_name(). 1131be2c9def7187e4e643c00a31dd9986395795d7dNicolas CataniaTEST_F(TestPartResultTest, file_name) { 1141be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_STREQ("foo/bar.cc", r1_.file_name()); 1151be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_STREQ(NULL, r3_.file_name()); 1161be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania} 1171be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 1181be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania// Tests TestPartResult::line_number(). 1191be2c9def7187e4e643c00a31dd9986395795d7dNicolas CataniaTEST_F(TestPartResultTest, line_number) { 1201be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_EQ(10, r1_.line_number()); 1211be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_EQ(-1, r2_.line_number()); 1221be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania} 1231be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 1241be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania// Tests TestPartResult::message(). 1251be2c9def7187e4e643c00a31dd9986395795d7dNicolas CataniaTEST_F(TestPartResultTest, message) { 1261be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_STREQ("Success!", r1_.message()); 1271be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania} 1281be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 1291be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania// Tests TestPartResult::passed(). 1301be2c9def7187e4e643c00a31dd9986395795d7dNicolas CataniaTEST_F(TestPartResultTest, Passed) { 1311be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_TRUE(r1_.passed()); 1321be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_FALSE(r2_.passed()); 1331be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_FALSE(r3_.passed()); 1341be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania} 1351be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 1361be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania// Tests TestPartResult::failed(). 1371be2c9def7187e4e643c00a31dd9986395795d7dNicolas CataniaTEST_F(TestPartResultTest, Failed) { 1381be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_FALSE(r1_.failed()); 1391be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_TRUE(r2_.failed()); 1401be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_TRUE(r3_.failed()); 1411be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania} 1421be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 1431be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania// Tests TestPartResult::fatally_failed(). 1441be2c9def7187e4e643c00a31dd9986395795d7dNicolas CataniaTEST_F(TestPartResultTest, FatallyFailed) { 1451be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_FALSE(r1_.fatally_failed()); 1461be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_FALSE(r2_.fatally_failed()); 1471be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_TRUE(r3_.fatally_failed()); 1481be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania} 1491be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 1501be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania// Tests TestPartResult::nonfatally_failed(). 1511be2c9def7187e4e643c00a31dd9986395795d7dNicolas CataniaTEST_F(TestPartResultTest, NonfatallyFailed) { 1521be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_FALSE(r1_.nonfatally_failed()); 1531be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_TRUE(r2_.nonfatally_failed()); 1541be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_FALSE(r3_.nonfatally_failed()); 1551be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania} 1561be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 1571be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania// Tests the TestPartResultArray class. 1581be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 1591be2c9def7187e4e643c00a31dd9986395795d7dNicolas Cataniaclass TestPartResultArrayTest : public Test { 1601be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania protected: 1611be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania TestPartResultArrayTest() 16241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot : r1_(TestPartResult::kNonFatalFailure, "foo/bar.cc", -1, "Failure 1"), 16341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot r2_(TestPartResult::kFatalFailure, "foo/bar.cc", -1, "Failure 2") {} 1641be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 1651be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania const TestPartResult r1_, r2_; 1661be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania}; 1671be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 1681be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania// Tests that TestPartResultArray initially has size 0. 1691be2c9def7187e4e643c00a31dd9986395795d7dNicolas CataniaTEST_F(TestPartResultArrayTest, InitialSizeIsZero) { 1701be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania TestPartResultArray results; 1711be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_EQ(0, results.size()); 1721be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania} 1731be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 1741be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania// Tests that TestPartResultArray contains the given TestPartResult 1751be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania// after one Append() operation. 1761be2c9def7187e4e643c00a31dd9986395795d7dNicolas CataniaTEST_F(TestPartResultArrayTest, ContainsGivenResultAfterAppend) { 1771be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania TestPartResultArray results; 1781be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania results.Append(r1_); 1791be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_EQ(1, results.size()); 1801be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_STREQ("Failure 1", results.GetTestPartResult(0).message()); 1811be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania} 1821be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 1831be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania// Tests that TestPartResultArray contains the given TestPartResults 1841be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania// after two Append() operations. 1851be2c9def7187e4e643c00a31dd9986395795d7dNicolas CataniaTEST_F(TestPartResultArrayTest, ContainsGivenResultsAfterTwoAppends) { 1861be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania TestPartResultArray results; 1871be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania results.Append(r1_); 1881be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania results.Append(r2_); 1891be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_EQ(2, results.size()); 1901be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_STREQ("Failure 1", results.GetTestPartResult(0).message()); 1911be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania EXPECT_STREQ("Failure 2", results.GetTestPartResult(1).message()); 1921be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania} 1931be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 1941be2c9def7187e4e643c00a31dd9986395795d7dNicolas Cataniatypedef TestPartResultArrayTest TestPartResultArrayDeathTest; 1951be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 1961be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania// Tests that the program dies when GetTestPartResult() is called with 1971be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania// an invalid index. 1981be2c9def7187e4e643c00a31dd9986395795d7dNicolas CataniaTEST_F(TestPartResultArrayDeathTest, DiesWhenIndexIsOutOfBound) { 1991be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania TestPartResultArray results; 2001be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania results.Append(r1_); 2011be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 20241d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_DEATH_IF_SUPPORTED(results.GetTestPartResult(-1), ""); 20341d0579e8de9ef4ff178fc4991043c61a19943f7Brett Chabot EXPECT_DEATH_IF_SUPPORTED(results.GetTestPartResult(1), ""); 2041be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania} 2051be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 2061be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania// TODO(mheule@google.com): Add a test for the class HasNewFatalFailureHelper. 2071be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania 2081be2c9def7187e4e643c00a31dd9986395795d7dNicolas Catania} // namespace 209