def test_statsowner_get_stats():
    so = StatsOwner()
    s1 = Stat("str")
    s2 = Stat("int")
    so.add(s1)
    so.add(s2)
    assert s1 in so.stats and s2 in so.stats
def test_stat_scale_stat():
    owner = StatsOwner()
    s1 = Stat("sta")
    s2 = Stat("hp")
    s1.value = 10
    s2.base_value = 100
    s2.scale_stat = "sta"
    s2.scale_method = s2.scale_flat
    s2.scale_amount = 10
    owner.add([s1, s2])
    owner.get("hp").update()
    assert s2.get_value() == 200
def test_build_stat():
    import configparser
    rules = configparser.ConfigParser()
    rules.read("rules.cfg")
    rules["str"]["scale_method"] = "flat"
    d = parse_rules(rules)
    so = StatsOwner()
    so.load_rules(d)
    s = Stat("str")
    so.add(s)
    s = so.stat_objects["str"]
    assert s.scale_method == s.scale_flat
def test_statowner_no_duplicate():
    s1 = Stat("int")
    s2 = Stat("int")
    so = StatsOwner()
    so.add([s1, s2])
    assert len(so.stats) == 1
def test_statowner_add_multiple_stats():
    s1 = Stat("int")
    s2 = Stat("str")
    so = StatsOwner()
    so.add([s1, s2])
    assert s1 in so.stats and s2 in so.stats
def test_statowner_add_stat():
    s = Stat("int")
    so = StatsOwner()
    so.add(s)
    assert s in so.stats