Beispiel #1
0
    def testReferenceType(self):
        class MockSubtypeOf2(default_types.Generic):
            def is_subtype_of(self, other):
                return other._object == 2

            def most_specific_common_supertype(self, types):
                return self if all(self._object == other._object
                                   for other in types) else MockSubtypeOf2(2)

        original = default_types.Reference(MockSubtypeOf2(3), 1)
        clone = default_types.Reference(MockSubtypeOf2(3), 1)
        different_id = default_types.Reference(MockSubtypeOf2(3), 2)
        supertype = default_types.Reference(MockSubtypeOf2(2), 1)

        self.assertEqual(original, clone)
        self.assertFalse(original.is_subtype_of(different_id))
        self.assertTrue(original.is_subtype_of(supertype))
        self.assertFalse(supertype.is_subtype_of(original))

        self.assertEqual(supertype.most_specific_common_supertype([]),
                         supertype)
        self.assertEqual(original.most_specific_common_supertype([clone]),
                         original)
        self.assertIsNone(
            original.most_specific_common_supertype([different_id]))
    def testReferenceSubtype(self):
        original = default_types.Reference(Mock2AsTopType(3), 1)
        clone = default_types.Reference(Mock2AsTopType(3), 1)
        different_id = default_types.Reference(Mock2AsTopType(3), 2)
        supertype = default_types.Reference(Mock2AsTopType(2), 1)
        different_type = default_types.Literal(1)

        self.assertEqual(original, clone)
        self.assertFalse(original.is_subtype_of(different_id))
        self.assertTrue(original.is_subtype_of(supertype))
        self.assertFalse(supertype.is_subtype_of(original))
        self.assertFalse(original.is_subtype_of(different_type))
    def testReferenceType(self):
        class MockSubtypeOf2(default_types.Generic):
            def is_subtype_of(self, other):
                return other._object == 2

        original = default_types.Reference(MockSubtypeOf2(3), 1)
        clone = default_types.Reference(MockSubtypeOf2(3), 1)
        different_id = default_types.Reference(MockSubtypeOf2(3), 2)
        supertype = default_types.Reference(MockSubtypeOf2(2), 1)

        self.assertEqual(original, clone)
        self.assertFalse(original.is_subtype_of(different_id))
        self.assertTrue(original.is_subtype_of(supertype))
        self.assertFalse(supertype.is_subtype_of(original))
    def testReferenceSupertype(self):
        original = default_types.Reference(Mock2AsTopType(3), 1)
        clone = default_types.Reference(Mock2AsTopType(3), 1)
        different_id = default_types.Reference(Mock2AsTopType(3), 2)
        supertype = default_types.Reference(Mock2AsTopType(2), 1)
        different_type = default_types.Literal(1)

        self.assertEqual(supertype.most_specific_common_supertype([]),
                         supertype)
        self.assertEqual(original.most_specific_common_supertype([clone]),
                         original)
        self.assertIsNone(
            original.most_specific_common_supertype([different_id]))
        self.assertIsNone(
            original.most_specific_common_supertype([different_type]))
Beispiel #5
0
    def make_reference_type(self, base_type: trace.TraceType,
                            local_id: Hashable) -> trace.TraceType:
        if local_id not in self._global_to_local_id:
            self._global_to_local_id[local_id] = len(self._global_to_local_id)

        return default_types.Reference(base_type,
                                       self._global_to_local_id[local_id])
    def testReferenceSupertype(self):
        class Mock2AsTopType(default_types.Generic):
            def most_specific_common_supertype(self, types):
                if not all(
                        isinstance(other, Mock2AsTopType) for other in types):
                    return None
                return self if all(self._object == other._object
                                   for other in types) else Mock2AsTopType(2)

        original = default_types.Reference(Mock2AsTopType(3), 1)
        clone = default_types.Reference(Mock2AsTopType(3), 1)
        different_id = default_types.Reference(Mock2AsTopType(3), 2)
        supertype = default_types.Reference(Mock2AsTopType(2), 1)
        different_type = default_types.Generic(1)

        self.assertEqual(supertype.most_specific_common_supertype([]),
                         supertype)
        self.assertEqual(original.most_specific_common_supertype([clone]),
                         original)
        self.assertIsNone(
            original.most_specific_common_supertype([different_id]))
        self.assertIsNone(
            original.most_specific_common_supertype([different_type]))
 def testReferencetSerialization(self):
     ref_original = default_types.Reference(default_types.Literal(3), 1)
     self.assertEqual(
         serialization.deserialize(serialization.serialize(ref_original)),
         ref_original)