class UnorderedCardStack(CardStack): """ An unordered stack of cards. When an ordering is specified it will just be ignored. """ def __init__(self, initial_card_list=None): initial_card_list = initial_card_list or [] self.distribution = CardDistribution(initial_card_list) def __iter__(self): for card, count in self.distribution.cards_to_counts().items(): for i in range(count): yield card def add(self, cards, position=None): if type(cards) != list: cards = [cards] for card in cards: self.distribution.add(card) def draw(self, amount, position=None): raise NotImplementedError('Can not draw from UnorderedCardStack') def empty(self): self.distribution.empty() def extract(self, cards): for card in cards: self.distribution.subtract(card) return cards def has_card(self, card): return self.distribution.count(card) > 0 def shuffle(self): return def size(self): return self.distribution.size() def deepcopy(self): card_stack = UnorderedCardStack() card_stack.distribution = self.distribution.deepcopy() return card_stack
def test_empty(self): dist = CardDistribution([1, 1, 2]) dist.empty() self.assertEqual(dist.size(), 0)