tests/unix: Improve formatfloat.c test coverage using C.

This commit is contained in:
Rami Ali 2017-01-05 11:12:05 +11:00 committed by Damien George
parent 64dc925c4a
commit d7e168428b
2 changed files with 25 additions and 0 deletions

View File

@ -39,6 +39,10 @@ ementation
TypeError: can't convert str to int
TypeError: unsupported types for : 'str', 'str'
Warning: test
# format float
?
+1e+00
+1e+00
('0123456789', b'0123456789')
7300
7300

View File

@ -7,6 +7,7 @@
#include "py/mpz.h"
#include "py/builtin.h"
#include "py/emit.h"
#include "py/formatfloat.h"
#if defined(MICROPY_UNIX_COVERAGE)
@ -136,6 +137,26 @@ STATIC mp_obj_t extra_coverage(void) {
mp_emitter_warning(MP_PASS_CODE_SIZE, "test");
}
// format float
{
mp_printf(&mp_plat_print, "# format float\n");
// format with inadequate buffer size
char buf[5];
mp_format_float(1, buf, sizeof(buf), 'g', 0, '+');
mp_printf(&mp_plat_print, "%s\n", buf);
// format with just enough buffer so that precision must be
// set from 0 to 1 twice
char buf2[8];
mp_format_float(1, buf2, sizeof(buf2), 'g', 0, '+');
mp_printf(&mp_plat_print, "%s\n", buf2);
// format where precision is trimmed to avoid buffer overflow
mp_format_float(1, buf2, sizeof(buf2), 'e', 0, '+');
mp_printf(&mp_plat_print, "%s\n", buf2);
}
// return a tuple of data for testing on the Python side
mp_obj_t items[] = {(mp_obj_t)&str_no_hash_obj, (mp_obj_t)&bytes_no_hash_obj};
return mp_obj_new_tuple(MP_ARRAY_SIZE(items), items);