예제 #1
0
def test_ap_dhp_damage_input_to_hpap_damage():
    dhps = np.arange(-100, 101, 0.47)
    dmgs = np.arange(-100, 101, 0.47)
    for dhp, dmg in itertools.product(dmgs, dhps):
        apl, apu, t1, t2 = damage.ap_dhp_damage(dhp, dmg)
        if t1 == '[':
            hp, ap = damage.hpap_damage(100, apl, dmg)
            assert 100 - hp == int(dhp)
        elif t1 == '(':
            hp, ap = damage.hpap_damage(100, apl + 1e-4, dmg)
            assert 100 - hp == int(dhp)
            hp, ap = damage.hpap_damage(100, apl, dmg)
            assert 100 - hp - 1 == int(dhp)
        if t2 == ']':
            hp, ap = damage.hpap_damage(100, apu, dmg)
            assert 100 - hp == int(dhp)
        elif t2 == ')':
            hp, ap = damage.hpap_damage(100, apu - 1e-4, dmg)
            assert 100 - hp == int(dhp)
            hp, ap = damage.hpap_damage(100, apu, dmg)
            assert 100 - hp + 1 == int(dhp)
        elif t2 == 'inf':
            hp, ap = damage.hpap_damage(100, 1234567, dmg)
            assert ap > 0
            assert 100 - hp == int(dhp)
            hp, ap = damage.hpap_damage(100, apu, dmg)
            assert ap == 0
예제 #2
0
def test_ap_dhp_damage_zero_dhp():
    assert damage.ap_dhp_damage(0, 0) == (-0.5, 0, '(', 'inf')
    assert damage.ap_dhp_damage(0, 1) == (0, 0.4, '(', 'inf')
    assert damage.ap_dhp_damage(0, 2) == (0.5, 0.8, '(', 'inf')
    assert damage.ap_dhp_damage(0, -1) == (-1, -0.5, '(', ']')
    for dmg in np.arange(0, 5, 0.05):
        apl, apu, t1, t2 = damage.ap_dhp_damage(0, dmg)
        assert (t1, t2) == ('(', 'inf')
        assert damage.hpap_damage(100, apl, dmg) == (99, 0)
        assert damage.hpap_damage(100, apl + 1e-4, dmg) == (100, 0)
        assert damage.hpap_damage(100, apu, dmg) == (100, 0)

    assert damage.ap_dhp_damage(0, 5) == (math.nan, math.nan, None, None)
    for dmg in range(5, 100, 2):
        assert damage.ap_dhp_damage(0, dmg)[2] is None
예제 #3
0
def test_hpap_damage_neg_dmg():
    assert damage.hpap_damage(100, 0, -1) == (101, 0)
    assert damage.hpap_damage(100, 0, -1234) == (1334, 0)
    assert damage.hpap_damage(100, 0, -1.5) == (101, 0)
    assert damage.hpap_damage(100, 1, -1) == (100, 1.4)
    assert damage.hpap_damage(100, 100, -1) == (100, 100.4)
    assert damage.hpap_damage(100, 1, -4) == (100, 2.6)
    assert damage.hpap_damage(100, 1, -5) == (101, 3)
    assert damage.hpap_damage(100, 0.001, -100) == (120, 40.001)
예제 #4
0
def test_hpap_damage():
    assert damage.hpap_damage(100, 100, 100) == (80, 60)
    assert damage.hpap_damage(100, 100, 300) == (0, 0)
    assert damage.hpap_damage(100, 0, 0.99999) == (100, 0)
    assert damage.hpap_damage(100, 0, 1) == (99, 0)
예제 #5
0
def test_hpap_damage_neg_ap():
    assert damage.hpap_damage(100, -1, 70) == (28, 0)
    assert damage.hpap_damage(100, -5, 70) == (20, 0)
    assert damage.hpap_damage(100, -1, 0) == (98, 0)
예제 #6
0
def test_hpap_damage_zero_hp():
    aps = range(-1000, 1001, 10)
    dmgs = range(0, 1001, 10)
    for ap, dmg in itertools.product(aps, dmgs):
        assert damage.hpap_damage(0, ap, dmg)[0] <= 0
예제 #7
0
def test_hpap_damage_zero_ap():
    hps = range(-1000, 1001, 10)
    dmgs = range(-1000, 1001, 10)
    for hp, dmg in itertools.product(hps, dmgs):
        assert damage.hpap_damage(hp, 0, dmg) == (hp - dmg, 0)