示例#1
0
 def test_accessible_functions_access_level_filter(self):
     scope = Scope()
     scope.declare_func(AccessLevel.public, "foo", {}, Int)
     scope.declare_func(AccessLevel.internal, "bar", {}, Int)
     scope.declare_func(AccessLevel.private, "baz", {}, Int)
     self.assertSetEqual(
         set(scope.accessible_functions(at_least=AccessLevel.public).keys()),
         {"foo"}
     )
     self.assertSetEqual(
         set(scope.accessible_functions(at_least=AccessLevel.internal).keys()),
         {"foo", "bar"}
     )
     self.assertSetEqual(
         set(scope.accessible_functions(at_least=AccessLevel.private).keys()),
         {"foo", "bar", "baz"}
     )
示例#2
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()))
示例#3
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())
示例#4
0
 def test_declared_function_is_accessible(self):
     scope = Scope()
     scope.declare_func(AccessLevel.internal, "foo", {"x": Int}, Int)
     self.assertDictEqual(
         scope.accessible_functions(),
         {
             "foo": FunctionType(AccessLevel.internal, {"x": Int}, Int),
         }
     )