Branimir Karadžić 9 лет назад
Родитель
Сommit
ab3638a0b8
2 измененных файлов с 11 добавлено и 1 удалено
  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);
 						size += write(_writer, va_arg(_argList, const char*), param, _err);
 						break;
 						break;
 
 
+					case 'o':
+						param.base = 8;
+						size += write(_writer, va_arg(_argList, int32_t), param, _err);
+						break;
+
 					case 'i':
 					case 'i':
 					case 'd':
 					case 'd':
 						param.base = 10;
 						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) );
 	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", "%d", 1337) );
 	REQUIRE(test("1337                ", "%-20d",  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               ", "%-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", "%u", 1337) );
 	REQUIRE(test("1337                ", "%-20u",  1337u) );
 	REQUIRE(test("1337                ", "%-20u",  1337u) );
 	REQUIRE(test("4294965959          ", "%-20u", -1337u) );
 	REQUIRE(test("4294965959          ", "%-20u", -1337u) );