def test_extract(self): card_stack = CardStack(['a', 'b', 'c', 'd', 'b', 'e']) extracted = card_stack.extract(['b']) self.assertEqual(extracted, ['b']) self.assertEqual(card_stack.size(), 5) self.assertEqual(card_stack.distribution.count('b'), 1) cards = card_stack.draw(card_stack.size()) self.assertEqual(cards, ['a', 'c', 'd', 'b', 'e']) card_stack.add(cards) extracted = card_stack.extract(['b']) self.assertEqual(card_stack.distribution.count('b'), 0)
def test_peek_from_position(self): stack = CardStack(['a', 'b', 'c']) self.assertEqual(stack.peek_from_position(StackPosition.BOTTOM), ['c']) self.assertEqual(stack.peek_from_position(StackPosition.TOP), ['a']) self.assertEqual(stack.peek_from_position(StackPosition.TOP, 3), ['a', 'b', 'c']) stack.draw(1) self.assertEqual(stack.peek_from_position(StackPosition.TOP), ['b'])
def test_peek(self): stack = CardStack(['a', 'b', 'c']) self.assertEqual(stack.peek(0), 'a') self.assertEqual(stack.peek(1), 'b') self.assertEqual(stack.size(), 3) stack.draw(1) self.assertEqual(stack.peek(0), 'b') self.assertEqual(stack.peek(1), 'c')
def test_shuffle(self): self.card_stack.add('b') self.card_stack.add('c') self.card_stack.shuffle() self.assertEqual(self.card_stack.size(), 3) self.assertTrue(self.card_stack.has_card('a')) self.assertTrue(self.card_stack.has_card('b')) self.assertTrue(self.card_stack.has_card('c')) stack = CardStack(['a', 'b', 'c']) unshuffled_stack = stack.deepcopy() found_difference = False for _ in range(10): stack.shuffle() if stack._stack != unshuffled_stack._stack: found_difference = True break self.assertTrue(found_difference)
def setUp(self): self.card_stack = CardStack(['a'])
class CardStackTest(unittest.TestCase): def setUp(self): self.card_stack = CardStack(['a']) def test_has_card(self): self.assertTrue(self.card_stack.has_card('a')) self.assertFalse(self.card_stack.has_card('b')) def test_add(self): card_stack = CardStack([]) card_stack.add('b') self.assertTrue(card_stack.has_card('b')) self.assertEqual(card_stack.distribution.count('b'), 1) cards = card_stack.draw(1) self.assertEqual(cards, ['b']) card_stack.add(['a', 'b', 'c']) cards = card_stack.draw(1) self.assertEqual(cards, ['a']) card_stack.add('a', StackPosition.BOTTOM) cards = card_stack.draw(1) self.assertEqual(cards, ['b']) cards = card_stack.draw(2) self.assertEqual(cards, ['c', 'a']) def test_add_to_bottom(self): card_stack = CardStack() card_stack.add(['a', 'b', 'c']) card_stack.add(['d', 'e', 'f'], position=StackPosition.BOTTOM) cards = card_stack.draw(5) self.assertEqual(cards, ['a', 'b', 'c', 'd', 'e']) def test_extract(self): card_stack = CardStack(['a', 'b', 'c', 'd', 'b', 'e']) extracted = card_stack.extract(['b']) self.assertEqual(extracted, ['b']) self.assertEqual(card_stack.size(), 5) self.assertEqual(card_stack.distribution.count('b'), 1) cards = card_stack.draw(card_stack.size()) self.assertEqual(cards, ['a', 'c', 'd', 'b', 'e']) card_stack.add(cards) extracted = card_stack.extract(['b']) self.assertEqual(card_stack.distribution.count('b'), 0) def test_size(self): self.assertEqual(self.card_stack.size(), 1) self.card_stack.add('b') self.assertEqual(self.card_stack.size(), 2) def test_draw(self): self.card_stack.add('a') self.card_stack.add('b') self.card_stack.add('c') self.assertEqual(self.card_stack.draw(2), ['c', 'b']) self.assertEqual(self.card_stack.size(), 2) self.assertEqual(self.card_stack.distribution.size(), 2) def test_shuffle(self): self.card_stack.add('b') self.card_stack.add('c') self.card_stack.shuffle() self.assertEqual(self.card_stack.size(), 3) self.assertTrue(self.card_stack.has_card('a')) self.assertTrue(self.card_stack.has_card('b')) self.assertTrue(self.card_stack.has_card('c')) stack = CardStack(['a', 'b', 'c']) unshuffled_stack = stack.deepcopy() found_difference = False for _ in range(10): stack.shuffle() if stack._stack != unshuffled_stack._stack: found_difference = True break self.assertTrue(found_difference) def test_deep_copy(self): self.card_stack.add('b') stack_copy = self.card_stack.deepcopy() self.assertEqual(self.card_stack.size(), stack_copy.size()) self.assertEqual(self.card_stack._stack, stack_copy._stack) self.assertEqual(self.card_stack.distribution, stack_copy.distribution) def test_empty(self): self.card_stack.empty() self.assertEqual(self.card_stack.size(), 0, 'Stack size should be 0 after empty.') self.assertEqual({}, self.card_stack.distribution.cards_to_counts(), 'Distribution should be empty after emptying.') def test_peek(self): stack = CardStack(['a', 'b', 'c']) self.assertEqual(stack.peek(0), 'a') self.assertEqual(stack.peek(1), 'b') self.assertEqual(stack.size(), 3) stack.draw(1) self.assertEqual(stack.peek(0), 'b') self.assertEqual(stack.peek(1), 'c') def test_peek_from_position(self): stack = CardStack(['a', 'b', 'c']) self.assertEqual(stack.peek_from_position(StackPosition.BOTTOM), ['c']) self.assertEqual(stack.peek_from_position(StackPosition.TOP), ['a']) self.assertEqual(stack.peek_from_position(StackPosition.TOP, 3), ['a', 'b', 'c']) stack.draw(1) self.assertEqual(stack.peek_from_position(StackPosition.TOP), ['b'])
def test_add_to_bottom(self): card_stack = CardStack() card_stack.add(['a', 'b', 'c']) card_stack.add(['d', 'e', 'f'], position=StackPosition.BOTTOM) cards = card_stack.draw(5) self.assertEqual(cards, ['a', 'b', 'c', 'd', 'e'])
def test_add(self): card_stack = CardStack([]) card_stack.add('b') self.assertTrue(card_stack.has_card('b')) self.assertEqual(card_stack.distribution.count('b'), 1) cards = card_stack.draw(1) self.assertEqual(cards, ['b']) card_stack.add(['a', 'b', 'c']) cards = card_stack.draw(1) self.assertEqual(cards, ['a']) card_stack.add('a', StackPosition.BOTTOM) cards = card_stack.draw(1) self.assertEqual(cards, ['b']) cards = card_stack.draw(2) self.assertEqual(cards, ['c', 'a'])