Skip to content

Commit 5f5f02f

Browse files
Add unit tests for distribute tuple
1 parent 236d4fb commit 5f5f02f

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

test-data/unit/check-tuples.test

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1815,3 +1815,43 @@ class tuple_aa_subclass(Tuple[A, A]): ...
18151815

18161816
inst_tuple_aa_subclass: tuple_aa_subclass = tuple_aa_subclass((A(), A()))[:] # E: Incompatible types in assignment (expression has type "Tuple[A, A]", variable has type "tuple_aa_subclass")
18171817
[builtins fixtures/tuple.pyi]
1818+
1819+
# ----------------------------------------------------------------------------
1820+
# Union-in-Tuple distribution
1821+
# ----------------------------------------------------------------------------
1822+
1823+
[case testTupleUnionDistributionSuccess]
1824+
from typing import Tuple, Optional, Union
1825+
1826+
def f1(x: Tuple[float, Optional[float]]) -> Union[Tuple[float, float], Tuple[float, None]]:
1827+
return x
1828+
1829+
def f2(x: Tuple[Union[int, str], float]) -> Union[Tuple[int, float], Tuple[str, float]]:
1830+
return x
1831+
1832+
def f3(x: Tuple[int, Union[str, None]]) -> Union[Tuple[int, str], Tuple[int, None]]:
1833+
return x
1834+
1835+
def f4(x: Tuple[Union[int, float]]) -> Union[Tuple[int], Tuple[float]]:
1836+
return x
1837+
1838+
def f5(x: Tuple[Union[int, str], Union[bool, None]]) -> Union[
1839+
Tuple[int, bool],
1840+
Tuple[int, None],
1841+
Tuple[str, bool],
1842+
Tuple[str, None],
1843+
]:
1844+
return x
1845+
1846+
[builtins fixtures/tuple.pyi]
1847+
1848+
[case testTupleUnionDistributionFail]
1849+
from typing import Tuple, Optional, Union
1850+
1851+
def g1(x: Tuple[float, Optional[float]]) -> Union[Tuple[float, float], Tuple[str, float]]:
1852+
return x # E: Incompatible return value type (got "Tuple[float, Optional[float]]", expected "Union[Tuple[float, float], Tuple[str, float]]")
1853+
1854+
def g2(x: Tuple[float, Optional[float]]) -> Union[Tuple[float, str], Tuple[float, None]]:
1855+
return x # E: Incompatible return value type (got "Tuple[float, Optional[float]]", expected "Union[Tuple[float, str], Tuple[float, None]]")
1856+
1857+
[builtins fixtures/tuple.pyi]

0 commit comments

Comments
 (0)