Esempio n. 1
0
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
Esempio n. 2
0
def test_deck_init_iter(cards):

    deck = Deck(cards)
    assert len(deck) == len(cards)

    for i, card in enumerate(deck):
        assert card == cards[i]
Esempio n. 3
0
def test_deck_extend(cards):

    deck = Deck()
    assert len(deck) == 0

    deck.extend(cards)
    assert len(deck) == len(cards)

    for i, card in enumerate(deck):
        assert card == cards[i]
Esempio n. 4
0
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)
Esempio n. 5
0
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]
Esempio n. 6
0
def test_deck_append(cards):

    deck = Deck()
    assert len(deck) == 0

    for card in cards:
        deck.append(card)
    assert len(deck) == len(cards)

    for i, card in enumerate(deck):
        assert card == cards[i]
Esempio n. 7
0
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
Esempio n. 8
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
Esempio n. 9
0
def test_deck_sort_by_first_val(cards):

    deck = Deck(cards)
    deck_sort = deck.sorted(key=lambda card: card[0])
    
    for i in range(len(deck)-1):
        c1 = deck_sort[i]
        c2 = deck_sort[i+1]
        assert c1[0] < c2[0]

    # modifying sorted deck has no effect on original deck
    deck_sort.delete()

    assert len(deck) == len(cards)
    assert len(deck_sort) == 0
Esempio n. 10
0
def test_deck_sort_by_name_reverse(cards):

    deck = Deck(cards)
    deck_sort = deck.sorted(reverse=True)

    for i in range(len(deck)-1):
        c1 = deck_sort[i]
        c2 = deck_sort[i+1]
        assert c1.name > c2.name

    # modifying sorted deck has no effect on original deck
    deck_sort.delete()

    assert len(deck) == len(cards)
    assert len(deck_sort) == 0