示例#1
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})
示例#2
0
 def test_importing_standard_library_exposes_expected_values(self):
     scope = Scope()
     scope.import_standard_library()
     self.assertSetEqual(set(scope.accessible_types()), {Bool, Int, Optional})
     self.assertSetEqual(
         set(scope.accessible_functions().keys()),
         {"&+", "&*", ">", "=="},
     )
     self.assertSetEqual(set(scope.accessible_variables()), set())
示例#3
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})
示例#4
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}
     )
示例#5
0
 def test_accessible_types_include_self_filter(self):
     A = EnumType("A")
     root = Scope(datatype=A)
     self.assertSetEqual(set(root.accessible_types()), set())
     self.assertSetEqual(set(root.accessible_types(include_self=False)), set())
     self.assertSetEqual(set(root.accessible_types(include_self=True)), {A})