Browse Source

vsnprintf: Added octal.

Branimir Karadžić 9 years ago
parent
commit
ab3638a0b8
2 changed files with 11 additions and 1 deletions
  1. 5 0
      src/crt.cpp
  2. 6 1
      tests/vsnprintf_test.cpp

+ 5 - 0
src/crt.cpp

@@ -332,6 +332,11 @@ namespace bx
 						size += write(_writer, va_arg(_argList, const char*), param, _err);
 						break;
 
+					case 'o':
+						param.base = 8;
+						size += write(_writer, va_arg(_argList, int32_t), param, _err);
+						break;
+
 					case 'i':
 					case 'd':
 						param.base = 10;

+ 6 - 1
tests/vsnprintf_test.cpp

@@ -53,7 +53,7 @@ TEST_CASE("vsnprintf f", "")
 	REQUIRE(test("13.370  ", "%*.*f", -8, 3, 13.37) );
 }
 
-TEST_CASE("vsnprintf d/i/u/x", "")
+TEST_CASE("vsnprintf d/i/o/u/x", "")
 {
 	REQUIRE(test("1337", "%d", 1337) );
 	REQUIRE(test("1337                ", "%-20d",  1337) );
@@ -63,6 +63,11 @@ TEST_CASE("vsnprintf d/i/u/x", "")
 	REQUIRE(test("1337                ", "%-20i",  1337) );
 	REQUIRE(test("-1337               ", "%-20i", -1337) );
 
+	REQUIRE(test("1337", "%o", 01337) );
+	REQUIRE(test("2471", "%o", 1337) );
+	REQUIRE(test("1337                ", "%-20o",  01337) );
+	REQUIRE(test("37777776441         ", "%-20o", -01337) );
+
 	REQUIRE(test("1337", "%u", 1337) );
 	REQUIRE(test("1337                ", "%-20u",  1337u) );
 	REQUIRE(test("4294965959          ", "%-20u", -1337u) );