Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions checks/generators/generators1.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
assert list(count_up_to(4)) == [1, 2, 3, 4]
assert list(count_up_to(1)) == [1]
assert list(count_up_to(0)) == []
print("generators1 ✓")
# generators1.py
assert list(count_up_to(4)) == [1, 2, 3, 4], "Expected list(count_up_to(4)) to be [1, 2, 3, 4]"
assert list(count_up_to(1)) == [1], "Expected list(count_up_to(1)) to be [1]"
assert list(count_up_to(0)) == [], "Expected list(count_up_to(0)) to be [] (no elements when limit is 0)"
print("generators1 ✓")
14 changes: 7 additions & 7 deletions checks/generators/generators10.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
assert list(running_total([1, 2, 3, 4])) == [1, 3, 6, 10]
assert list(running_total([10, -3, 7])) == [10, 7, 14]
assert list(running_total([])) == []
assert list(running_total([5])) == [5]
# Works as a streaming pipeline over a generator input.
assert list(running_total(x * x for x in range(1, 5))) == [1, 5, 14, 30]
print("generators10 ✓")
# generators10.py
assert list(running_total([1, 2, 3, 4])) == [1, 3, 6, 10], "Expected list(running_total([1, 2, 3, 4])) to be [1, 3, 6, 10]"
assert list(running_total([10, -3, 7])) == [10, 7, 14], "Expected list(running_total([10, -3, 7])) to be [10, 7, 14]"
assert list(running_total([])) == [], "Expected list(running_total([])) to be [] (no elements to sum)"
assert list(running_total([5])) == [5], "Expected list(running_total([5])) to be [5]"
assert list(running_total(x * x for x in range(1, 5))) == [1, 5, 14, 30], "Expected running_total over a generator input (1, 4, 9, 16) to yield [1, 5, 14, 30]"
print("generators10 ✓")
7 changes: 4 additions & 3 deletions checks/generators/generators3.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# generators3.py — first assert already has a message, leave it exactly as-is
assert collected == [2, 4, 6, 8], f"expected [2, 4, 6, 8], got {collected}"
assert list(evens_up_to(5)) == [2, 4]
assert list(evens_up_to(1)) == []
print("generators3 ✓")
assert list(evens_up_to(5)) == [2, 4], "Expected list(evens_up_to(5)) to be [2, 4]"
assert list(evens_up_to(1)) == [], "Expected list(evens_up_to(1)) to be [] (no even numbers \u2264 1)"
print("generators3 ✓")
8 changes: 4 additions & 4 deletions checks/generators/generators6.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# generators6.py — first assert unchanged; big/1000 are plain variables, safe to echo
assert first_ten == list(range(1, 11)), (
f"expected [1..10], got {first_ten}"
)
# Confirm the generator really is infinite: pull 1000 values.
big = list(itertools.islice(natural_numbers(), 1000))
assert len(big) == 1000
assert big[-1] == 1000
print("generators6 ✓")
assert len(big) == 1000, f"Expected 1000 values pulled from natural_numbers(), got {len(big)}"
assert big[-1] == 1000, f"Expected the 1000th value to be 1000, got {big[-1]!r}"
print("generators6 ✓")
8 changes: 4 additions & 4 deletions checks/generators/generators7.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# generators7.py — first assert unchanged
import itertools

first8 = list(itertools.islice(fibonacci(), 8))
assert first8 == [0, 1, 1, 2, 3, 5, 8, 13], (
f"expected [0, 1, 1, 2, 3, 5, 8, 13], got {first8}"
)
# Confirm more terms keep coming.
first15 = list(itertools.islice(fibonacci(), 15))
assert len(first15) == 15
assert first15[-1] == 377
print("generators7 ✓")
assert len(first15) == 15, f"Expected 15 terms from fibonacci(), got {len(first15)}"
assert first15[-1] == 377, f"Expected the 15th Fibonacci term to be 377, got {first15[-1]!r}"
print("generators7 ✓")
14 changes: 7 additions & 7 deletions checks/generators/generators8.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
assert list(Countdown(3)) == [3, 2, 1]
assert list(Countdown(1)) == [1]
assert list(Countdown(5)) == [5, 4, 3, 2, 1]
# Should be re-iterable: a fresh iteration each time.
# generators8.py — Countdown is the class under test, no re-invocation in messages
assert list(Countdown(3)) == [3, 2, 1], "Expected list(Countdown(3)) to be [3, 2, 1]"
assert list(Countdown(1)) == [1], "Expected list(Countdown(1)) to be [1]"
assert list(Countdown(5)) == [5, 4, 3, 2, 1], "Expected list(Countdown(5)) to be [5, 4, 3, 2, 1]"
cd = Countdown(3)
assert list(cd) == [3, 2, 1]
assert list(cd) == [3, 2, 1]
print("generators8 ✓")
assert list(cd) == [3, 2, 1], "Expected first iteration over cd to be [3, 2, 1]"
assert list(cd) == [3, 2, 1], "Expected second iteration over cd to also be [3, 2, 1] \u2014 Countdown should be re-iterable, not exhausted after one pass"
print("generators8 ✓")
14 changes: 7 additions & 7 deletions checks/generators/generators9.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
assert list(Counter(4)) == [0, 1, 2, 3]
assert list(Counter(1)) == [0]
assert list(Counter(0)) == []
# StopIteration must be raised at the right moment.
# generators9.py
assert list(Counter(4)) == [0, 1, 2, 3], "Expected list(Counter(4)) to be [0, 1, 2, 3]"
assert list(Counter(1)) == [0], "Expected list(Counter(1)) to be [0]"
assert list(Counter(0)) == [], "Expected list(Counter(0)) to be [] (no elements when stop is 0)"
c = Counter(2)
assert next(c) == 0
assert next(c) == 1
assert next(c) == 0, "Expected the first value from Counter(2) to be 0"
assert next(c) == 1, "Expected the second value from Counter(2) to be 1"
try:
next(c)
raise AssertionError("expected StopIteration after stop elements")
except StopIteration:
pass
print("generators9 ✓")
print("generators9 ✓")