def test_iterable_class(self): class Count: def __init__(self, start=0): self.num = start def __iter__(self): return self def __next__(self): if self.num == 5: raise StopIteration num = self.num self.num += 1 return num iterable_class = Count() iterator = MyIterator(iterable_class, 'odd') result = [element for element in iterator] self.assertEqual(result, [0, 2, 4]) iterable_class = Count() iterator = MyIterator(iterable_class, 'even') result = [element for element in iterator] self.assertEqual(result, [1, 3])
def test_string_even(self): iterator = MyIterator('abcdefg', 'even') result = [element for element in iterator] self.assertEqual(result, ['b', 'd', 'f'])
def test_string_odd(self): iterator = MyIterator('abcdefg', 'odd') result = [element for element in iterator] self.assertEqual(result, ['a', 'c', 'e', 'g'])
def test_empty_even(self): iterator = MyIterator([], 'even') result = [element for element in iterator] self.assertEqual(result, [])
def test_one_element_odd(self): iterator = MyIterator([1], 'odd') result = [element for element in iterator] self.assertEqual(result, [1])
def test_dict_even(self): iterator = MyIterator({'a': 1, 'b': 2, 'c': 3}, 'even') result = [element for element in iterator] self.assertEqual(result, ['b'])
def test_dict_odd(self): iterator = MyIterator({'a': 1, 'b': 2, 'c': 3}, 'odd') result = [element for element in iterator] self.assertEqual(result, ['a', 'c'])
def test_range_even(self): iterator = MyIterator(range(10), 'even') result = [element for element in iterator] self.assertEqual(result, [1, 3, 5, 7, 9])
def test_range_odd(self): iterator = MyIterator(range(10), 'odd') result = [element for element in iterator] self.assertEqual(result, [0, 2, 4, 6, 8])
def test_simple_case_even(self): iterator = MyIterator([1, 2, 3, 4, 5], 'even') result = [element for element in iterator] self.assertEqual(result, [2, 4])
def test_simple_case_odd(self): iterator = MyIterator([1, 2, 3, 4, 5], 'odd') result = [element for element in iterator] self.assertEqual(result, [1, 3, 5])