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.
90 lines
2.6 KiB
90 lines
2.6 KiB
# tests/test_explorer_labels.py
|
|
"""Tests for SVD axis label derivation in explorer.py."""
|
|
|
|
import pytest
|
|
|
|
|
|
def test_derive_labels_flip_true():
|
|
"""When flip=True, positive_pole should be on left, negative_pole on right."""
|
|
theme = {
|
|
"positive_pole": "Right-wing parties",
|
|
"negative_pole": "Left-wing parties",
|
|
"flip": True,
|
|
}
|
|
flip = theme.get("flip", False)
|
|
pos_pole = theme.get("positive_pole", "")
|
|
neg_pole = theme.get("negative_pole", "")
|
|
|
|
if flip:
|
|
left_pole, right_pole = pos_pole, neg_pole
|
|
else:
|
|
left_pole, right_pole = neg_pole, pos_pole
|
|
|
|
assert left_pole == "Right-wing parties"
|
|
assert right_pole == "Left-wing parties"
|
|
|
|
|
|
def test_derive_labels_flip_false():
|
|
"""When flip=False, negative_pole should be on left, positive_pole on right."""
|
|
theme = {
|
|
"positive_pole": "Right-wing parties",
|
|
"negative_pole": "Left-wing parties",
|
|
"flip": False,
|
|
}
|
|
flip = theme.get("flip", False)
|
|
pos_pole = theme.get("positive_pole", "")
|
|
neg_pole = theme.get("negative_pole", "")
|
|
|
|
if flip:
|
|
left_pole, right_pole = pos_pole, neg_pole
|
|
else:
|
|
left_pole, right_pole = neg_pole, pos_pole
|
|
|
|
assert left_pole == "Left-wing parties"
|
|
assert right_pole == "Right-wing parties"
|
|
|
|
|
|
def test_derive_labels_missing_theme():
|
|
"""When theme is None, use empty strings as fallback."""
|
|
theme = None
|
|
flip = theme.get("flip", False) if theme else False
|
|
pos_pole = theme.get("positive_pole", "") if theme else ""
|
|
neg_pole = theme.get("negative_pole", "") if theme else ""
|
|
|
|
if flip:
|
|
left_pole, right_pole = pos_pole, neg_pole
|
|
else:
|
|
left_pole, right_pole = neg_pole, pos_pole
|
|
|
|
assert left_pole == ""
|
|
assert right_pole == ""
|
|
|
|
|
|
def test_motion_assignment_flip_true():
|
|
"""When flip=True, positive motions go to left column."""
|
|
pos_motions = [{"motion_id": 1, "score": 0.5}]
|
|
neg_motions = [{"motion_id": 2, "score": -0.5}]
|
|
flip = True
|
|
|
|
if flip:
|
|
left_motions, right_motions = pos_motions, neg_motions
|
|
else:
|
|
left_motions, right_motions = neg_motions, pos_motions
|
|
|
|
assert left_motions == pos_motions
|
|
assert right_motions == neg_motions
|
|
|
|
|
|
def test_motion_assignment_flip_false():
|
|
"""When flip=False, negative motions go to left column."""
|
|
pos_motions = [{"motion_id": 1, "score": 0.5}]
|
|
neg_motions = [{"motion_id": 2, "score": -0.5}]
|
|
flip = False
|
|
|
|
if flip:
|
|
left_motions, right_motions = pos_motions, neg_motions
|
|
else:
|
|
left_motions, right_motions = neg_motions, pos_motions
|
|
|
|
assert left_motions == neg_motions
|
|
assert right_motions == pos_motions
|
|
|