@@ -41,6 +41,12 @@ struct ParseResult {
41
41
uint32_t total;
42
42
};
43
43
44
+ enum class ParseStatus : uint8_t {
45
+ SUCCESS,
46
+ FILE_ERROR,
47
+ PARSE_ERROR,
48
+ };
49
+
44
50
static inline uint32_t hexCharToU32 (char in) {
45
51
return in > ' 9' ? in + 10 - ' A' : in - ' 0' ;
46
52
}
@@ -126,7 +132,7 @@ static void parseLine(char *line, ParseResult &parseResult, int32_t &curFails,
126
132
}
127
133
}
128
134
129
- int checkBuffer (ParseResult &parseResult) {
135
+ ParseStatus checkBuffer (ParseResult &parseResult) {
130
136
const char *lines[6 ] = {" 3C00 3F800000 3FF0000000000000 1" ,
131
137
" 3D00 3FA00000 3FF4000000000000 1.25" ,
132
138
" 3D9A 3FB33333 3FF6666666666666 1.4" ,
@@ -147,12 +153,12 @@ int checkBuffer(ParseResult &parseResult) {
147
153
parseResult.totalFails += curFails;
148
154
149
155
if (curFails > 1 || curBitDiffs > 1 ) {
150
- return 2 ;
156
+ return ParseStatus::PARSE_ERROR ;
151
157
}
152
- return 0 ;
158
+ return ParseStatus::SUCCESS ;
153
159
}
154
160
155
- int checkFile (char *inputFileName, ParseResult &parseResult) {
161
+ ParseStatus checkFile (char *inputFileName, ParseResult &parseResult) {
156
162
int32_t curFails = 0 ; // Only counts actual failures, not bitdiffs.
157
163
int32_t curBitDiffs = 0 ; // A bitdiff is when the expected result and actual
158
164
// result are off by +/- 1 bit.
@@ -163,7 +169,7 @@ int checkFile(char *inputFileName, ParseResult &parseResult) {
163
169
if (!fileHandle) {
164
170
LIBC_NAMESPACE::printf (" file '%s' failed to open. Exiting.\n " ,
165
171
inputFileName);
166
- return 1 ;
172
+ return ParseStatus::FILE_ERROR ;
167
173
}
168
174
169
175
while (LIBC_NAMESPACE::fgets (line, sizeof (line), fileHandle)) {
@@ -176,22 +182,22 @@ int checkFile(char *inputFileName, ParseResult &parseResult) {
176
182
parseResult.totalFails += curFails;
177
183
178
184
if (curFails > 1 || curBitDiffs > 1 ) {
179
- return 2 ;
185
+ return ParseStatus::PARSE_ERROR ;
180
186
}
181
- return 0 ;
187
+ return ParseStatus::SUCCESS ;
182
188
}
183
189
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 ;
189
195
}
190
196
return result;
191
197
}
192
198
193
199
TEST (LlvmLibcStrToFloatComparisonTest, CheckFloats) {
194
- int result = 0 ;
200
+ ParseStatus parseStatus = ParseStatus::SUCCESS ;
195
201
196
202
// Bitdiffs are cases where the expected result and actual result only differ
197
203
// by +/- the least significant bit. They are tracked separately from larger
@@ -208,18 +214,18 @@ TEST(LlvmLibcStrToFloatComparisonTest, CheckFloats) {
208
214
char *files = LIBC_NAMESPACE::getenv (" FILES" );
209
215
210
216
if (files == nullptr ) {
211
- int curResult = checkBuffer (parseResult);
212
- result = updateResult (result , curResult);
217
+ ParseStatus curResult = checkBuffer (parseResult);
218
+ parseStatus = updateResult (parseStatus , curResult);
213
219
} else {
214
220
files = LIBC_NAMESPACE::strdup (files);
215
221
for (char *file = LIBC_NAMESPACE::strtok (files, " ," ); file != nullptr ;
216
222
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);
219
225
}
220
226
}
221
227
222
- EXPECT_EQ (result, 0 );
228
+ EXPECT_EQ (parseStatus, ParseStatus::SUCCESS );
223
229
EXPECT_EQ (parseResult.totalFails , 0u );
224
230
EXPECT_EQ (parseResult.totalBitDiffs , 0u );
225
231
EXPECT_EQ (parseResult.detailedBitDiffs [0 ], 0u ); // float low
0 commit comments