Skip to content

Commit 4fd9742

Browse files
Merge pull request steam-bell-92#1244 from Kinara2020/test/add-flames-game-tests
test: Add pytest suite for FLAMES game core logic
2 parents 653252c + 89da4c3 commit 4fd9742

2 files changed

Lines changed: 78 additions & 70 deletions

File tree

package-lock.json

Lines changed: 1 addition & 70 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/test_flames.py

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
"""
2+
Tests for FLAMES Game core logic.
3+
"""
4+
5+
def remove_common_chars(name1, name2):
6+
name1_list = list(name1)
7+
name2_list = list(name2)
8+
for char in name1_list[:]:
9+
if char in name2_list:
10+
name1_list.remove(char)
11+
name2_list.remove(char)
12+
return name1_list, name2_list
13+
14+
15+
def calculate_flames(count):
16+
flames = ['F', 'L', 'A', 'M', 'E', 'S']
17+
index = 0
18+
while len(flames) > 1:
19+
index = (index + count - 1) % len(flames)
20+
flames.pop(index)
21+
return flames[0]
22+
23+
24+
def calculate_score(name1, name2, count):
25+
total_len = len(name1) + len(name2)
26+
matched_chars = total_len - count
27+
return 30 + round((matched_chars / total_len) * 70) if total_len > 0 else 0
28+
29+
30+
# Tests
31+
def test_remove_common_chars_basic():
32+
n1, n2 = remove_common_chars("alice", "bob")
33+
assert len(n1) + len(n2) > 0
34+
35+
36+
def test_remove_common_chars_identical():
37+
n1, n2 = remove_common_chars("abc", "abc")
38+
assert len(n1) + len(n2) == 0
39+
40+
41+
def test_flames_result_valid():
42+
result = calculate_flames(3)
43+
assert result in ['F', 'L', 'A', 'M', 'E', 'S']
44+
45+
46+
def test_flames_count_one():
47+
result = calculate_flames(1)
48+
assert result in ['F', 'L', 'A', 'M', 'E', 'S']
49+
50+
51+
def test_flames_count_six():
52+
result = calculate_flames(6)
53+
assert result in ['F', 'L', 'A', 'M', 'E', 'S']
54+
55+
56+
def test_score_range():
57+
score = calculate_score("alice", "bob", 4)
58+
assert 0 <= score <= 100
59+
60+
61+
def test_score_full_match():
62+
score = calculate_score("abc", "abc", 0)
63+
assert score == 100
64+
65+
66+
def test_degenerate_case():
67+
n1, n2 = remove_common_chars("abc", "abc")
68+
count = len(n1) + len(n2)
69+
assert count == 0
70+
71+
72+
def test_flames_known_output():
73+
# "alice" vs "bob" — count = 4+1 = 5 remaining
74+
n1, n2 = remove_common_chars("alice", "bob")
75+
count = len(n1) + len(n2)
76+
result = calculate_flames(count)
77+
assert result in ['F', 'L', 'A', 'M', 'E', 'S']

0 commit comments

Comments
 (0)