Skip to content

Commit 29808b0

Browse files
committed
Adding tests for storages
1 parent e198e25 commit 29808b0

File tree

1 file changed

+103
-0
lines changed

1 file changed

+103
-0
lines changed

tests/test_storage.py

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
import pytest
2+
import boost_histogram as bh
3+
import numpy as np
4+
from numpy.testing import assert_array_equal
5+
6+
7+
@pytest.mark.parametrize(
8+
"storage",
9+
[bh.storage.Int, bh.storage.Double, bh.storage.AtomicInt, bh.storage.Unlimited],
10+
)
11+
def test_setting(storage):
12+
h = bh.Histogram(bh.axis.Regular(10, 0, 1), storage=storage())
13+
h[bh.underflow] = 1
14+
h[0] = 2
15+
h[1] = 3
16+
h[bh.loc(0.55)] = 4
17+
h[-1] = 5
18+
h[bh.overflow] = 6
19+
20+
assert h[bh.underflow] == 1
21+
assert h[0] == 2
22+
assert h[1] == 3
23+
assert h[bh.loc(0.55)] == 4
24+
assert h[5] == 4
25+
assert h[-1] == 5
26+
assert h[9] == 5
27+
assert h[bh.overflow] == 6
28+
29+
assert_array_equal(h.view(flow=True), [1, 2, 3, 0, 0, 0, 4, 0, 0, 0, 5, 6])
30+
31+
32+
def test_setting_weight():
33+
h = bh.Histogram(bh.axis.Regular(10, 0, 10), storage=bh.storage.Weight())
34+
35+
h.fill([0.3, 0.3, 0.4, 1.2])
36+
37+
assert h[0] == bh.accumulators.WeightedSum(3, 3)
38+
assert h[1] == bh.accumulators.WeightedSum(1, 1)
39+
40+
h[0] = bh.accumulators.WeightedSum(value=2, variance=2)
41+
assert h[0] == bh.accumulators.WeightedSum(2, 2)
42+
43+
a = h.view()
44+
45+
assert a[0] == h[0]
46+
47+
b = np.asarray(h)
48+
assert b["value"][0] == h[0].value
49+
50+
h[0] = bh.accumulators.WeightedSum(value=3, variance=1)
51+
52+
assert a[0] == h[0]
53+
assert b["value"][0] == h[0].value
54+
55+
56+
def test_setting_profile():
57+
h = bh.Histogram(bh.axis.Regular(10, 0, 10), storage=bh.storage.Mean())
58+
59+
h.fill([0.3, 0.3, 0.4, 1.2, 1.6], sample=[1, 2, 3, 4, 4])
60+
61+
assert h[0] == bh.accumulators.Mean(count=3, value=2, variance=1)
62+
assert h[1] == bh.accumulators.Mean(count=2, value=4, variance=0)
63+
64+
h[0] = bh.accumulators.Mean(count=12, value=11, variance=10)
65+
assert h[0] == bh.accumulators.Mean(count=12, value=11, variance=10)
66+
67+
a = h.view()
68+
69+
assert a[0] == h[0]
70+
71+
b = np.asarray(h)
72+
assert b["value"][0] == h[0].value
73+
74+
h[0] = bh.accumulators.Mean(count=6, value=3, variance=2)
75+
76+
assert a[0] == h[0]
77+
assert b["value"][0] == h[0].value
78+
79+
80+
def test_setting_weighted_profile():
81+
h = bh.Histogram(bh.axis.Regular(10, 0, 10), storage=bh.storage.WeightedMean())
82+
83+
h.fill([0.3, 0.3, 0.4, 1.2, 1.6], sample=[1, 2, 3, 4, 4], weight=[1, 1, 1, 1, 2])
84+
85+
assert h[0] == bh.accumulators.WeightedMean(wsum=3, wsum2=3, value=2, variance=1)
86+
assert h[1] == bh.accumulators.WeightedMean(wsum=3, wsum2=5, value=4, variance=0)
87+
88+
h[0] = bh.accumulators.WeightedMean(wsum=12, wsum2=15, value=11, variance=10)
89+
assert h[0] == bh.accumulators.WeightedMean(
90+
wsum=12, wsum2=15, value=11, variance=10
91+
)
92+
93+
a = h.view()
94+
95+
assert a[0] == h[0]
96+
97+
b = np.asarray(h)
98+
assert b["value"][0] == h[0].value
99+
100+
h[0] = bh.accumulators.WeightedMean(wsum=6, wsum2=12, value=3, variance=2)
101+
102+
assert a[0] == h[0]
103+
assert b["value"][0] == h[0].value

0 commit comments

Comments
 (0)