1class RunewordsCalculator:
2 def __init__(self, runewords):
3 self.runewords = runewords
4 self.runes = []
5 self.runewords_made = set()
6
7 def add_runes(self, runes):
8 self.runes.extend(runes)
9
10 def __iter__(self):
11 return self
12
13 def __next__(self):
14 if len(self.runewords_made) == len(self.runewords):
15 raise StopIteration
16 for name, required_runes in self.runewords.items():
17 if name in self.runewords_made:
18 continue
19 index = 0
20 indexes_to_remove = []
21 for rune in required_runes:
22 found = False
23 for i in range(index, len(self.runes)):
24 if self.runes[i] == rune:
25 found = True
26 index = i + 1
27 indexes_to_remove.append(i)
28 break
29 if not found:
30 break
31 if len(indexes_to_remove) == len(required_runes):
32 self.runewords_made.add(name)
33 for i in sorted(indexes_to_remove, reverse=True):
34 self.runes.pop(i)
35 return name
36 return None
.....F.
======================================================================
FAIL: test_returns_runewords_in_runeword_order (test.TestRunewordsCalculator.test_returns_runewords_in_runeword_order)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/tmp/test.py", line 55, in test_returns_runewords_in_runeword_order
self.assertEqual(next(iterator), "First")
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: None != 'First'
----------------------------------------------------------------------
Ran 7 tests in 0.001s
FAILED (failures=1)