| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- # Test cases for sets (compile and run)
- [case testSets]
- from typing import Set, List
- def instantiateLiteral() -> Set[int]:
- return {1, 2, 3, 5, 8}
- def fromIterator() -> List[Set[int]]:
- a = set([1, 3, 5])
- b = set((1, 3, 5))
- c = set({1: '1', 3: '3', 5: '5'})
- d = set(x for x in range(1, 6, 2))
- e = set((x for x in range(1, 6, 2)))
- return [a, b, c, d, e]
- def fromIterator2() -> Set[int]:
- tmp_list = [1, 2, 3, 4, 5]
- return set((x + 1) for x in ((y * 10) for y in (z for z in tmp_list if z < 4)))
- def addIncrementing(s : Set[int]) -> None:
- for a in [1, 2, 3]:
- if a not in s:
- s.add(a)
- return
- def replaceWith1(s : Set[int]) -> None:
- s.clear()
- s.add(1)
- def remove1(s : Set[int]) -> None:
- s.remove(1)
- def discard1(s: Set[int]) -> None:
- s.discard(1)
- def pop(s : Set[int]) -> int:
- return s.pop()
- def update(s: Set[int], x: List[int]) -> None:
- s.update(x)
- [file driver.py]
- from native import instantiateLiteral
- from testutil import assertRaises
- val = instantiateLiteral()
- assert 1 in val
- assert 2 in val
- assert 3 in val
- assert 5 in val
- assert 8 in val
- assert len(val) == 5
- assert val == {1, 2, 3, 5, 8}
- s = 0
- for i in val:
- s += i
- assert s == 19
- from native import fromIterator
- sets = fromIterator()
- for s in sets:
- assert s == {1, 3, 5}
- from native import fromIterator2
- s = fromIterator2()
- assert s == {11, 21, 31}
- from native import addIncrementing
- s = set()
- addIncrementing(s)
- assert s == {1}
- addIncrementing(s)
- assert s == {1, 2}
- addIncrementing(s)
- assert s == {1, 2, 3}
- from native import replaceWith1
- s = {3, 7, 12}
- replaceWith1(s)
- assert s == {1}
- from native import remove1
- import traceback
- s = {1, 4, 6}
- remove1(s)
- assert s == {4, 6}
- with assertRaises(KeyError, '1'):
- remove1(s)
- from native import discard1
- s = {1, 4, 6}
- discard1(s)
- assert s == {4, 6}
- discard1(s)
- assert s == {4, 6}
- from native import pop
- s = {1, 2, 3}
- x = pop(s)
- assert len(s) == 2
- assert x in [1, 2, 3]
- y = pop(s)
- assert len(s) == 1
- assert y in [1, 2, 3]
- assert x != y
- z = pop(s)
- assert len(s) == 0
- assert z in [1, 2, 3]
- assert x != z
- assert y != z
- with assertRaises(KeyError, 'pop from an empty set'):
- pop(s)
- from native import update
- s = {1, 2, 3}
- update(s, [5, 4, 3])
- assert s == {1, 2, 3, 4, 5}
- [case testPrecomputedFrozenSets]
- from typing import Any
- from typing_extensions import Final
- CONST: Final = "CONST"
- non_const = "non_const"
- def main_set(item: Any) -> bool:
- return item in {None, False, 1, 2.0, "3", b"4", 5j, (6,), ((7,),), (), CONST}
- def main_negated_set(item: Any) -> bool:
- return item not in {None, False, 1, 2.0, "3", b"4", 5j, (6,), ((7,),), (), CONST}
- def non_final_name_set(item: Any) -> bool:
- return item in {non_const}
- s = set()
- for i in {None, False, 1, 2.0, "3", b"4", 5j, (6,), CONST}:
- s.add(i)
- def test_in_set() -> None:
- for item in (None, False, 1, 2.0, "3", b"4", 5j, (6,), ((7,),), (), CONST):
- assert main_set(item), f"{item!r} should be in set_main"
- assert not main_negated_set(item), item
- global non_const
- assert non_final_name_set(non_const)
- non_const = "updated"
- assert non_final_name_set("updated")
- def test_for_set() -> None:
- assert not s ^ {None, False, 1, 2.0, "3", b"4", 5j, (6,), CONST}, s
|