#include <stic.h> #include "../../src/cfg/config.h" #include "../../src/utils/utils.h" SETUP() { cfg.sizefmt.ieci_prefixes = 0; cfg.sizefmt.base = 1024; cfg.sizefmt.precision = 0; cfg.sizefmt.space = 1; } TEST(removing_useless_trailing_zero) { char buf[16]; friendly_size_notation(4*1024, sizeof(buf), buf); assert_string_equal("4 K", buf); friendly_size_notation(1024*1024 - 1, sizeof(buf), buf); assert_string_equal("1 M", buf); } TEST(problem_1024) { char buf[16]; friendly_size_notation(1024*1024 - 2, sizeof(buf), buf); assert_string_equal("1 M", buf); } TEST(from_zero_rounding) { char buf[16]; friendly_size_notation(8*1024 - 1, sizeof(buf), buf); assert_string_equal("8 K", buf); friendly_size_notation(8*1024 + 1, sizeof(buf), buf); assert_string_equal("8.1 K", buf); } TEST(iso_2) { char buf[16]; cfg.sizefmt.base = 1000; cfg.sizefmt.precision = 2; friendly_size_notation(111, sizeof(buf), buf); assert_string_equal("111 B", buf); friendly_size_notation(1000, sizeof(buf), buf); assert_string_equal("1 KB", buf); friendly_size_notation(1030, sizeof(buf), buf); assert_string_equal("1.03 KB", buf); friendly_size_notation(1030000, sizeof(buf), buf); assert_string_equal("1.03 MB", buf); friendly_size_notation(10301024, sizeof(buf), buf); assert_string_equal("10.31 MB", buf); } TEST(iec_2) { char buf[16]; cfg.sizefmt.precision = 2; cfg.sizefmt.ieci_prefixes = 1; friendly_size_notation(111, sizeof(buf), buf); assert_string_equal("111 B", buf); friendly_size_notation(1000, sizeof(buf), buf); assert_string_equal("1000 B", buf); friendly_size_notation(1030, sizeof(buf), buf); assert_string_equal("1.01 KiB", buf); friendly_size_notation(1030000, sizeof(buf), buf); assert_string_equal("1005.86 KiB", buf); friendly_size_notation(10301024, sizeof(buf), buf); assert_string_equal("9.83 MiB", buf); } TEST(iec_3) { char buf[16]; cfg.sizefmt.precision = 3; friendly_size_notation(111, sizeof(buf), buf); assert_string_equal("111 B", buf); friendly_size_notation(1000, sizeof(buf), buf); assert_string_equal("1000 B", buf); friendly_size_notation(1030, sizeof(buf), buf); assert_string_equal("1.006 K", buf); friendly_size_notation(1030000, sizeof(buf), buf); assert_string_equal("1005.86 K", buf); friendly_size_notation(10301024, sizeof(buf), buf); assert_string_equal("9.824 M", buf); } TEST(huge_precision) { char buf[64]; cfg.sizefmt.precision = 10; friendly_size_notation(231093, sizeof(buf), buf); assert_string_equal("225.6767578125 K", buf); /* Compiler optimizes operations somewhat differently, so don't expect an * exact match. */ cfg.sizefmt.precision = 25; friendly_size_notation(231093, sizeof(buf), buf); assert_string_starts_with("225.676757812", buf); assert_string_ends_with(" K", buf); } TEST(nospace) { char buf[16]; cfg.sizefmt.ieci_prefixes = 1; cfg.sizefmt.precision = 0; cfg.sizefmt.space = 0; friendly_size_notation(10301024, sizeof(buf), buf); assert_string_equal("10MiB", buf); } TEST(nospace_with_precision) { char buf[16]; cfg.sizefmt.ieci_prefixes = 1; cfg.sizefmt.precision = 2; cfg.sizefmt.space = 0; friendly_size_notation(10301024, sizeof(buf), buf); assert_string_equal("9.83MiB", buf); } /* vim: set tabstop=2 softtabstop=2 shiftwidth=2 noexpandtab cinoptions-=(0 : */ /* vim: set cinoptions+=t0 filetype=c : */