tests/unix: Improve formatfloat.c test coverage using C.
This commit is contained in:
parent
64dc925c4a
commit
d7e168428b
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue