diff options
author | Rami Ali <flowergrass@users.noreply.github.com> | 2017-01-05 11:12:05 +1100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2017-01-05 12:31:05 +1100 |
commit | d7e168428bc9fd7524dd83b973c283b3488bfd3b (patch) | |
tree | c5f338c1d4a3b831f63c84372b704f99f3b30fbc | |
parent | 64dc925c4afad63bc5c8a6017d969abbab1d2ac5 (diff) | |
download | micropython-d7e168428bc9fd7524dd83b973c283b3488bfd3b.tar.gz micropython-d7e168428bc9fd7524dd83b973c283b3488bfd3b.zip |
tests/unix: Improve formatfloat.c test coverage using C.
-rw-r--r-- | tests/unix/extra_coverage.py.exp | 4 | ||||
-rw-r--r-- | unix/coverage.c | 21 |
2 files changed, 25 insertions, 0 deletions
diff --git a/tests/unix/extra_coverage.py.exp b/tests/unix/extra_coverage.py.exp index 12d9e1cb6e..0d7fc11804 100644 --- a/tests/unix/extra_coverage.py.exp +++ b/tests/unix/extra_coverage.py.exp @@ -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 diff --git a/unix/coverage.c b/unix/coverage.c index 033f09ed30..7140be41b9 100644 --- a/unix/coverage.c +++ b/unix/coverage.c @@ -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); |