def test_has_no_args(self): with self.assertRaises(TypeError): unpack_optional(None) with self.assertRaises(TypeError): unpack_optional(42) with self.assertRaises(TypeError): unpack_optional("foo") with self.assertRaises(TypeError): unpack_optional(bool) with self.assertRaises(TypeError): unpack_optional(float)
def test_is_optional(self): self.assertIs(unpack_optional(Optional[int]), int) self.assertIs(unpack_optional(Optional[str]), str)
def test_is_no_optional(self): with self.assertRaises(TypeError): unpack_optional(Union[int]) # In fact this is int. with self.assertRaises(TypeError): unpack_optional(Union[int, str])
def test_is_no_union(self): with self.assertRaises(TypeError): unpack_optional(List[int]) with self.assertRaises(TypeError): unpack_optional(Dict[str, str])
def test_is_optional(self): self.assertIs(unpack_optional(Optional[int]), int) self.assertIs(unpack_optional(Optional[str]), str) self.assertIs(unpack_optional(Union[None, str]), str) self.assertIs(unpack_optional(Union[int, type(None)]), int)