- #include "UnitTest++/UnitTestPP.h" 
- #include "UnitTest++/CurrentTest.h" 
- #include "RecordingReporter.h" 
- #include "ScopedCurrentTest.h" 
-   
- using namespace std; 
-   
- #ifndef UNITTEST_NO_EXCEPTIONS 
-   
- namespace { 
-   
-    TEST(RequireCheckSucceedsOnTrue) 
-    { 
-       bool failure = true; 
-       bool exception = false; 
-       { 
-          RecordingReporter reporter; 
-          UnitTest::TestResults testResults(&reporter); 
-   
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          try 
-          { 
-             REQUIRE CHECK(true); 
-          } 
-          catch(const UnitTest::RequiredCheckException&) 
-          { 
-             exception = true; 
-          } 
-   
-          failure = (testResults.GetFailureCount() > 0); 
-       } 
-   
-       CHECK(!failure); 
-       CHECK(!exception); 
-    } 
-   
-    TEST(RequiredCheckFailsOnFalse) 
-    { 
-       bool failure = false; 
-       bool exception = false; 
-       { 
-          RecordingReporter reporter; 
-          UnitTest::TestResults testResults(&reporter); 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          try 
-          { 
-             REQUIRE CHECK(false); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          { 
-             exception = true; 
-          } 
-   
-          failure = (testResults.GetFailureCount() > 0); 
-       } 
-   
-       CHECK(failure); 
-       CHECK(exception); 
-    } 
-   
-   
-    TEST(RequireMacroSupportsMultipleChecks) 
-    { 
-       bool failure = false; 
-       bool exception = false; 
-       { 
-          RecordingReporter reporter; 
-          UnitTest::TestResults testResults(&reporter); 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          try{ 
-             REQUIRE 
-             { 
-                CHECK(true); 
-                CHECK_EQUAL(1,1); 
-             } 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          { 
-             exception = true; 
-          } 
-   
-          failure = (testResults.GetFailureCount() > 0); 
-       } 
-   
-       CHECK(!failure); 
-       CHECK(!exception); 
-    } 
-   
-   
-    TEST(RequireMacroSupportsMultipleChecksWithFailingChecks) 
-    { 
-       bool failure = false; 
-       bool exception = false; 
-       { 
-          RecordingReporter reporter; 
-          UnitTest::TestResults testResults(&reporter); 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          try{ 
-             REQUIRE 
-             { 
-                CHECK(true); 
-                CHECK_EQUAL(1,2); 
-             } 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          { 
-             exception = true; 
-          } 
-   
-          failure = (testResults.GetFailureCount() > 0); 
-       } 
-   
-       CHECK(failure); 
-       CHECK(exception); 
-    } 
-   
-    TEST(RequireMacroDoesntExecuteCodeAfterAFailingCheck) 
-    { 
-       bool failure = false; 
-       bool exception = false; 
-       bool run = false; 
-       { 
-          RecordingReporter reporter; 
-          UnitTest::TestResults testResults(&reporter); 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          try{ 
-             REQUIRE 
-             { 
-                CHECK(false); 
-                run = true;     // this shouldn't get executed. 
-             } 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          { 
-             exception = true; 
-          } 
-   
-          failure = (testResults.GetFailureCount() > 0); 
-       } 
-   
-       CHECK(failure); 
-       CHECK(exception); 
-       CHECK(!run); 
-    } 
-   
-    TEST(FailureReportsCorrectTestName) 
-    { 
-       RecordingReporter reporter; 
-       { 
-          UnitTest::TestResults testResults(&reporter); 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          try 
-          { 
-             REQUIRE CHECK(false); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          {} 
-       } 
-   
-       CHECK_EQUAL(m_details.testName, reporter.lastFailedTest); 
-    } 
-   
-    TEST(RequiredCheckFailureIncludesCheckContents) 
-    { 
-       RecordingReporter reporter; 
-       { 
-          UnitTest::TestResults testResults(&reporter); 
-          ScopedCurrentTest scopedResults(testResults); 
-          const bool yaddayadda = false; 
-   
-          try 
-          { 
-             REQUIRE CHECK(yaddayadda); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          {} 
-       } 
-   
-       CHECK(strstr(reporter.lastFailedMessage, "yaddayadda")); 
-    } 
-   
-    TEST(RequiredCheckEqualSucceedsOnEqual) 
-    { 
-       bool failure = true; 
-       bool exception = false; 
-       { 
-          RecordingReporter reporter; 
-          UnitTest::TestResults testResults(&reporter); 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          try 
-          { 
-             REQUIRE CHECK_EQUAL(1,1); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          { 
-             exception = true; 
-          } 
-   
-          failure = (testResults.GetFailureCount() > 0); 
-       } 
-   
-       CHECK(!failure); 
-       CHECK(!exception); 
-    } 
-   
-    TEST(RequiredCheckEqualFailsOnNotEqual) 
-    { 
-       bool failure = false; 
-       bool exception = false; 
-       { 
-          RecordingReporter reporter; 
-          UnitTest::TestResults testResults(&reporter); 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          try 
-          { 
-             REQUIRE CHECK_EQUAL(1, 2); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          { 
-             exception = true; 
-          } 
-   
-          failure = (testResults.GetFailureCount() > 0); 
-       } 
-   
-       CHECK(failure); 
-       CHECK(exception); 
-    } 
-   
-    TEST(RequiredCheckEqualFailureContainsCorrectDetails) 
-    { 
-       int line = 0; 
-       RecordingReporter reporter; 
-       { 
-          UnitTest::TestResults testResults(&reporter); 
-          UnitTest::TestDetails const testDetails("testName", "suiteName", "filename", -1); 
-          ScopedCurrentTest scopedResults(testResults, &testDetails); 
-   
-          try 
-          { 
-             line = __LINE__; REQUIRE CHECK_EQUAL(1, 123); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          {} 
-       } 
-   
-       CHECK_EQUAL("testName", reporter.lastFailedTest); 
-       CHECK_EQUAL("suiteName", reporter.lastFailedSuite); 
-       CHECK_EQUAL("filename", reporter.lastFailedFile); 
-       CHECK_EQUAL(line, reporter.lastFailedLine); 
-    } 
-   
-    int g_sideEffect = 0; 
-    int FunctionWithSideEffects() 
-    { 
-       ++g_sideEffect; 
-       return 1; 
-    } 
-   
-    TEST(RequiredCheckEqualDoesNotHaveSideEffectsWhenPassing) 
-    { 
-       g_sideEffect = 0; 
-       { 
-          UnitTest::TestResults testResults; 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          try 
-          { 
-             REQUIRE CHECK_EQUAL(1, FunctionWithSideEffects()); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          {} 
-       } 
-       CHECK_EQUAL(1, g_sideEffect); 
-    } 
-   
-    TEST(RequiredCheckEqualDoesNotHaveSideEffectsWhenFailing) 
-    { 
-       g_sideEffect = 0; 
-       { 
-          UnitTest::TestResults testResults; 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          try 
-          { 
-             REQUIRE CHECK_EQUAL(2, FunctionWithSideEffects()); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          {} 
-       } 
-       CHECK_EQUAL(1, g_sideEffect); 
-    } 
-   
-   
-    TEST(RequiredCheckCloseSucceedsOnEqual) 
-    { 
-       bool failure = true; 
-       bool exception = false; 
-       { 
-          RecordingReporter reporter; 
-          UnitTest::TestResults testResults(&reporter); 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          try 
-          { 
-             REQUIRE CHECK_CLOSE(1.0f, 1.001f, 0.01f); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          { 
-             exception = true; 
-          } 
-   
-          failure = (testResults.GetFailureCount() > 0); 
-       } 
-   
-       CHECK(!failure); 
-       CHECK(!exception); 
-    } 
-   
-    TEST(RequiredCheckCloseFailsOnNotEqual) 
-    { 
-       bool failure = false; 
-       bool exception = false; 
-       { 
-          RecordingReporter reporter; 
-          UnitTest::TestResults testResults(&reporter); 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          try 
-          { 
-             REQUIRE CHECK_CLOSE (1.0f, 1.1f, 0.01f); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          { 
-             exception = true; 
-          } 
-   
-          failure = (testResults.GetFailureCount() > 0); 
-       } 
-   
-       CHECK(failure); 
-       CHECK(exception); 
-    } 
-   
-    TEST(RequiredCheckCloseFailureContainsCorrectDetails) 
-    { 
-       int line = 0; 
-       RecordingReporter reporter; 
-       { 
-          UnitTest::TestResults testResults(&reporter); 
-          UnitTest::TestDetails testDetails("test", "suite", "filename", -1); 
-          ScopedCurrentTest scopedResults(testResults, &testDetails); 
-   
-          try 
-          { 
-             line = __LINE__; REQUIRE CHECK_CLOSE(1.0f, 1.1f, 0.01f); 
-             CHECK(false); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          {} 
-       } 
-   
-       CHECK_EQUAL("test", reporter.lastFailedTest); 
-       CHECK_EQUAL("suite", reporter.lastFailedSuite); 
-       CHECK_EQUAL("filename", reporter.lastFailedFile); 
-       CHECK_EQUAL(line, reporter.lastFailedLine); 
-    } 
-   
-    TEST(RequiredCheckCloseDoesNotHaveSideEffectsWhenPassing) 
-    { 
-       g_sideEffect = 0; 
-       { 
-          UnitTest::TestResults testResults; 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          try 
-          { 
-             REQUIRE CHECK_CLOSE (1, FunctionWithSideEffects(), 0.1f); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          {} 
-       } 
-       CHECK_EQUAL(1, g_sideEffect); 
-    } 
-   
-    TEST(RequiredCheckCloseDoesNotHaveSideEffectsWhenFailing) 
-    { 
-       g_sideEffect = 0; 
-       { 
-          UnitTest::TestResults testResults; 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          try 
-          { 
-             REQUIRE CHECK_CLOSE(2, FunctionWithSideEffects(), 0.1f); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          {} 
-       } 
-       CHECK_EQUAL(1, g_sideEffect); 
-    } 
-   
-    TEST(RequiredCheckArrayCloseSucceedsOnEqual) 
-    { 
-       bool failure = true; 
-       bool exception = false; 
-       { 
-          RecordingReporter reporter; 
-          UnitTest::TestResults testResults(&reporter); 
-          ScopedCurrentTest scopedResults(testResults); 
-          const float data[4] = { 0, 1, 2, 3 }; 
-   
-          try 
-          { 
-             REQUIRE CHECK_ARRAY_CLOSE (data, data, 4, 0.01f); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          { 
-             exception = true; 
-          } 
-   
-          failure = (testResults.GetFailureCount() > 0); 
-       } 
-   
-       CHECK(!failure); 
-       CHECK(!exception); 
-    } 
-   
-    TEST(RequiredCheckArrayCloseFailsOnNotEqual) 
-    { 
-       bool failure = false; 
-       bool exception = false; 
-       { 
-          RecordingReporter reporter; 
-          UnitTest::TestResults testResults(&reporter); 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          int const data1[4] = { 0, 1, 2, 3 }; 
-          int const data2[4] = { 0, 1, 3, 3 }; 
-   
-          try 
-          { 
-             REQUIRE CHECK_ARRAY_CLOSE (data1, data2, 4, 0.01f); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          { 
-             exception = true; 
-          } 
-   
-          failure = (testResults.GetFailureCount() > 0); 
-       } 
-   
-       CHECK(failure); 
-       CHECK(exception); 
-    } 
-   
-    TEST(RequiredCheckArrayCloseFailureIncludesCheckExpectedAndActual) 
-    { 
-       RecordingReporter reporter; 
-       { 
-          UnitTest::TestResults testResults(&reporter); 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          int const data1[4] = { 0, 1, 2, 3 }; 
-          int const data2[4] = { 0, 1, 3, 3 }; 
-   
-          try 
-          { 
-             REQUIRE CHECK_ARRAY_CLOSE(data1, data2, 4, 0.01f); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          {} 
-       } 
-   
-       CHECK(strstr(reporter.lastFailedMessage, "xpected [ 0 1 2 3 ]")); 
-       CHECK(strstr(reporter.lastFailedMessage, "was [ 0 1 3 3 ]")); 
-    } 
-   
-    TEST(RequiredCheckArrayCloseFailureContainsCorrectDetails) 
-    { 
-       int line = 0; 
-       RecordingReporter reporter; 
-       { 
-          UnitTest::TestResults testResults(&reporter); 
-          UnitTest::TestDetails testDetails("arrayCloseTest", "arrayCloseSuite", "filename", -1); 
-          ScopedCurrentTest scopedResults(testResults, &testDetails); 
-   
-          int const data1[4] = { 0, 1, 2, 3 }; 
-          int const data2[4] = { 0, 1, 3, 3 }; 
-   
-          try 
-          { 
-             line = __LINE__; REQUIRE CHECK_ARRAY_CLOSE (data1, data2, 4, 0.01f); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          {} 
-       } 
-   
-       CHECK_EQUAL("arrayCloseTest", reporter.lastFailedTest); 
-       CHECK_EQUAL("arrayCloseSuite", reporter.lastFailedSuite); 
-       CHECK_EQUAL("filename", reporter.lastFailedFile); 
-       CHECK_EQUAL(line, reporter.lastFailedLine); 
-    } 
-   
-    TEST(RequiredCheckArrayCloseFailureIncludesTolerance) 
-    { 
-       RecordingReporter reporter; 
-       { 
-          UnitTest::TestResults testResults(&reporter); 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          float const data1[4] = { 0, 1, 2, 3 }; 
-          float const data2[4] = { 0, 1, 3, 3 }; 
-   
-          try 
-          { 
-             REQUIRE CHECK_ARRAY_CLOSE (data1, data2, 4, 0.01f); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          {} 
-       } 
-   
-       CHECK(strstr(reporter.lastFailedMessage, "0.01")); 
-    } 
-   
-    TEST(RequiredCheckArrayEqualSuceedsOnEqual) 
-    { 
-       bool failure = true; 
-       bool exception = false; 
-       { 
-          RecordingReporter reporter; 
-          UnitTest::TestResults testResults(&reporter); 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          const float data[4] = { 0, 1, 2, 3 }; 
-   
-          try 
-          { 
-             REQUIRE CHECK_ARRAY_EQUAL (data, data, 4); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          { 
-             exception = true; 
-          } 
-   
-          failure = (testResults.GetFailureCount() > 0); 
-       } 
-   
-       CHECK(!failure); 
-       CHECK(!exception); 
-    } 
-   
-    TEST(RequiredCheckArrayEqualFailsOnNotEqual) 
-    { 
-       bool failure = false; 
-       bool exception = false; 
-       { 
-          RecordingReporter reporter; 
-          UnitTest::TestResults testResults(&reporter); 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          int const data1[4] = { 0, 1, 2, 3 }; 
-          int const data2[4] = { 0, 1, 3, 3 }; 
-   
-          try 
-          { 
-             REQUIRE CHECK_ARRAY_EQUAL (data1, data2, 4); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          { 
-             exception = true; 
-          } 
-   
-          failure = (testResults.GetFailureCount() > 0); 
-       } 
-   
-       CHECK(failure); 
-       CHECK(exception); 
-    } 
-   
-    TEST(RequiredCheckArrayEqualFailureIncludesCheckExpectedAndActual) 
-    { 
-       RecordingReporter reporter; 
-       { 
-          UnitTest::TestResults testResults(&reporter); 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          int const data1[4] = { 0, 1, 2, 3 }; 
-          int const data2[4] = { 0, 1, 3, 3 }; 
-   
-          try 
-          { 
-             REQUIRE CHECK_ARRAY_EQUAL (data1, data2, 4); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          {} 
-       } 
-   
-       CHECK(strstr(reporter.lastFailedMessage, "xpected [ 0 1 2 3 ]")); 
-       CHECK(strstr(reporter.lastFailedMessage, "was [ 0 1 3 3 ]")); 
-    } 
-   
-    TEST(RequiredCheckArrayEqualFailureContainsCorrectInfo) 
-    { 
-       int line = 0; 
-       RecordingReporter reporter; 
-       { 
-          UnitTest::TestResults testResults(&reporter); 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          int const data1[4] = { 0, 1, 2, 3 }; 
-          int const data2[4] = { 0, 1, 3, 3 }; 
-   
-          try 
-          { 
-             line = __LINE__; REQUIRE CHECK_ARRAY_EQUAL (data1, data2, 4); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          {} 
-       } 
-   
-       CHECK_EQUAL("RequiredCheckArrayEqualFailureContainsCorrectInfo", reporter.lastFailedTest); 
-       CHECK_EQUAL(__FILE__, reporter.lastFailedFile); 
-       CHECK_EQUAL(line, reporter.lastFailedLine); 
-    } 
-   
-    float const* FunctionWithSideEffects2() 
-    { 
-       ++g_sideEffect; 
-       static float const data[] = {1,2,3,4}; 
-       return data; 
-    } 
-   
-    TEST(RequiredCheckArrayCloseDoesNotHaveSideEffectsWhenPassing) 
-    { 
-       g_sideEffect = 0; 
-       { 
-          UnitTest::TestResults testResults; 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          const float data[] = { 1, 2, 3, 4 }; 
-   
-          REQUIRE CHECK_ARRAY_CLOSE (data, FunctionWithSideEffects2(), 4, 0.01f); 
-       } 
-       CHECK_EQUAL(1, g_sideEffect); 
-    } 
-   
-    TEST(RequiredCheckArrayCloseDoesNotHaveSideEffectsWhenFailing) 
-    { 
-       g_sideEffect = 0; 
-       { 
-          UnitTest::TestResults testResults; 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          const float data[] = { 0, 1, 3, 3 }; 
-   
-          try 
-          { 
-             REQUIRE CHECK_ARRAY_CLOSE (data, FunctionWithSideEffects2(), 4, 0.01f); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          {} 
-       } 
-   
-       CHECK_EQUAL(1, g_sideEffect); 
-    } 
-   
-    TEST(RequiredCheckArray2DCloseSucceedsOnEqual) 
-    { 
-       bool failure = true; 
-       bool exception = false; 
-       { 
-          RecordingReporter reporter; 
-          UnitTest::TestResults testResults(&reporter); 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          const float data[2][2] = { {0, 1}, {2, 3} }; 
-   
-          try 
-          { 
-             REQUIRE CHECK_ARRAY2D_CLOSE(data, data, 2, 2, 0.01f); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          { 
-             exception = true; 
-          } 
-   
-          failure = (testResults.GetFailureCount() > 0); 
-       } 
-   
-       CHECK(!failure); 
-       CHECK(!exception); 
-    } 
-   
-    TEST(RequiredCheckArray2DCloseFailsOnNotEqual) 
-    { 
-       bool failure = false; 
-       bool exception = false; 
-       { 
-          RecordingReporter reporter; 
-          UnitTest::TestResults testResults(&reporter); 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          int const data1[2][2] = { {0, 1}, {2, 3} }; 
-          int const data2[2][2] = { {0, 1}, {3, 3} }; 
-   
-          try 
-          { 
-             REQUIRE CHECK_ARRAY2D_CLOSE (data1, data2, 2, 2, 0.01f); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          { 
-             exception = true; 
-          } 
-   
-          failure = (testResults.GetFailureCount() > 0); 
-       } 
-   
-       CHECK(failure); 
-       CHECK(exception); 
-    } 
-   
-    TEST(RequiredCheckArray2DCloseFailureIncludesCheckExpectedAndActual) 
-    { 
-       RecordingReporter reporter; 
-       { 
-          UnitTest::TestResults testResults(&reporter); 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          int const data1[2][2] = { {0, 1}, {2, 3} }; 
-          int const data2[2][2] = { {0, 1}, {3, 3} }; 
-   
-          try 
-          { 
-             REQUIRE CHECK_ARRAY2D_CLOSE (data1, data2, 2, 2, 0.01f); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          {} 
-       } 
-   
-       CHECK(strstr(reporter.lastFailedMessage, "xpected [ [ 0 1 ] [ 2 3 ] ]")); 
-       CHECK(strstr(reporter.lastFailedMessage, "was [ [ 0 1 ] [ 3 3 ] ]")); 
-    } 
-   
-    TEST(RequiredCheckArray2DCloseFailureContainsCorrectDetails) 
-    { 
-       int line = 0; 
-       RecordingReporter reporter; 
-       { 
-          UnitTest::TestResults testResults(&reporter); 
-          UnitTest::TestDetails testDetails("array2DCloseTest", "array2DCloseSuite", "filename", -1); 
-          ScopedCurrentTest scopedResults(testResults, &testDetails); 
-   
-          int const data1[2][2] = { {0, 1}, {2, 3} }; 
-          int const data2[2][2] = { {0, 1}, {3, 3} }; 
-   
-          try 
-          { 
-             line = __LINE__; REQUIRE CHECK_ARRAY2D_CLOSE (data1, data2, 2, 2, 0.01f); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          {} 
-       } 
-   
-       CHECK_EQUAL("array2DCloseTest", reporter.lastFailedTest); 
-       CHECK_EQUAL("array2DCloseSuite", reporter.lastFailedSuite); 
-       CHECK_EQUAL("filename", reporter.lastFailedFile); 
-       CHECK_EQUAL(line, reporter.lastFailedLine); 
-    } 
-   
-    TEST(RequiredCheckArray2DCloseFailureIncludesTolerance) 
-    { 
-       RecordingReporter reporter; 
-       { 
-          UnitTest::TestResults testResults(&reporter); 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          float const data1[2][2] = { {0, 1}, {2, 3} }; 
-          float const data2[2][2] = { {0, 1}, {3, 3} }; 
-   
-          try 
-          { 
-             REQUIRE CHECK_ARRAY2D_CLOSE (data1, data2, 2, 2, 0.01f); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          {} 
-       } 
-   
-       CHECK(strstr(reporter.lastFailedMessage, "0.01")); 
-    } 
-   
-    float const* const* FunctionWithSideEffects3() 
-    { 
-       ++g_sideEffect; 
-       static float const data1[] = {0,1}; 
-       static float const data2[] = {2,3}; 
-       static const float* const data[] = {data1, data2}; 
-       return data; 
-    } 
-   
-    TEST(RequiredCheckArray2DCloseDoesNotHaveSideEffectsWhenPassing) 
-    { 
-       g_sideEffect = 0; 
-       { 
-          UnitTest::TestResults testResults; 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          const float data[2][2] = { {0, 1}, {2, 3} }; 
-   
-          try 
-          { 
-             REQUIRE CHECK_ARRAY2D_CLOSE (data, FunctionWithSideEffects3(), 2, 2, 0.01f); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          {} 
-       } 
-       CHECK_EQUAL(1, g_sideEffect); 
-    } 
-   
-    TEST(RequiredCheckArray2DCloseDoesNotHaveSideEffectsWhenFailing) 
-    { 
-       g_sideEffect = 0; 
-       { 
-          UnitTest::TestResults testResults; 
-          ScopedCurrentTest scopedResults(testResults); 
-   
-          const float data[2][2] = { {0, 1}, {3, 3} }; 
-   
-          try 
-          { 
-             REQUIRE CHECK_ARRAY2D_CLOSE (data, FunctionWithSideEffects3(), 2, 2, 0.01f); 
-          } 
-          catch (const UnitTest::RequiredCheckException&) 
-          {} 
-       } 
-       CHECK_EQUAL(1, g_sideEffect); 
-    } 
-   
- } 
-   
- #endif 
-