-
Piotr Maślanka authored76813338
test_overloading.py 917 B
import unittest
from satella.coding import overload, TypeSignature
class TestOverloading(unittest.TestCase):
def test_type_signature(self):
def a(a: object):
pass
def b(a: int):
pass
self.assertLess(TypeSignature.from_fun(a), TypeSignature.from_fun(b))
def test_something(self):
@overload
def fun(i: int):
self.assertIsInstance(i, int)
@fun.overload
def fun(i: str):
self.assertIsInstance(i, str)
fun(2)
self.assertRaises(TypeError, lambda: fun(2.5))
fun('test')
def test_something_2(self):
class A:
pass
class B(A):
pass
@overload
def fun(a: B):
self.assertEqual(type(a), B)
@fun.overload
def fun(a: A):
self.assertEqual(type(a), A)
fun(A())
fun(B())