Current section

Files

Jump to
plotex test number_units_test.exs
Raw

test/number_units_test.exs

defmodule Axis.Units.NumericTest do
use ExUnit.Case
doctest Plotex
require Logger
alias Plotex.Axis
alias Plotex.ViewRange
test "base-10 rank for numbers" do
ranks =
[1000, 120.2, 53.9, 13.1, 8.9, 0.98, 0.0396]
|> Enum.map(&Axis.Units.Numeric.rank(&1, 10))
assert ranks == [1, 0, 0, 0, -1, -2, -3]
end
@config %Plotex.Axis.Units.Numeric{}
test "basis 1.0 " do
x_a = 1.123
x_b = 13.45
%{basis: xbasis} = Axis.Units.Numeric.units_for(x_a, x_b, @config)
assert xbasis == 1.0
end
test "basis 0.05 " do
x_a = 1.123
x_b = 1.52
%{basis: xbasis} = Axis.Units.Numeric.units_for(x_a, x_b, @config)
assert xbasis == 0.05
end
test "basis 10 " do
x_a = 1.123
x_b = 130.45
%{basis: xbasis} = Axis.Units.Numeric.units_for(x_a, x_b, @config)
assert xbasis == 10.0
end
test "basis 50 " do
x_a = 1.123
x_b = 530.45
# units = Axis.Units.Numeric.units_for(x_a, x_b, @config)
# Logger.warn("units: #{inspect units}")
%{basis: xbasis} = Axis.Units.Numeric.units_for(x_a, x_b, @config)
assert xbasis == 50.0
end
test "decade 100 " do
x_a = 1.123
x_b = 930.45
# units = Axis.Units.Numeric.units_for(x_a, x_b, @config)
# Logger.warn("units: #{inspect units}")
%{basis: xbasis} = Axis.Units.Numeric.units_for(x_a, x_b, @config)
assert xbasis == 100.0
end
test "decade 200 " do
x_a = 1.123
x_b = 1930.45
# units = Axis.Units.Numeric.units_for(x_a, x_b, @config)
# Logger.warn("units: #{inspect units}")
%{basis: xbasis} = Axis.Units.Numeric.units_for(x_a, x_b, @config)
assert xbasis == 200.0
end
test "range 200 " do
x_a = 40.123
x_b = 1930.45
# units = Axis.Units.Numeric.units_for(x_a, x_b, @config)
# Logger.warn("units: #{inspect units}")
nscale = Axis.Units.scale(%{@config | ticks: 10}, %ViewRange{start: x_a, stop: x_b})
xrange = nscale[:data] |> Enum.take(50)
# Logger.warn("number scale range: #{inspect(Enum.take(xrange, 50))}")
scale = [0.0, 200.0, 400.0, 600.0, 800.0, 1.0e3, 1.2e3, 1.4e3, 1.6e3, 1.8e3, 2.0e3]
assert scale == xrange
end
test "range 200 negative offset " do
x_a = -110.123
x_b = 1930.45
nscale = Axis.Units.scale(%{@config | ticks: 10}, %ViewRange{start: x_a, stop: x_b})
xrange = nscale[:data] |> Enum.take(50)
# Logger.warn("number scale range: #{inspect(Enum.take(xrange, 50))}")
scale = [-200.0, 0.0, 200.0, 400.0, 600.0, 800.0, 1.0e3, 1.2e3, 1.4e3, 1.6e3, 1.8e3, 2.0e3]
assert scale == xrange
end
test "range 2 offset " do
x_a = 11.34
x_b = 28.47
nscale = Axis.Units.scale(%{@config | ticks: 10}, %ViewRange{start: x_a, stop: x_b})
xrange = nscale[:data] |> Enum.take(50)
# Logger.warn("number scale range: #{inspect(Enum.take(xrange, 50))}")
scale = [10.0, 12.0, 14.0, 16.0, 18.0, 20.0, 22.0, 24.0, 26.0, 28.0, 30.0]
assert scale == xrange
end
test "range 2 negative offset " do
x_a = -28.47
x_b = -11.34
nscale = Axis.Units.scale(%{@config | ticks: 10}, %ViewRange{start: x_a, stop: x_b})
xrange = nscale[:data] |> Enum.take(50)
# Logger.warn("number scale range: #{inspect(Enum.take(xrange, 50))}")
scale = [-30.0, -28.0, -26.0, -24.0, -22.0, -20.0, -18.0, -16.0, -14.0, -12.0, -10.0]
assert scale == xrange
end
end