summaryrefslogtreecommitdiff
path: root/tools/slang-test/test-context.cpp
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2018-09-13 14:02:33 -0400
committerGitHub <noreply@github.com>2018-09-13 14:02:33 -0400
commit929745d75f0607ab5b2218083ca4ccb493eb6032 (patch)
tree32ceddda261aaba108607b89aeb89ebafd424e00 /tools/slang-test/test-context.cpp
parentf60135cec62c91a9d7923397fe8796d2b3eaa5cb (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.cpp75
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");