@@ -34,6 +34,7 @@ class TestMathLib : public TestFixture {
3434 TEST_CASE (convert);
3535 TEST_CASE (isint);
3636 TEST_CASE (isbin);
37+ TEST_CASE (isoct);
3738 TEST_CASE (isnegative);
3839 TEST_CASE (ispositive);
3940 TEST_CASE (isfloat);
@@ -371,6 +372,67 @@ class TestMathLib : public TestFixture {
371372 ASSERT_EQUALS (false , MathLib::isNegative (" +1.0E-2" ));
372373 }
373374
375+ void isoct () {
376+ // octal number format: [+|-]0[0-7][suffix]
377+ // positive testing
378+ ASSERT_EQUALS (true , MathLib::isOct (" 010" ));
379+ ASSERT_EQUALS (true , MathLib::isOct (" +010" ));
380+ ASSERT_EQUALS (true , MathLib::isOct (" -010" ));
381+ ASSERT_EQUALS (true , MathLib::isOct (" 0175" ));
382+ ASSERT_EQUALS (true , MathLib::isOct (" +0175" ));
383+ ASSERT_EQUALS (true , MathLib::isOct (" -0175" ));
384+ ASSERT_EQUALS (true , MathLib::isOct (" 00" ));
385+ ASSERT_EQUALS (true , MathLib::isOct (" 02" ));
386+ ASSERT_EQUALS (true , MathLib::isOct (" +042" ));
387+ ASSERT_EQUALS (true , MathLib::isOct (" -042" ));
388+ ASSERT_EQUALS (true , MathLib::isOct (" +042U" ));
389+ ASSERT_EQUALS (true , MathLib::isOct (" -042U" ));
390+ ASSERT_EQUALS (true , MathLib::isOct (" +042L" ));
391+ ASSERT_EQUALS (true , MathLib::isOct (" -042L" ));
392+ ASSERT_EQUALS (true , MathLib::isOct (" +042LU" ));
393+ ASSERT_EQUALS (true , MathLib::isOct (" -042LU" ));
394+ ASSERT_EQUALS (true , MathLib::isOct (" +042UL" ));
395+ ASSERT_EQUALS (true , MathLib::isOct (" -042UL" ));
396+ ASSERT_EQUALS (true , MathLib::isOct (" +042ULL" ));
397+ ASSERT_EQUALS (true , MathLib::isOct (" -042ULL" ));
398+ ASSERT_EQUALS (true , MathLib::isOct (" +042LLU" ));
399+ ASSERT_EQUALS (true , MathLib::isOct (" -042LLU" ));
400+
401+ // test empty string
402+ ASSERT_EQUALS (false , MathLib::isOct (" " ));
403+
404+ // negative testing
405+ ASSERT_EQUALS (false , MathLib::isOct (" 0" ));
406+ ASSERT_EQUALS (false , MathLib::isOct (" -0x175" ));
407+ ASSERT_EQUALS (false , MathLib::isOct (" -0_garbage_" ));
408+ ASSERT_EQUALS (false , MathLib::isOct (" " ));
409+ ASSERT_EQUALS (false , MathLib::isOct (" " ));
410+ ASSERT_EQUALS (false , MathLib::isOct (" 02." ));
411+ ASSERT_EQUALS (false , MathLib::isOct (" 02E2" ));
412+ ASSERT_EQUALS (false , MathLib::isOct (" +042x" ));
413+ ASSERT_EQUALS (false , MathLib::isOct (" -042x" ));
414+ ASSERT_EQUALS (false , MathLib::isOct (" +042Ux" ));
415+ ASSERT_EQUALS (false , MathLib::isOct (" -042Ux" ));
416+ ASSERT_EQUALS (false , MathLib::isOct (" +042Lx" ));
417+ ASSERT_EQUALS (false , MathLib::isOct (" -042Lx" ));
418+ ASSERT_EQUALS (false , MathLib::isOct (" +042ULx" ));
419+ ASSERT_EQUALS (false , MathLib::isOct (" -042ULx" ));
420+ ASSERT_EQUALS (false , MathLib::isOct (" +042LLx" ));
421+ ASSERT_EQUALS (false , MathLib::isOct (" -042LLx" ));
422+ ASSERT_EQUALS (false , MathLib::isOct (" +042ULLx" ));
423+ ASSERT_EQUALS (false , MathLib::isOct (" -042ULLx" ));
424+ ASSERT_EQUALS (false , MathLib::isOct (" +042LLUx" ));
425+ ASSERT_EQUALS (false , MathLib::isOct (" -042LLUx" ));
426+ ASSERT_EQUALS (false , MathLib::isOct (" +042LUL" ));
427+ ASSERT_EQUALS (false , MathLib::isOct (" -042LUL" ));
428+ // white space in front
429+ ASSERT_EQUALS (false , MathLib::isOct (" -042ULL" ));
430+ // trailing white space
431+ ASSERT_EQUALS (false , MathLib::isOct (" -042ULL " ));
432+ // front and trailing white space
433+ ASSERT_EQUALS (false , MathLib::isOct (" -042ULL " ));
434+ }
435+
374436 void ispositive () const {
375437 ASSERT_EQUALS (false , MathLib::isPositive (" -1" ));
376438 ASSERT_EQUALS (false , MathLib::isPositive (" -1." ));
0 commit comments