From 323472abe130f5d7a47f13545baac675310f6212 Mon Sep 17 00:00:00 2001 From: Tobias Pfeiffer Date: Fri, 22 Dec 2023 09:30:53 +0100 Subject: [PATCH] find and fix particularly nasty bug that lead to real bad output always appending 0 ns --- lib/benchee/conversion/duration.ex | 3 +++ lib/benchee/conversion/format.ex | 1 + test/benchee/conversion/duration_test.exs | 5 +++++ 3 files changed, 9 insertions(+) diff --git a/lib/benchee/conversion/duration.ex b/lib/benchee/conversion/duration.ex index 45d58895..a935654c 100644 --- a/lib/benchee/conversion/duration.ex +++ b/lib/benchee/conversion/duration.ex @@ -288,6 +288,9 @@ defmodule Benchee.Conversion.Duration do iex> format_human(0) "0 ns" + + iex> format_human(2 * 1000 * 1000 * 1000) + "2 s" """ def format_human(duration) do Format.format_human(duration, __MODULE__) diff --git a/lib/benchee/conversion/format.ex b/lib/benchee/conversion/format.ex index acf1c6bb..38d71f81 100644 --- a/lib/benchee/conversion/format.ex +++ b/lib/benchee/conversion/format.ex @@ -108,6 +108,7 @@ defmodule Benchee.Conversion.Format do @spec place_values(number, [Unit.t()]) :: [{number, Unit.t()}] defp place_values(0, _units), do: [] + defp place_values(+0.0, _units), do: [] # smalles unit, carries the decimal defp place_values(number, [base_unit = %Unit{magnitude: 1}]), do: [{number, base_unit}] diff --git a/test/benchee/conversion/duration_test.exs b/test/benchee/conversion/duration_test.exs index 3592f448..1d33f8b4 100644 --- a/test/benchee/conversion/duration_test.exs +++ b/test/benchee/conversion/duration_test.exs @@ -74,6 +74,11 @@ defmodule Benchee.Conversion.DurationTest do assert format_human(9_008) == "9 μs 8 ns" end + # particularly nasty bug + test ".format_human()" do + assert format_human(2_000_000_000.0) == "2 s" + end + test ".format_human(9_876.54321)" do assert format_human(9_876.54321) == "9 μs 876.54 ns" end