@@ -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+
4450static 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
193199TEST (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