Al-HUWAITI Shell
Al-huwaiti


Server : LiteSpeed
System : Linux in-mum-web1112.main-hosting.eu 4.18.0-553.34.1.lve.el8.x86_64 #1 SMP Thu Jan 9 16:30:32 UTC 2025 x86_64
User : u451330669 ( 451330669)
PHP Version : 8.2.27
Disable Function : NONE
Directory :  /opt/alt/python311/lib/python3.11/site-packages/tests/classes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //opt/alt/python311/lib/python3.11/site-packages/tests/classes/test_something.py
from typing import Callable, List, Set
from unittest import TestCase

from test_resources import some_module
from typish import Something, TypingType

Inyerface = Something[{
    'a': int,
    'b': Callable[[int, int], str],
}]


class C1:
    a = 42

    def b(self, a: int, b: int) -> str:
        return str(a + b)


class C2:
    def __init__(self):
        self.a = 42

    def b(self, a: int, b: int) -> str:
        return str(a + b)


class C3:
    def __init__(self):
        self.a = 42

    def b(self, a, b):
        return str(a + b)


class C4:
    def __init__(self):
        self.a = 42

    def b(self, a, b: str):
        return str(a + b)


class C5:
    a = 42

    @staticmethod
    def b(a: int, b: int) -> str:
        return str(a + b)


class C6:
    a = 42

    @classmethod
    def b(cls, a: int, b: int) -> str:
        return str(a + b)


class TestSomething(TestCase):
    def test_something_with_slices(self):
        self.assertEqual(Inyerface, Something['a': int, 'b': Callable[[int, int], str]])

    def test_something_instance_check(self):
        self.assertTrue(isinstance(C1(), Inyerface))
        self.assertTrue(isinstance(C2(), Inyerface))
        self.assertTrue(not isinstance(C3(), Inyerface))
        self.assertTrue(not isinstance(C4(), Inyerface))
        self.assertTrue(isinstance(C5(), Inyerface))
        self.assertTrue(isinstance(C6(), Inyerface))

    def test_something_subclass_check(self):
        self.assertTrue(issubclass(C1, Inyerface))
        self.assertTrue(issubclass(C2, Inyerface))
        self.assertTrue(not issubclass(C3, Inyerface))
        self.assertTrue(not issubclass(C4, Inyerface))
        self.assertTrue(issubclass(C5, Inyerface))
        self.assertTrue(issubclass(C6, Inyerface))

    def test_module_something_instance_check(self):
        self.assertTrue(isinstance(some_module, Inyerface))

    def test_something_repr(self):
        self.assertEqual("typish.Something['x': int]", str(Something['x': int]))
        self.assertEqual("typish.Something['a': int, 'b': typing.Callable[[int, int], str]]",
                         repr(Inyerface))
        self.assertEqual("typish.Something['x': ...]", str(Something['x': ...]))
        self.assertEqual("typish.Something['x': C1]", str(Something['x': C1]))
        self.assertEqual("typish.Something['x': b]", str(Something['x': C5.b]))

    def test_isinstance_generic_collection(self):
        isinstance(List[int], TypingType)
        isinstance(Set[str], TypingType)

    def test_hash_something(self):
        # If the lines below raise no errors, the test succeeds.
        hash(Something['abc': int])
        L = List[Something['abc': int]]

Al-HUWAITI Shell