mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[poincare/print_int] Fix for tests
This commit is contained in:
@@ -8,9 +8,11 @@ namespace Poincare {
|
||||
namespace PrintInt {
|
||||
|
||||
/* PrintInt prints a uint32_t in a given buffer, without the null-terminating
|
||||
* char. It returns the wanted length to print the integer.
|
||||
* - Left prints on the left of the buffer
|
||||
* - Right prints on the right, padding on the left with zeroes if needed */
|
||||
* char.
|
||||
* - Left prints on the left of the buffer and returns the wanted length to
|
||||
* print the integer.
|
||||
* - Right prints on the right, padding on the left with zeroes if needed. It
|
||||
* returns the number of chars written (bufferLength) */
|
||||
|
||||
int Left(uint32_t integer, char * buffer, int bufferLength);
|
||||
int Right(uint32_t integer, char * buffer, int bufferLength);
|
||||
|
||||
@@ -29,7 +29,8 @@ int PrintInt::Left(uint32_t integer, char * buffer, int bufferLength) {
|
||||
}
|
||||
|
||||
int PrintInt::Right(uint32_t integer, char * buffer, int bufferLength) {
|
||||
return PrintIntInBuffer(integer, buffer, bufferLength, false);
|
||||
PrintIntInBuffer(integer, buffer, bufferLength, false);
|
||||
return bufferLength;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -17,19 +17,20 @@ void assert_float_prints_to(T a, const char * result, Preferences::PrintFloatMod
|
||||
constexpr int tagSize = 8;
|
||||
unsigned char tag = 'O';
|
||||
char taggedBuffer[250+2*tagSize];
|
||||
memset(taggedBuffer, tag, bufferSize+2*tagSize);
|
||||
int taggedAreaSize = bufferSize+2*tagSize;
|
||||
memset(taggedBuffer, tag, taggedAreaSize);
|
||||
char * buffer = taggedBuffer + tagSize;
|
||||
|
||||
PrintFloat::ConvertFloatToText<T>(a, buffer, bufferSize, significantDigits, mode);
|
||||
|
||||
for (int i=0; i<tagSize; i++) {
|
||||
quiz_assert(taggedBuffer[i] == tag);
|
||||
for (int i = 0; i < tagSize; i++) {
|
||||
quiz_assert_print_if_failure(taggedBuffer[i] == tag, result);
|
||||
}
|
||||
for (int i=tagSize+strlen(buffer)+1; i<bufferSize+2*tagSize; i++) {
|
||||
quiz_assert(taggedBuffer[i] == tag);
|
||||
for (int i = tagSize + strlen(buffer) + 1; i < taggedAreaSize; i++) {
|
||||
quiz_assert_print_if_failure(taggedBuffer[i] == tag, result);
|
||||
}
|
||||
|
||||
quiz_assert(strcmp(buffer, result) == 0);
|
||||
quiz_assert_print_if_failure(strcmp(buffer, result) == 0, result);
|
||||
}
|
||||
|
||||
QUIZ_CASE(assert_print_floats) {
|
||||
|
||||
@@ -11,15 +11,15 @@ void assert_int_prints_as(int integer, const char * result, bool left) {
|
||||
for (int i = 0; i < bufferSize; i++) {
|
||||
buffer[i] = 0;
|
||||
}
|
||||
bool couldPrint = (left ? PrintInt::Left(integer, buffer, bufferSize) : PrintInt::Right(integer, buffer, bufferSize)) < bufferSize;
|
||||
quiz_assert(couldPrint);
|
||||
bool couldPrint = (left ? PrintInt::Left(integer, buffer, bufferSize) : PrintInt::Right(integer, buffer, bufferSize)) <= bufferSize;
|
||||
quiz_assert_print_if_failure(couldPrint, result);
|
||||
int i = 0;
|
||||
while (result[i] != 0) {
|
||||
quiz_assert(result[i] == buffer[i]);
|
||||
quiz_assert_print_if_failure(result[i] == buffer[i], result);
|
||||
i++;
|
||||
}
|
||||
while (i < bufferSize) {
|
||||
quiz_assert(buffer[i] == 0);
|
||||
quiz_assert_print_if_failure(buffer[i] == 0, result);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
@@ -36,6 +36,6 @@ QUIZ_CASE(poincare_print_int_right) {
|
||||
assert_int_prints_as(1, "00001", false);
|
||||
assert_int_prints_as(12, "00012", false);
|
||||
assert_int_prints_as(15678, "15678", false);
|
||||
assert_int_prints_as(99999, "99999", true);
|
||||
assert_int_prints_as(99999, "99999", false);
|
||||
assert_int_prints_as(0, "00000", false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user