|
33 | 33 | IsSub, |
34 | 34 | Iter, |
35 | 35 | Length, |
| 36 | + Matches, |
36 | 37 | Member, |
37 | 38 | Members, |
38 | 39 | NewProtocol, |
@@ -902,6 +903,99 @@ def test_never_is(): |
902 | 903 | assert d == _LiteralGeneric[True] |
903 | 904 |
|
904 | 905 |
|
| 906 | +def test_matches_01(): |
| 907 | + d = eval_typing(Matches[int, int]) |
| 908 | + assert d == _LiteralGeneric[True] |
| 909 | + |
| 910 | + d = eval_typing(Matches[int, str]) |
| 911 | + assert d == _LiteralGeneric[False] |
| 912 | + |
| 913 | + d = eval_typing(Matches[str, int]) |
| 914 | + assert d == _LiteralGeneric[False] |
| 915 | + |
| 916 | + |
| 917 | +def test_matches_02(): |
| 918 | + class A: |
| 919 | + pass |
| 920 | + |
| 921 | + class B(A): |
| 922 | + pass |
| 923 | + |
| 924 | + class C(B): |
| 925 | + pass |
| 926 | + |
| 927 | + class D(A): |
| 928 | + pass |
| 929 | + |
| 930 | + class X: |
| 931 | + pass |
| 932 | + |
| 933 | + d = eval_typing(Matches[A, A]) |
| 934 | + assert d == _LiteralGeneric[True] |
| 935 | + |
| 936 | + d = eval_typing(Matches[A, B]) |
| 937 | + assert d == _LiteralGeneric[False] |
| 938 | + d = eval_typing(Matches[B, A]) |
| 939 | + assert d == _LiteralGeneric[False] |
| 940 | + d = eval_typing(Matches[B, C]) |
| 941 | + assert d == _LiteralGeneric[False] |
| 942 | + d = eval_typing(Matches[C, B]) |
| 943 | + assert d == _LiteralGeneric[False] |
| 944 | + d = eval_typing(Matches[C, D]) |
| 945 | + assert d == _LiteralGeneric[False] |
| 946 | + d = eval_typing(Matches[D, C]) |
| 947 | + assert d == _LiteralGeneric[False] |
| 948 | + |
| 949 | + d = eval_typing(Matches[A, X]) |
| 950 | + assert d == _LiteralGeneric[False] |
| 951 | + |
| 952 | + |
| 953 | +def test_matches_03(): |
| 954 | + class A[T]: |
| 955 | + pass |
| 956 | + |
| 957 | + class B[T](A[T]): |
| 958 | + pass |
| 959 | + |
| 960 | + class C(B[int]): |
| 961 | + pass |
| 962 | + |
| 963 | + class D(A[str]): |
| 964 | + pass |
| 965 | + |
| 966 | + class X: |
| 967 | + pass |
| 968 | + |
| 969 | + d = eval_typing(Matches[A[int], A[int]]) |
| 970 | + assert d == _LiteralGeneric[True] |
| 971 | + d = eval_typing(Matches[A[int], A[str]]) |
| 972 | + assert d == _LiteralGeneric[True] |
| 973 | + |
| 974 | + d = eval_typing(Matches[A[int], B[int]]) |
| 975 | + assert d == _LiteralGeneric[False] |
| 976 | + d = eval_typing(Matches[B[int], A[int]]) |
| 977 | + assert d == _LiteralGeneric[False] |
| 978 | + d = eval_typing(Matches[A[int], B[str]]) |
| 979 | + assert d == _LiteralGeneric[False] |
| 980 | + d = eval_typing(Matches[B[str], A[int]]) |
| 981 | + assert d == _LiteralGeneric[False] |
| 982 | + d = eval_typing(Matches[B[int], C]) |
| 983 | + assert d == _LiteralGeneric[False] |
| 984 | + d = eval_typing(Matches[C, B[int]]) |
| 985 | + assert d == _LiteralGeneric[False] |
| 986 | + d = eval_typing(Matches[B[str], C]) |
| 987 | + assert d == _LiteralGeneric[False] |
| 988 | + d = eval_typing(Matches[C, B[str]]) |
| 989 | + assert d == _LiteralGeneric[False] |
| 990 | + d = eval_typing(Matches[C, D]) |
| 991 | + assert d == _LiteralGeneric[False] |
| 992 | + d = eval_typing(Matches[D, C]) |
| 993 | + assert d == _LiteralGeneric[False] |
| 994 | + |
| 995 | + d = eval_typing(Matches[A[int], X]) |
| 996 | + assert d == _LiteralGeneric[False] |
| 997 | + |
| 998 | + |
905 | 999 | def test_eval_iter_01(): |
906 | 1000 | d = eval_typing(Iter[tuple[int, str]]) |
907 | 1001 | assert tuple(d) == (int, str) |
|
0 commit comments