example-code-2e/13-protocol-abc/typing/randompick_test.py

26 lines
691 B
Python
Raw Normal View History

import random
from typing import Any, Iterable, TYPE_CHECKING
from randompick import RandomPicker # <1>
2021-05-21 23:56:12 +02:00
class SimplePicker: # <2>
def __init__(self, items: Iterable) -> None:
self._items = list(items)
random.shuffle(self._items)
def pick(self) -> Any: # <3>
return self._items.pop()
def test_isinstance() -> None: # <4>
2021-08-07 05:44:01 +02:00
popper: RandomPicker = SimplePicker([1]) # <5>
assert isinstance(popper, RandomPicker) # <6>
2021-08-07 05:44:01 +02:00
def test_item_type() -> None: # <7>
items = [1, 2]
popper = SimplePicker(items)
item = popper.pick()
assert item in items
if TYPE_CHECKING:
2021-08-07 05:44:01 +02:00
reveal_type(item) # <8>
assert isinstance(item, int)