logo

utils-std

Collection of commonly available Unix tools git clone https://anongit.hacktivis.me/git/utils-std.git/
commit: 6dee172499f83b50233873de2e9c5e54fc06c4bc
parent 033d7267b9e03bd871987f36ef136a0be6ce2597
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Wed, 16 Apr 2025 16:02:13 +0200

test-lib/t_humanize: new

Diffstat:

MMakefile9+++++----
Atest-lib/t_humanize.c66++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 71 insertions(+), 4 deletions(-)

diff --git a/Makefile b/Makefile @@ -32,7 +32,7 @@ selfcheck-cmds: $(EXE) $(TEST_CMDS) LDSTATIC="$(LDSTATIC)" ./check-cmds.sh .PHONY: selfcheck-libs -TEST_LIBS = test-lib/t_mode test-lib/t_strtodur test-lib/t_symbolize_mode test-lib/t_truncation test-lib/t_sha1 test-lib/t_sha256 test-lib/t_sha512 +TEST_LIBS = test-lib/t_mode test-lib/t_strtodur test-lib/t_symbolize_mode test-lib/t_truncation test-lib/t_sha1 test-lib/t_sha256 test-lib/t_sha512 test-lib/t_humanize selfcheck-libs: $(TEST_LIBS) LDSTATIC="$(LDSTATIC)" ./check-libs.sh $(TEST_LIBS) @@ -168,10 +168,11 @@ lib/sha256.o: lib/sha256.c lib/sha256.h lib/sha512.o: lib/sha512.c lib/sha512.h lib/bytes2hex.o: lib/bytes2hex.c lib/strconv.h +test-lib/t_humanize: test-lib/t_humanize.c lib/humanize.o test-lib/t_mode: test-lib/t_mode.c lib/mode.o -test-lib/t_strtodur: test-lib/t_strtodur.c lib/strtodur.o -test-lib/t_symbolize_mode: test-lib/t_symbolize_mode.c lib/symbolize_mode.o -test-lib/t_truncation: test-lib/t_truncation.c lib/truncation.o test-lib/t_sha1: test-lib/t_sha1.c lib/sha1.c lib/bytes2hex.o test-lib/t_sha256: test-lib/t_sha256.c lib/sha256.c lib/bytes2hex.o test-lib/t_sha512: test-lib/t_sha512.c lib/sha512.c lib/bytes2hex.o +test-lib/t_strtodur: test-lib/t_strtodur.c lib/strtodur.o +test-lib/t_symbolize_mode: test-lib/t_symbolize_mode.c lib/symbolize_mode.o +test-lib/t_truncation: test-lib/t_truncation.c lib/truncation.o diff --git a/test-lib/t_humanize.c b/test-lib/t_humanize.c @@ -0,0 +1,66 @@ +// 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(%g, %d) => {.number = %g, .exponent = %d}\n", + id, + in, + iec, + ret.number, + ret.exponent); + return; + } + + err = 1; + printf("not ok %d - dtosi(%g, %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 = 10; + 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); + + assert(counter == plan); + return err; +}