示例#1
0
 def test_specialize_generic_type(self):
     scope = Scope()
     GT = DataType("GT")
     A = DataType("A", access=AccessLevel.internal)
     scope.add_child(Scope(None, A))
     B = DataType("B", generic_types={GT: None})
     self.assertDictEqual(scope.specialize_type(B).generic_types, {GT: A})
示例#2
0
 def test_deeply_nested_type_is_accessible(self):
     A = EnumType("A")
     scope = Scope()
     scope.add_child(Scope())
     scope.children[0].add_child(Scope())
     scope.children[0].children[0].add_child(Scope())
     scope.children[0].children[0].children[0].add_child(Scope(datatype=A))
     self.assertSetEqual(set(scope.accessible_types()), {A})
示例#3
0
 def test_accessible_functions_hides_private_static_methods(self):
     root = Scope()
     A = DataType("A", static_methods={
         "a": FunctionType(AccessLevel.private, {}, Int),
         "b": FunctionType(AccessLevel.fileprivate, {}, Int),
     })
     root.add_child(Scope(datatype=A))
     self.assertSetEqual({"A.b"}, set(root.accessible_functions().keys()))
示例#4
0
 def test_specialize_generic_type_filter(self):
     scope = Scope()
     GT = DataType("GT")
     A = DataType("A", access=AccessLevel.internal)
     B = DataType("B", access=AccessLevel.public)
     scope.add_child(Scope(None, A))
     scope.add_child(Scope(None, B))
     C = DataType("C", generic_types={GT: None})
     self.assertDictEqual(
         scope.specialize_type(C, at_least=AccessLevel.public).generic_types,
         {GT: B}
     )
示例#5
0
 def test_accessible_types_access_level_filter(self):
     A = EnumType("A", access=AccessLevel.public)
     B = EnumType("B", access=AccessLevel.internal)
     C = EnumType("C", access=AccessLevel.fileprivate)
     root = Scope()
     root.add_child(Scope(None, A))
     root.add_child(Scope(None, B))
     root.add_child(Scope(None, C))
     self.assertSetEqual(
         set(root.accessible_types(at_least=AccessLevel.fileprivate)),
         {A, B, C}
     )
     self.assertSetEqual(
         set(root.accessible_types(at_least=AccessLevel.internal)),
         {A, B}
     )
     self.assertSetEqual(
         set(root.accessible_types(at_least=AccessLevel.public)),
         {A}
     )
示例#6
0
 def test_enclosing_sibling_type_is_accessible(self):
     A = EnumType("A")
     grandparent = Scope()
     parent = Scope()
     grandparent.add_child(parent)
     uncle = Scope(datatype=A)
     grandparent.add_child(uncle)
     child = Scope()
     parent.add_child(child)
     self.assertSetEqual(set(child.accessible_types()), {A})