Skip to content

Commit 13c6e29

Browse files
test: add 2015 day 21 tests
1 parent 5261bc3 commit 13c6e29

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import pytest
2+
3+
from adventofcode.year_2015.day_21_2015 import get_boss, get_shop_inventory, get_damage, Character, Weapon, \
4+
Armor, Ring, part_one
5+
6+
test_input = [
7+
'Hit Points: 100',
8+
'Damage: 8',
9+
'Armor: 2',
10+
]
11+
12+
13+
def test_get_boss():
14+
assert get_boss(test_input) == Character(health=100, armor=2, damage=8)
15+
16+
17+
@pytest.mark.parametrize(['attacker', 'defender', 'expected'], [
18+
(Character(health=100, damage=10, armor=10), Character(health=100, damage=10, armor=10), 1),
19+
(Character(health=100, damage=100, armor=10), Character(health=100, damage=10, armor=10), 90),
20+
(Character(health=100, damage=10, armor=10), Character(health=100, damage=10, armor=100), 1),
21+
])
22+
def test_get_damage(attacker, defender, expected):
23+
assert get_damage(attacker, defender) == expected
24+
25+
26+
def test_get_shop_inventory():
27+
weapons = [
28+
Weapon(name='Dagger', cost=8, damage=4, armor=0),
29+
Weapon(name='Shortsword', cost=10, damage=5, armor=0),
30+
Weapon(name='Warhammer', cost=25, damage=6, armor=0),
31+
Weapon(name='Longsword', cost=40, damage=7, armor=0),
32+
Weapon(name='Greataxe', cost=74, damage=8, armor=0),
33+
Weapon(name='Empty', cost=0, damage=0, armor=0)
34+
]
35+
36+
armor = [
37+
Armor(name='Leather', cost=13, damage=0, armor=1),
38+
Armor(name='Chainmail', cost=31, damage=0, armor=2),
39+
Armor(name='Splintmail', cost=53, damage=0, armor=3),
40+
Armor(name='Bandedmail', cost=75, damage=0, armor=4),
41+
Armor(name='Platemail', cost=102, damage=0, armor=5),
42+
Armor(name='Naked', cost=0, damage=0, armor=0)
43+
]
44+
45+
rings = [
46+
Ring(name='Damage +1', cost=25, damage=1, armor=0),
47+
Ring(name='Damage +2', cost=50, damage=2, armor=0),
48+
Ring(name='Damage +3', cost=100, damage=3, armor=0),
49+
Ring(name='Defense +1', cost=20, damage=0, armor=1),
50+
Ring(name='Defense +2', cost=40, damage=0, armor=2),
51+
Ring(name='Defense +3', cost=80, damage=0, armor=3),
52+
Ring(name='No jewelry', cost=0, damage=0, armor=0)
53+
]
54+
55+
assert get_shop_inventory() == (weapons, armor, rings)
56+
57+
58+
def test_part_one():
59+
assert part_one(test_input) == 91

0 commit comments

Comments
 (0)