fixed tests for sets
This commit is contained in:
@ -1,11 +1,7 @@
|
|||||||
!!!autogeneriert!!!
|
!!!autogeneriert!!!
|
||||||
## exercise 2 - dictionary - (11.5/20)
|
## exercise 2 - dictionary - (20/20)
|
||||||
|
|
||||||
### a) calculate_price (6/10)
|
### a) calculate_price (10/10)
|
||||||
- Preis wird nicht in Euro (float) ausgegeben [`-2`]
|
|
||||||
- Preis wird nicht korrekt berechnet [`-2`]
|
|
||||||
|
|
||||||
### b) by_amount (5.5/10)
|
|
||||||
- `by_amount` hat inkorrekte Typannotationen [`-0.5`]
|
### b) by_amount (10/10)
|
||||||
- nicht überprüft ob Produkte in `articles` enthalten [`-2`]
|
|
||||||
- `by_amount` wird nicht korrekt berechnet [`-2`]
|
|
||||||
|
@ -10,9 +10,7 @@ def calculate_price(articles: dict[str, int], cart: dict[str, int]) -> float:
|
|||||||
|
|
||||||
def by_amount(articles: dict[str, int], cart: dict[str, int]) -> dict[int, list[str]]:
|
def by_amount(articles: dict[str, int], cart: dict[str, int]) -> dict[int, list[str]]:
|
||||||
out: dict[int, list[str]] = dict()
|
out: dict[int, list[str]] = dict()
|
||||||
for name, amount in cart.items():
|
for name, amount in filter(lambda i: i[0] in articles, cart.items()):
|
||||||
if name not in articles:
|
|
||||||
continue
|
|
||||||
if amount not in out:
|
if amount not in out:
|
||||||
out[amount] = [name]
|
out[amount] = [name]
|
||||||
else:
|
else:
|
||||||
@ -29,5 +27,3 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
assert by_amount(articles_dict, cart_dict) == {
|
assert by_amount(articles_dict, cart_dict) == {
|
||||||
2: ['apples', 'oranges'], 1: ['lemons']}
|
2: ['apples', 'oranges'], 1: ['lemons']}
|
||||||
|
|
||||||
|
|
||||||
|
@ -68,7 +68,10 @@ def test_no_typeannotation_by_amount():
|
|||||||
def test_typeannotation_by_amount():
|
def test_typeannotation_by_amount():
|
||||||
from ex2_dictionary import by_amount
|
from ex2_dictionary import by_amount
|
||||||
assert has_annotations(
|
assert has_annotations(
|
||||||
by_amount, [dict[str, int], dict[str, int]], dict[int, list[str]])
|
by_amount, [dict[str, int], dict[str, int]], dict[int, list[str]]
|
||||||
|
) or has_annotations(
|
||||||
|
by_amount, [dict[str, int], dict[str, int]], dict[int, set[str]]
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.dependency(depends=[Task.A])
|
@pytest.mark.dependency(depends=[Task.A])
|
||||||
@ -105,6 +108,11 @@ def test_price_calc():
|
|||||||
|
|
||||||
assert abs(calculate_price(articles_dict, cart_dict) - 6) < EPS
|
assert abs(calculate_price(articles_dict, cart_dict) - 6) < EPS
|
||||||
|
|
||||||
|
articles_dict = {"app": 100, "ora": 100,
|
||||||
|
"lemons": 200, "avo": 500}
|
||||||
|
cart_dict = {"apples": 2, "oranges": 2, "lemons": 1, "bananas": 5}
|
||||||
|
assert abs(calculate_price(articles_dict, cart_dict) - 2) < EPS
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.dependency(depends=[Task.A])
|
@pytest.mark.dependency(depends=[Task.A])
|
||||||
@pytest.mark.timeout(10)
|
@pytest.mark.timeout(10)
|
||||||
@ -138,7 +146,25 @@ def test_by_amount():
|
|||||||
cart_dict = {"apples": 2, "oranges": 2, "lemons": 1, "bananas": 5}
|
cart_dict = {"apples": 2, "oranges": 2, "lemons": 1, "bananas": 5}
|
||||||
|
|
||||||
assert by_amount(articles_dict, cart_dict) == {
|
assert by_amount(articles_dict, cart_dict) == {
|
||||||
2: ['apples', 'oranges'], 1: ['lemons']}
|
2: ['apples', 'oranges'], 1: ['lemons']
|
||||||
|
} or by_amount(articles_dict, cart_dict) == {
|
||||||
|
2: {'apples', 'oranges'}, 1: {'lemons'}
|
||||||
|
}
|
||||||
|
|
||||||
|
articles_dict = {"app": 100, "ora": 100,
|
||||||
|
"lemons": 200, "avo": 500}
|
||||||
|
cart_dict = {"apples": 2, "oranges": 2, "lemons": 1, "bananas": 5}
|
||||||
|
assert by_amount(articles_dict, cart_dict) == {1: ['lemons']} or by_amount(
|
||||||
|
articles_dict, cart_dict) == {1: {'lemons'}}
|
||||||
|
|
||||||
|
articles_dict = {"apples": 100, "oranges": 100,
|
||||||
|
"lemons": 200, "avocado": 500}
|
||||||
|
cart_dict = {"apples": 42, "oranges": 99, "lemons": 1, "bananas": 1}
|
||||||
|
assert by_amount(articles_dict, cart_dict) == {
|
||||||
|
99: ['oranges'], 42: ['apples'], 1: ['lemons']
|
||||||
|
} or by_amount(articles_dict, cart_dict) == {
|
||||||
|
99: {'oranges'}, 42: {'apples'}, 1: {'lemons'}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.dependency(depends=[Task.B])
|
@pytest.mark.dependency(depends=[Task.B])
|
||||||
@ -150,8 +176,7 @@ def test_sideeffects_by_amount():
|
|||||||
"lemons": 200, "avocado": 500}
|
"lemons": 200, "avocado": 500}
|
||||||
b = {"apples": 2, "oranges": 2, "lemons": 1, "bananas": 5}
|
b = {"apples": 2, "oranges": 2, "lemons": 1, "bananas": 5}
|
||||||
|
|
||||||
r = by_amount(a2 := deepcopy(a), b2 := deepcopy(b)) == {
|
r = by_amount(a2 := deepcopy(a), b2 := deepcopy(b))
|
||||||
2: ['apples', 'oranges'], 1: ['lemons']}
|
|
||||||
assert a2 == a and b2 == b and r is not a and r is not b
|
assert a2 == a and b2 == b and r is not a and r is not b
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user