-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathmeasurement_test.exs
More file actions
79 lines (59 loc) · 2.56 KB
/
measurement_test.exs
File metadata and controls
79 lines (59 loc) · 2.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
defmodule MeasurementTest do
alias ElixirBench.Benchmarks.Measurement
use ElixirBench.DataCase
import ElixirBench.Factory
@attrs %{
"average" => 465.8669101807624,
"ips" => 2146.5357984150173,
"maximum" => 13092.0,
"median" => 452.0,
"minimum" => 338.0,
"percentiles" => %{"50" => 452.0, "99" => 638.0},
"run_times" => [],
"sample_size" => 10677,
"std_dev" => 199.60367678670747,
"std_dev_ips" => 919.6970816229071,
"std_dev_ratio" => 0.4284564377179282,
"mode" => nil
}
describe "changeset/2" do
test "format and validade mode values" do
changeset = Measurement.changeset(%Measurement{}, %{@attrs | "mode" => ""})
assert changeset.valid?
refute Map.has_key?(changeset.changes, :mode)
changeset = Measurement.changeset(%Measurement{}, %{@attrs | "mode" => nil})
assert changeset.valid?
refute Map.has_key?(changeset.changes, :mode)
changeset = Measurement.changeset(%Measurement{}, %{@attrs | "mode" => 1})
assert changeset.valid?
assert [1.0] = changeset.changes.mode
changeset = Measurement.changeset(%Measurement{}, %{@attrs | "mode" => 1.2})
assert changeset.valid?
assert [1.2] = changeset.changes.mode
changeset = Measurement.changeset(%Measurement{}, %{@attrs | "mode" => [1.2, 1.4]})
assert changeset.valid?
assert [1.2, 1.4] = changeset.changes.mode
changeset = Measurement.changeset(%Measurement{}, %{@attrs | "mode" => [1.2, "1.4"]})
assert changeset.valid?
assert [1.2, 1.4] = changeset.changes.mode
changeset = Measurement.changeset(%Measurement{}, %{@attrs | "mode" => "str"})
refute changeset.valid?
refute Map.has_key?(changeset.changes, :mode)
assert [mode: {"is invalid", _}] = changeset.errors
changeset = Measurement.changeset(%Measurement{}, %{@attrs | "mode" => ["str"]})
refute changeset.valid?
refute Map.has_key?(changeset.changes, :mode)
assert [mode: {"is invalid", _}] = changeset.errors
end
# field :percentiles, {:map, :float} => this test fail
# field :percentiles, :map => this test succeed
test "not raise when exponential notation is given to percentiles" do
percentiles = %{"50" => 4.165e5, "99" => 4.165e5}
measurement = build(:measurement)
changeset = Measurement.changeset(measurement, %{@attrs | "percentiles" => percentiles})
assert {:ok, _} = Repo.insert(changeset)
measurement = Repo.one(Measurement)
assert %{"50" => 416_500, "99" => 416_500} = measurement.percentiles
end
end
end