summaryrefslogtreecommitdiff
path: root/tools/slang-test/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/slang-test/main.cpp')
-rw-r--r--tools/slang-test/main.cpp20
1 files changed, 14 insertions, 6 deletions
diff --git a/tools/slang-test/main.cpp b/tools/slang-test/main.cpp
index d85a3856b..cdea6b4dc 100644
--- a/tools/slang-test/main.cpp
+++ b/tools/slang-test/main.cpp
@@ -1,6 +1,7 @@
// main.cpp
#include "../../source/core/slang-io.h"
+#include "../../source/core/token-reader.h"
using namespace Slang;
@@ -20,7 +21,6 @@ using namespace Slang;
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
-
enum OutputMode
{
// Default mode is to write test results to the console
@@ -1164,12 +1164,20 @@ TestResult doComputeComparisonTestRunImpl(TestInput& input, const char * langOpt
auto referenceProgramOutput = Split(File::ReadAllText(referenceOutput), '\n');
if (actualProgramOutput.Count() < referenceProgramOutput.Count())
return kTestResult_Fail;
- for (int i = 0; i < referenceProgramOutput.Count(); i++)
+ for (int i = 0; i < (int)referenceProgramOutput.Count(); i++)
{
- auto reference = StringToFloat(referenceProgramOutput[i]);
- auto actual = StringToFloat(actualProgramOutput[i]);
- if (abs(actual - reference) > 1e-7f)
- return kTestResult_Fail;
+ auto reference = referenceProgramOutput[i];
+ auto actual = actualProgramOutput[i];
+ if (actual != reference)
+ {
+ // try to parse reference as float, and compare again
+ auto val = StringToFloat(reference);
+ auto uval = String((unsigned int)FloatAsInt(val), 16).ToUpper();
+ if (actual != uval)
+ return kTestResult_Fail;
+ else
+ return kTestResult_Pass;
+ }
}
return kTestResult_Pass;
}