"""Tierlist-Parser: Rauschzeilen raus, Meta-Stärke auf 1.0 zentriert.""" from tft.staticdata import tierlist PAGE = """
Unit
Tier
Avg Place
Lux (Blossom)S1.20 80.0%50.0%
LuxS2.62 33.6%134,21929.3%
ShenB4.59 10.0%139,56330.4%
EliseB4.55 9.1%110.0%
EliseB4.46 10.3%67,54114.7%
""" def test_small_samples_and_variants_are_dropped(): rows = tierlist.parse(PAGE) # "Lux (Blossom)" mit 5 Spielen ist Rauschen, die Elise-Zeile mit 11 auch. assert sorted(rows) == ["Elise", "Lux", "Shen"] assert rows["Lux"]["avg_place"] == 2.62 assert rows["Lux"]["games"] == 134219 assert rows["Elise"]["avg_place"] == 4.46 # die größere Stichprobe gewinnt def test_meta_strength_centres_on_one(): rows = tierlist.parse(PAGE) units = {"TFT18_Lux": {"name": "Lux"}, "TFT18_Shen": {"name": "Shen"}, "TFT18_Elise": {"name": "Elise"}, "TFT18_Ivern": {"name": "Ivern"}} meta = tierlist.meta_strength(rows, units) # Ivern steht in keiner Zeile und bekommt keinen Wert. assert set(meta) == {"TFT18_Lux", "TFT18_Shen", "TFT18_Elise"} assert abs(sum(meta.values()) / len(meta) - 1.0) < 0.001 assert meta["TFT18_Lux"] > 1 > meta["TFT18_Shen"] def test_no_rows_means_no_meta(): assert tierlist.parse("nichts") == {} assert tierlist.meta_strength({}, {"X": {"name": "X"}}) == {}