@@ -33,6 +33,7 @@ class TestMathLib : public TestFixture {
3333 TEST_CASE (calculate1);
3434 TEST_CASE (convert);
3535 TEST_CASE (isint);
36+ TEST_CASE (isbin);
3637 TEST_CASE (isnegative);
3738 TEST_CASE (ispositive);
3839 TEST_CASE (isfloat);
@@ -316,6 +317,46 @@ class TestMathLib : public TestFixture {
316317 ASSERT_EQUALS (false , MathLib::isInt (" .E2" ));
317318 }
318319
320+ void isbin () {
321+ // positive testing
322+ ASSERT_EQUALS (true , MathLib::isBin (" 0b0" ));
323+ ASSERT_EQUALS (true , MathLib::isBin (" 0b1" ));
324+ ASSERT_EQUALS (true , MathLib::isBin (" +0b1" ));
325+ ASSERT_EQUALS (true , MathLib::isBin (" -0b1" ));
326+ ASSERT_EQUALS (true , MathLib::isBin (" 0b11010111" ));
327+ ASSERT_EQUALS (true , MathLib::isBin (" -0b11010111" ));
328+ ASSERT_EQUALS (true , MathLib::isBin (" 0B11010111" ));
329+ ASSERT_EQUALS (true , MathLib::isBin (" 0b11010111u" ));
330+ ASSERT_EQUALS (true , MathLib::isBin (" 0b11010111ul" ));
331+ ASSERT_EQUALS (true , MathLib::isBin (" 0b11010111ull" ));
332+ ASSERT_EQUALS (true , MathLib::isBin (" 0b11010111l" ));
333+ ASSERT_EQUALS (true , MathLib::isBin (" 0b11010111ll" ));
334+ ASSERT_EQUALS (true , MathLib::isBin (" 0b11010111llu" ));
335+ ASSERT_EQUALS (true , MathLib::isBin (" 0b11010111l" ));
336+ ASSERT_EQUALS (true , MathLib::isBin (" 0b11010111lu" ));
337+ ASSERT_EQUALS (false , MathLib::isBin (" 0b11010111lul" )); // Suffix LUL not allowed
338+
339+ // negative testing
340+ ASSERT_EQUALS (false , MathLib::isBin (" 100101bx" ));
341+ ASSERT_EQUALS (false , MathLib::isBin (" 0" ));
342+ ASSERT_EQUALS (false , MathLib::isBin (" 0B" ));
343+ ASSERT_EQUALS (false , MathLib::isBin (" 0C" ));
344+ ASSERT_EQUALS (false , MathLib::isBin (" +0B" ));
345+ ASSERT_EQUALS (false , MathLib::isBin (" -0B" ));
346+ ASSERT_EQUALS (false , MathLib::isBin (" -0Bx" ));
347+ ASSERT_EQUALS (false , MathLib::isBin (" 0b11010111x" ));
348+ ASSERT_EQUALS (false , MathLib::isBin (" 0b11010111ux" ));
349+ ASSERT_EQUALS (false , MathLib::isBin (" 0b11010111lx" ));
350+ ASSERT_EQUALS (false , MathLib::isBin (" 0b11010111lux" ));
351+ ASSERT_EQUALS (false , MathLib::isBin (" 0b11010111ulx" ));
352+ ASSERT_EQUALS (false , MathLib::isBin (" 0b11010111lulx" ));
353+ ASSERT_EQUALS (false , MathLib::isBin (" 0b11010111ullx" ));
354+ ASSERT_EQUALS (false , MathLib::isBin (" 0b11010111lll" ));
355+
356+ // test empty string
357+ ASSERT_EQUALS (false , MathLib::isBin (" " ));
358+ }
359+
319360 void isnegative () const {
320361 ASSERT_EQUALS (true , MathLib::isNegative (" -1" ));
321362 ASSERT_EQUALS (true , MathLib::isNegative (" -1." ));
0 commit comments