def test_simple_fields_are_required(self): T = UniversalObjectType({ }) S = UniversalObjectType({ "foo": IntegerType() }) self.assertTrue(T.is_copyable_from(S, DUMMY_REASONER)) self.assertFalse(S.is_copyable_from(T, DUMMY_REASONER))
def test_const_allows_broader_types(self): T = UniversalObjectType({ "foo": Const(AnyType()) }) S = UniversalObjectType({ "foo": IntegerType() }) self.assertTrue(T.is_copyable_from(S, DUMMY_REASONER)) self.assertFalse(S.is_copyable_from(T, DUMMY_REASONER))
def test_broad_type_assignments_blocked(self): T = UniversalObjectType({ "foo": AnyType() }) S = UniversalObjectType({ "foo": IntegerType() }) self.assertFalse(T.is_copyable_from(S, DUMMY_REASONER)) self.assertFalse(S.is_copyable_from(T, DUMMY_REASONER))
def test_basic_class(self): T = UniversalObjectType({ "foo": IntegerType() }) S = UniversalObjectType({ "foo": IntegerType(), "bar": StringType() }) self.assertTrue(T.is_copyable_from(S, DUMMY_REASONER)) self.assertFalse(S.is_copyable_from(T, DUMMY_REASONER))