mirror of
https://github.com/python/cpython.git
synced 2026-01-06 15:32:22 +00:00
gh-103746: Test types.UnionType and Literal types together (#103747)
This commit is contained in:
parent
d2745fe850
commit
3d29edaf0a
2 changed files with 34 additions and 0 deletions
|
|
@ -925,6 +925,35 @@ def test_or_type_operator_with_SpecialForm(self):
|
|||
assert typing.Optional[int] | str == typing.Union[int, str, None]
|
||||
assert typing.Union[int, bool] | str == typing.Union[int, bool, str]
|
||||
|
||||
def test_or_type_operator_with_Literal(self):
|
||||
Literal = typing.Literal
|
||||
self.assertEqual((Literal[1] | Literal[2]).__args__,
|
||||
(Literal[1], Literal[2]))
|
||||
|
||||
self.assertEqual((Literal[0] | Literal[False]).__args__,
|
||||
(Literal[0], Literal[False]))
|
||||
self.assertEqual((Literal[1] | Literal[True]).__args__,
|
||||
(Literal[1], Literal[True]))
|
||||
|
||||
self.assertEqual(Literal[1] | Literal[1], Literal[1])
|
||||
self.assertEqual(Literal['a'] | Literal['a'], Literal['a'])
|
||||
|
||||
import enum
|
||||
class Ints(enum.IntEnum):
|
||||
A = 0
|
||||
B = 1
|
||||
|
||||
self.assertEqual(Literal[Ints.A] | Literal[Ints.A], Literal[Ints.A])
|
||||
self.assertEqual(Literal[Ints.B] | Literal[Ints.B], Literal[Ints.B])
|
||||
|
||||
self.assertEqual((Literal[Ints.B] | Literal[Ints.A]).__args__,
|
||||
(Literal[Ints.B], Literal[Ints.A]))
|
||||
|
||||
self.assertEqual((Literal[0] | Literal[Ints.A]).__args__,
|
||||
(Literal[0], Literal[Ints.A]))
|
||||
self.assertEqual((Literal[1] | Literal[Ints.B]).__args__,
|
||||
(Literal[1], Literal[Ints.B]))
|
||||
|
||||
def test_or_type_repr(self):
|
||||
assert repr(int | str) == "int | str"
|
||||
assert repr((int | str) | list) == "int | str | list"
|
||||
|
|
|
|||
|
|
@ -1805,6 +1805,11 @@ class Ints(enum.IntEnum):
|
|||
A = 0
|
||||
B = 1
|
||||
|
||||
self.assertEqual(Union[Literal[Ints.A], Literal[Ints.A]],
|
||||
Literal[Ints.A])
|
||||
self.assertEqual(Union[Literal[Ints.B], Literal[Ints.B]],
|
||||
Literal[Ints.B])
|
||||
|
||||
self.assertEqual(Union[Literal[Ints.A], Literal[Ints.B]].__args__,
|
||||
(Literal[Ints.A], Literal[Ints.B]))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue