Skip to content

Commit bcd11e0

Browse files
committed
Add ParseStatus to parse operations
1 parent 7194754 commit bcd11e0

File tree

1 file changed

+24
-18
lines changed

1 file changed

+24
-18
lines changed

libc/test/src/__support/str_to_float_comparison_test.cpp

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,12 @@ struct ParseResult {
4141
uint32_t total;
4242
};
4343

44+
enum class ParseStatus : uint8_t {
45+
SUCCESS,
46+
FILE_ERROR,
47+
PARSE_ERROR,
48+
};
49+
4450
static inline uint32_t hexCharToU32(char in) {
4551
return in > '9' ? in + 10 - 'A' : in - '0';
4652
}
@@ -126,7 +132,7 @@ static void parseLine(char *line, ParseResult &parseResult, int32_t &curFails,
126132
}
127133
}
128134

129-
int checkBuffer(ParseResult &parseResult) {
135+
ParseStatus checkBuffer(ParseResult &parseResult) {
130136
const char *lines[6] = {"3C00 3F800000 3FF0000000000000 1",
131137
"3D00 3FA00000 3FF4000000000000 1.25",
132138
"3D9A 3FB33333 3FF6666666666666 1.4",
@@ -147,12 +153,12 @@ int checkBuffer(ParseResult &parseResult) {
147153
parseResult.totalFails += curFails;
148154

149155
if (curFails > 1 || curBitDiffs > 1) {
150-
return 2;
156+
return ParseStatus::PARSE_ERROR;
151157
}
152-
return 0;
158+
return ParseStatus::SUCCESS;
153159
}
154160

155-
int checkFile(char *inputFileName, ParseResult &parseResult) {
161+
ParseStatus checkFile(char *inputFileName, ParseResult &parseResult) {
156162
int32_t curFails = 0; // Only counts actual failures, not bitdiffs.
157163
int32_t curBitDiffs = 0; // A bitdiff is when the expected result and actual
158164
// result are off by +/- 1 bit.
@@ -163,7 +169,7 @@ int checkFile(char *inputFileName, ParseResult &parseResult) {
163169
if (!fileHandle) {
164170
LIBC_NAMESPACE::printf("file '%s' failed to open. Exiting.\n",
165171
inputFileName);
166-
return 1;
172+
return ParseStatus::FILE_ERROR;
167173
}
168174

169175
while (LIBC_NAMESPACE::fgets(line, sizeof(line), fileHandle)) {
@@ -176,22 +182,22 @@ int checkFile(char *inputFileName, ParseResult &parseResult) {
176182
parseResult.totalFails += curFails;
177183

178184
if (curFails > 1 || curBitDiffs > 1) {
179-
return 2;
185+
return ParseStatus::PARSE_ERROR;
180186
}
181-
return 0;
187+
return ParseStatus::SUCCESS;
182188
}
183189

184-
int updateResult(int result, int curResult) {
185-
if (curResult == 1) {
186-
result = 1;
187-
} else if (curResult == 2) {
188-
result = 2;
190+
ParseStatus updateResult(ParseStatus result, ParseStatus curResult) {
191+
if (curResult == ParseStatus::FILE_ERROR) {
192+
result = ParseStatus::FILE_ERROR;
193+
} else if (curResult == ParseStatus::PARSE_ERROR) {
194+
result = ParseStatus::PARSE_ERROR;
189195
}
190196
return result;
191197
}
192198

193199
TEST(LlvmLibcStrToFloatComparisonTest, CheckFloats) {
194-
int result = 0;
200+
ParseStatus parseStatus = ParseStatus::SUCCESS;
195201

196202
// Bitdiffs are cases where the expected result and actual result only differ
197203
// by +/- the least significant bit. They are tracked separately from larger
@@ -208,18 +214,18 @@ TEST(LlvmLibcStrToFloatComparisonTest, CheckFloats) {
208214
char *files = LIBC_NAMESPACE::getenv("FILES");
209215

210216
if (files == nullptr) {
211-
int curResult = checkBuffer(parseResult);
212-
result = updateResult(result, curResult);
217+
ParseStatus curResult = checkBuffer(parseResult);
218+
parseStatus = updateResult(parseStatus, curResult);
213219
} else {
214220
files = LIBC_NAMESPACE::strdup(files);
215221
for (char *file = LIBC_NAMESPACE::strtok(files, ","); file != nullptr;
216222
file = LIBC_NAMESPACE::strtok(nullptr, ",")) {
217-
int curResult = checkFile(file, parseResult);
218-
result = updateResult(result, curResult);
223+
ParseStatus curResult = checkFile(file, parseResult);
224+
parseStatus = updateResult(parseStatus, curResult);
219225
}
220226
}
221227

222-
EXPECT_EQ(result, 0);
228+
EXPECT_EQ(parseStatus, ParseStatus::SUCCESS);
223229
EXPECT_EQ(parseResult.totalFails, 0u);
224230
EXPECT_EQ(parseResult.totalBitDiffs, 0u);
225231
EXPECT_EQ(parseResult.detailedBitDiffs[0], 0u); // float low

0 commit comments

Comments
 (0)