[poincare/print_int] Fix for tests

This commit is contained in:
Léa Saviot
2019-08-07 16:46:10 +02:00
committed by Émilie Feral
parent a2f1cef60f
commit fdafd91da5
4 changed files with 19 additions and 15 deletions

View File

@@ -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);

View File

@@ -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;
}
}

View File

@@ -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) {

View File

@@ -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);
}