def test_deck_replace(cards): deck = Deck(cards) replacement = Card("UNO") deck.replace({"name": "ONE"}, replacement) assert not list(deck.find({"name": "ONE"})) assert list(deck.find({"name": "UNO"})) assert len(deck) == len(cards)
def test_deck_find(cards): deck = Deck(cards) found = list(deck.find()) assert len(found) == len(cards) for name in ("ONE", "TWO", "THREE", "FOUR"): found = list(deck.find({"name": name})) found2 = list(deck.find(name)) assert len(found) == 1 assert len(found2) == 1
def test_deck_update(cards): deck = Deck(cards) index = 0 index_value = "int" update = {"index": index, "value": index_value} deck.update({"name": "ONE"}, update) card = next(deck.find({"name": "ONE"})) assert card[index] == index_value slice_ = slice(0, 2) slice_value = "sliceslice" update = {"index": slice_, "value": slice_value} deck.update({"name": "TWO"}, update) card = next(deck.find({"name": "TWO"})) assert card[:2] == ["slicesli", "ce"] assert card.get_large(slice_) == slice_value indexs =[-4, -3, -2, -1] indexs_values = [1001, 1002, 1003, 1004] update = {"index": indexs, "value": indexs_values} deck.update({"name": "THREE"}, update) card = next(deck.find({"name": "THREE"})) assert card[indexs] == indexs_values for notlisttype in (slice, int, str): with pytest.raises(TypeError): deck.update({}, {"index": notlisttype(), "value": list()}) deck_str = deck.dumps() # redo the update, but without using update func deck2 = Deck(cards) card = deck.find_one({"name": "ONE"}) card[index] = index_value card = deck.find_one({"name": "TWO"}) card[slice_] = slice_value card = deck.find_one({"name": "THREE"}) card[indexs] = indexs_values deck2_str = deck2.dumps() assert deck_str == deck2_str
def test_deck_find_one(): deck = Deck() for _ in range(10): deck.append(Card("CLONE")) card = deck.find_one("CLONE") assert card.name == "CLONE" assert card == list(deck.find("CLONE"))[0]
def test_deck_find_notexist(): deck = Deck() for _ in range(10): deck.append(Card("CLONE")) card = deck.find_one("UNIQUE") assert card is None cards = list(deck.find("UNIQUE")) assert not cards