t_humanize.c (1909B)
- // utils-std: Collection of commonly available Unix tools
- // SPDX-FileCopyrightText: 2017 Haelwenn (lanodan) Monnier <contact+utils@hacktivis.me>
- // SPDX-License-Identifier: MPL-2.0
- #define _POSIX_C_SOURCE 200809L
- #include "../lib/humanize.h"
- #include <assert.h>
- #include <stdio.h> // printf
- const char *argv0 = "t_humanize";
- int counter = 0;
- int err = 0;
- static void
- t_dtosi(double in, bool iec, double out, unsigned exponent)
- {
- int id = ++counter;
- struct si_scale ret = dtosi(in, iec);
- if(ret.number == out && ret.exponent == exponent)
- {
- printf("ok %d - dtosi(%f, %d) => {.number = %g, .exponent = %d}\n",
- id,
- in,
- iec,
- ret.number,
- ret.exponent);
- return;
- }
- err = 1;
- printf("not ok %d - dtosi(%f, %d) => {.number = %g, .exponent = %d}\n",
- id,
- in,
- iec,
- ret.number,
- ret.exponent);
- printf("# Expected: {.number = %g, .exponent = %d}\n", out, exponent);
- }
- int
- main(void)
- {
- int plan = 18;
- printf("1..%d\n", plan);
- t_dtosi(0, false, 0, 0);
- t_dtosi(0, true, 0, 0);
- t_dtosi(1000, false, 1000, 0);
- t_dtosi(10000, false, 10, 1);
- t_dtosi(-1000, false, -1000, 0);
- t_dtosi(-10000, false, -10, 1);
- t_dtosi(1024, true, 1024, 0);
- t_dtosi(10240, true, 10240 / 1024, 1);
- t_dtosi(-1024, true, -1024, 0);
- t_dtosi(-10240, true, -10240 / 1024, 1);
- #define IEC_QiB 1267650600228229401496703205376.0 /* 1024^10 */
- t_dtosi(1024 * IEC_QiB, true, 1024, 10);
- t_dtosi(-1024 * IEC_QiB, true, -1024, 10);
- t_dtosi(1024 * 1024 * IEC_QiB, true, 1024 * 1024, 10);
- t_dtosi(-1024 * 1024 * IEC_QiB, true, -1024 * 1024, 10);
- #define SI_Q 1000000000000000000000000000000.0 /* 1000^10 */
- t_dtosi(1000 * SI_Q, false, 1000, 10);
- t_dtosi(-1000 * SI_Q, false, -1000, 10);
- t_dtosi(1000 * 1000 * SI_Q, false, 1000 * 1000, 10);
- t_dtosi(-1000 * 1000 * SI_Q, false, -1000 * 1000, 10);
- assert(counter == plan);
- return err;
- }