tests/sprintf: add tests for managarm/frigg#7
This commit is contained in:
parent
8207f4e7e1
commit
b5da31997e
|
@ -1,5 +1,6 @@
|
|||
#include <stdio.h>
|
||||
#include <assert.h>
|
||||
#include <math.h>
|
||||
|
||||
int main() {
|
||||
char buf[11];
|
||||
|
@ -7,7 +8,8 @@ int main() {
|
|||
assert(buf[0] == '1' && buf[1] == '2' && buf[2] == '\0');
|
||||
sprintf(buf, "%f", 3.14);
|
||||
assert(buf[0] == '3' && buf[1] == '.' && buf[2] == '1'
|
||||
&& buf[3] == '4' && buf[4] == '\0');
|
||||
&& buf[3] == '4' && buf[4] == '0' && buf[5] == '0'
|
||||
&& buf[6] == '0' && buf[7] == '0' && buf[8] == '\0');
|
||||
|
||||
// Test %c right padding.
|
||||
sprintf(buf, "%-2c", 'a');
|
||||
|
@ -31,6 +33,9 @@ int main() {
|
|||
sprintf(buf, "%-3.2d", 123);
|
||||
assert(buf[0] == '1' && buf[1] == '2' && buf[2] == '3'
|
||||
&& buf[3] == '\0');
|
||||
sprintf(buf, "%-3.2u", 12);
|
||||
assert(buf[0] == '1' && buf[1] == '2' && buf[2] == ' '
|
||||
&& buf[3] == '\0');
|
||||
|
||||
// Test %d left padding.
|
||||
sprintf(buf, "%2d", 1);
|
||||
|
@ -44,7 +49,49 @@ int main() {
|
|||
sprintf(buf, "%3.2d", 123);
|
||||
assert(buf[0] == '1' && buf[1] == '2' && buf[2] == '3'
|
||||
&& buf[3] == '\0');
|
||||
|
||||
sprintf(buf, "%3.2u", 12);
|
||||
assert(buf[0] == ' ' && buf[1] == '1' && buf[2] == '2'
|
||||
&& buf[3] == '\0');
|
||||
|
||||
// Test %f padding.
|
||||
// TODO: Test printing of huge numbers (larger than 2^64)
|
||||
sprintf(buf, "%2.f", 1.2);
|
||||
assert(buf[0] == ' ' && buf[1] == '1' && buf[2] == '\0');
|
||||
sprintf(buf, "%2.f", 12.3);
|
||||
assert(buf[0] == '1' && buf[1] == '2' && buf[2] == '\0');
|
||||
sprintf(buf, "%5.2f", 1.0);
|
||||
assert(buf[0] == ' ' && buf[1] == '1' && buf[2] == '.' && buf[3] == '0'
|
||||
&& buf[4] == '0' && buf[5] == '\0');
|
||||
sprintf(buf, "%.1f", -4.0);
|
||||
assert(buf[0] == '-' && buf[1] == '4' && buf[2] == '.' && buf[3] == '0'
|
||||
&& buf[4] == '\0');
|
||||
sprintf(buf, "%-3.f", 8.0);
|
||||
assert(buf[0] == '8' && buf[1] == ' ' && buf[2] == ' ' && buf[4] == '\0');
|
||||
sprintf(buf, "%4f", INFINITY);
|
||||
assert((buf[0] == ' ' || buf[0] == 'i') && (buf[1] == 'i' || buf[2] == 'n'));
|
||||
sprintf(buf, "%4f", NAN);
|
||||
assert(buf[0] == ' ' && buf[1] == 'n' && buf[2] == 'a' && buf[3] == 'n' && buf[4] == '\0');
|
||||
sprintf(buf, "%4F", INFINITY);
|
||||
assert((buf[0] == ' ' || buf[0] == 'I') && (buf[1] == 'I' || buf[2] == 'N'));
|
||||
sprintf(buf, "%4F", NAN);
|
||||
assert(buf[0] == ' ' && buf[1] == 'N' && buf[2] == 'A' && buf[3] == 'N' && buf[4] == '\0');
|
||||
// TODO: We don't yet round properly
|
||||
// sprintf(buf, "%5.2f", 1.2);
|
||||
// assert(buf[0] == ' ' && buf[1] == '1' && buf[2] == '.' && buf[3] == '2'
|
||||
// && buf[4] == '0' && buf[5] == '\0');
|
||||
// sprintf(buf, "%5.2f", 1.23);
|
||||
// assert(buf[0] == ' ' && buf[1] == '1' && buf[2] == '.' && buf[3] == '2'
|
||||
// && buf[4] == '3' && buf[5] == '\0');
|
||||
// sprintf(buf, "%5.2f", 1.234);
|
||||
// assert(buf[0] == ' ' && buf[1] == '1' && buf[2] == '.' && buf[3] == '2'
|
||||
// && buf[4] == '3' && buf[5] == '\0');
|
||||
// sprintf(buf, "%5.2f", 12.345);
|
||||
// assert(buf[0] == '1' && buf[1] == '2' && buf[2] == '.' && buf[3] == '3'
|
||||
// && buf[4] == '5' && buf[5] == '\0');
|
||||
// sprintf(buf, "%-5.2f", 1.2);
|
||||
// assert(buf[0] == '1' && buf[1] == '.' && buf[2] == '2' && buf[3] == '0'
|
||||
// && buf[4] == ' ' && buf[5] == '\0');
|
||||
|
||||
// Test '+' and ' ' flags - mlibc issue #229.
|
||||
sprintf(buf, "%+d", 12);
|
||||
assert(buf[0] == '+' && buf[1] == '1' && buf[2] == '2' && buf[3] == '\0');
|
||||
|
@ -77,5 +124,6 @@ int main() {
|
|||
assert(buf[0] == '0' && buf[1] == '\0');
|
||||
sprintf(buf, "%#o", 0);
|
||||
assert(buf[0] == '0' && buf[1] == '\0');
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue