diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2018-09-13 14:02:33 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-09-13 14:02:33 -0400 |
| commit | 929745d75f0607ab5b2218083ca4ccb493eb6032 (patch) | |
| tree | 32ceddda261aaba108607b89aeb89ebafd424e00 /tools/slang-test/test-context.cpp | |
| parent | f60135cec62c91a9d7923397fe8796d2b3eaa5cb (diff) | |
Feature/memory arena improvements (#633)
* First pass at MemoryArena.
* First pass at RandomGenerator.
* Extract TestContext into external source file.
* Fix warning on printf.
* Use enum classes for Test enums.
OutputMode -> TestOutputMode.
* First pass at FreeList unit test.
* Auto registering tests.
Improvements to RandomGenerator.
* Remove the need for unitTest headers - cos can use registering.
* Added unitTest for MemoryArena.
* Do unit tests.
* Fix typo.
* Fix problem limiting errors from TestContext.
* Refactor of MemoryArena
* Removed the ability to rewind (to improve memory usage/simplify)
* Better memory usage - around oversized blocks
+ Will keep allocating from a normal block if more than 1/3 memory left, or an oversided block is allocated
* Better unitTest coverage for MemoryArena.
* Fixes based on code review
* Remove e prefix from enum class types for TestContext
* Added extra checking for allocations sizes
* Fixed some typos
* Added std::is_pod test to allocateAndCopyArray
* Add include for is_pod needed for linux build.
Diffstat (limited to 'tools/slang-test/test-context.cpp')
| -rw-r--r-- | tools/slang-test/test-context.cpp | 75 |
1 files changed, 40 insertions, 35 deletions
diff --git a/tools/slang-test/test-context.cpp b/tools/slang-test/test-context.cpp index f77262001..822a5953c 100644 --- a/tools/slang-test/test-context.cpp +++ b/tools/slang-test/test-context.cpp @@ -77,7 +77,7 @@ TestContext::TestContext(TestOutputMode outputMode) : m_failedTestCount = 0; m_ignoredTestCount = 0; - m_maxTestResults = 10; + m_maxFailTestResults = 10; m_inTest = false; m_dumpOutputOnFailure = false; @@ -88,8 +88,8 @@ bool TestContext::canWriteStdError() const { switch (m_outputMode) { - case TestOutputMode::eXUnit: - case TestOutputMode::eXUnit2: + case TestOutputMode::XUnit: + case TestOutputMode::XUnit2: { return false; } @@ -103,6 +103,8 @@ void TestContext::startTest(const String& testName) m_inTest = true; m_numCurrentResults = 0; + m_numFailResults = 0; + m_currentInfo = TestInfo(); m_currentInfo.name = testName; m_currentMessage.Clear(); @@ -133,19 +135,22 @@ void TestContext::addResultWithLocation(TestResult result, const char* testText, m_numCurrentResults++; m_currentInfo.testResult = combine(m_currentInfo.testResult, result); - if (result != TestResult::eFail) + if (result != TestResult::Fail) { // We don't need to output the result if it return; } - if (m_maxTestResults > 0) + m_numFailResults++; + + if (m_maxFailTestResults > 0) { - if (m_numCurrentResults > m_maxTestResults) + if (m_numFailResults > m_maxFailTestResults) { - if (m_numCurrentResults == m_maxTestResults + 1) + if (m_numFailResults == m_maxFailTestResults + 1) { - message(TestMessageType::eInfo, "..."); + // It's a failure, but to show that there are more than are going to be shown, just show '...' + message(TestMessageType::TestFailure, "..."); } return; } @@ -154,17 +159,17 @@ void TestContext::addResultWithLocation(TestResult result, const char* testText, StringBuilder buf; buf << testText << " - " << file << " (" << line << ")"; - message(TestMessageType::eTestFailure, buf); + message(TestMessageType::TestFailure, buf); } void TestContext::addResultWithLocation(bool testSucceeded, const char* testText, const char* file, int line) { - addResultWithLocation(testSucceeded ? TestResult::ePass : TestResult::eFail, testText, file, line); + addResultWithLocation(testSucceeded ? TestResult::Pass : TestResult::Fail, testText, file, line); } TestResult TestContext::addTest(const String& testName, bool isPass) { - const TestResult res = isPass ? TestResult::ePass : TestResult::eFail; + const TestResult res = isPass ? TestResult::Pass : TestResult::Fail; addTest(testName, res); return res; } @@ -188,7 +193,7 @@ void TestContext::dumpOutputDifference(const String& expectedOutput, const Strin } // Add to the m_currentInfo - message(TestMessageType::eTestFailure, builder); + message(TestMessageType::TestFailure, builder); } void TestContext::_addResult(const TestInfo& info) @@ -197,15 +202,15 @@ void TestContext::_addResult(const TestInfo& info) switch (info.testResult) { - case TestResult::eFail: + case TestResult::Fail: m_failedTestCount++; break; - case TestResult::ePass: + case TestResult::Pass: m_passedTestCount++; break; - case TestResult::eIgnored: + case TestResult::Ignored: m_ignoredTestCount++; break; @@ -224,9 +229,9 @@ void TestContext::_addResult(const TestInfo& info) char const* resultString = "UNEXPECTED"; switch (info.testResult) { - case TestResult::eFail: resultString = "FAILED"; break; - case TestResult::ePass: resultString = "passed"; break; - case TestResult::eIgnored: resultString = "ignored"; break; + case TestResult::Fail: resultString = "FAILED"; break; + case TestResult::Pass: resultString = "passed"; break; + case TestResult::Ignored: resultString = "ignored"; break; default: assert(!"unexpected"); break; @@ -234,20 +239,20 @@ void TestContext::_addResult(const TestInfo& info) printf("%s test: '%S'\n", resultString, info.name.ToWString().begin()); break; } - case TestOutputMode::eXUnit2: - case TestOutputMode::eXUnit: + case TestOutputMode::XUnit2: + case TestOutputMode::XUnit: { // Don't output anything -> we'll output all in one go at the end break; } - case TestOutputMode::eAppVeyor: + case TestOutputMode::AppVeyor: { char const* resultString = "None"; switch (info.testResult) { - case TestResult::eFail: resultString = "Failed"; break; - case TestResult::ePass: resultString = "Passed"; break; - case TestResult::eIgnored: resultString = "Ignored"; break; + case TestResult::Fail: resultString = "Failed"; break; + case TestResult::Pass: resultString = "Passed"; break; + case TestResult::Ignored: resultString = "Ignored"; break; default: assert(!"unexpected"); break; @@ -269,7 +274,7 @@ void TestContext::_addResult(const TestInfo& info) if (err != kOSError_None) { - messageFormat(TestMessageType::eInfo, "failed to add appveyor test results for '%S'\n", info.name.ToWString().begin()); + messageFormat(TestMessageType::Info, "failed to add appveyor test results for '%S'\n", info.name.ToWString().begin()); #if 0 fprintf(stderr, "[%d] TEST RESULT: %s {%d} {%s} {%s}\n", err, spawner.commandLine_.Buffer(), @@ -297,7 +302,7 @@ void TestContext::addTest(const String& testName, TestResult testResult) void TestContext::message(TestMessageType type, const String& message) { - if (type == TestMessageType::eInfo) + if (type == TestMessageType::Info) { if (m_isVerbose && canWriteStdError()) { @@ -310,7 +315,7 @@ void TestContext::message(TestMessageType type, const String& message) if (canWriteStdError()) { - if (type == TestMessageType::eRunError || type == TestMessageType::eTestFailure) + if (type == TestMessageType::RunError || type == TestMessageType::TestFailure) { fprintf(stderr, "error: "); fputs(message.Buffer(), stderr); @@ -383,7 +388,7 @@ void TestContext::outputSummary() printf("---\n"); for (const auto& testInfo : m_testInfos) { - if (testInfo.testResult == TestResult::eFail) + if (testInfo.testResult == TestResult::Fail) { printf("%s\n", testInfo.name.Buffer()); } @@ -392,7 +397,7 @@ void TestContext::outputSummary() } break; } - case TestOutputMode::eXUnit: + case TestOutputMode::XUnit: { // xUnit 1.0 format @@ -402,11 +407,11 @@ void TestContext::outputSummary() for (const auto& testInfo : m_testInfos) { - const int numFailed = (testInfo.testResult == TestResult::eFail); - const int numIgnored = (testInfo.testResult == TestResult::eIgnored); + const int numFailed = (testInfo.testResult == TestResult::Fail); + const int numIgnored = (testInfo.testResult == TestResult::Ignored); //int numPassed = (testInfo.testResult == TestResult::ePass); - if (testInfo.testResult == TestResult::ePass) + if (testInfo.testResult == TestResult::Pass) { printf(" <testcase name=\"%s\" status=\"run\"/>\n", testInfo.name.Buffer()); } @@ -415,7 +420,7 @@ void TestContext::outputSummary() printf(" <testcase name=\"%s\" status=\"run\">\n", testInfo.name.Buffer()); switch (testInfo.testResult) { - case TestResult::eFail: + case TestResult::Fail: { StringBuilder buf; appendXmlEncode(testInfo.message, buf); @@ -425,7 +430,7 @@ void TestContext::outputSummary() printf(" </error>\n"); break; } - case TestResult::eIgnored: + case TestResult::Ignored: { printf(" <skip>Ignored</skip>\n"); break; @@ -440,7 +445,7 @@ void TestContext::outputSummary() printf("</testSuites>\n"); break; } - case TestOutputMode::eXUnit2: + case TestOutputMode::XUnit2: { // https://xunit.github.io/docs/format-xml-v2 assert("Not currently supported"); |
