You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.9 KiB
58 lines
1.9 KiB
import numpy as np
|
|
from explorer_helpers import compute_party_centroids
|
|
|
|
|
|
def test_full_coverage():
|
|
windows = ["w1", "w2"]
|
|
positions_by_window = {
|
|
"w1": {"mp1": (0.0, 0.0), "mp2": (2.0, 0.0)},
|
|
"w2": {"mp1": (1.0, 1.0), "mp2": (3.0, 1.0)},
|
|
}
|
|
party_map = {"mp1": "P1", "mp2": "P2"}
|
|
|
|
centroids, meta = compute_party_centroids(positions_by_window, party_map, windows)
|
|
|
|
# both parties present in both windows -> no nans and correct lengths
|
|
assert set(centroids.keys()) == {"P1", "P2"}
|
|
for vals in centroids.values():
|
|
assert len(vals) == len(windows)
|
|
for x, y in vals:
|
|
assert not (np.isnan(x) or np.isnan(y))
|
|
|
|
|
|
def test_partial_coverage():
|
|
windows = ["w1", "w2", "w3"]
|
|
positions_by_window = {
|
|
"w1": {"mp1": (0.0, 0.0), "mp2": (2.0, 0.0)},
|
|
"w2": {"mp1": (1.0, 1.0)},
|
|
"w3": {"mp2": (3.0, 1.0)},
|
|
}
|
|
party_map = {"mp1": "P1", "mp2": "P2"}
|
|
|
|
centroids, meta = compute_party_centroids(positions_by_window, party_map, windows)
|
|
|
|
# Expect P1 present in w1,w2 but missing in w3
|
|
assert centroids["P1"][0] == (0.0, 0.0)
|
|
assert centroids["P1"][1] == (1.0, 1.0)
|
|
assert np.isnan(centroids["P1"][2][0]) and np.isnan(centroids["P1"][2][1])
|
|
|
|
# Expect P2 present in w1,w3 but missing in w2
|
|
assert centroids["P2"][0] == (2.0, 0.0)
|
|
assert np.isnan(centroids["P2"][1][0]) and np.isnan(centroids["P2"][1][1])
|
|
assert centroids["P2"][2] == (3.0, 1.0)
|
|
|
|
# metadata counts should reflect non-nan entries
|
|
assert meta["per_party_counts"]["P1"] == 2
|
|
assert meta["per_party_counts"]["P2"] == 2
|
|
assert meta["total_windows"] == len(windows)
|
|
|
|
|
|
def test_no_parties():
|
|
windows = ["w1", "w2"]
|
|
positions_by_window = {}
|
|
party_map = {}
|
|
|
|
centroids, meta = compute_party_centroids(positions_by_window, party_map, windows)
|
|
|
|
assert centroids == {}
|
|
assert meta["total_windows"] == len(windows)
|
|
|