blob: 509018b4c3bdec7eb05114fe78c82a501cb0298a [file] [log] [blame] [edit]
from __future__ import annotations
import unittest
from mypyc.namegen import (
NameGenerator,
candidate_suffixes,
exported_name,
make_module_translation_map,
)
class TestNameGen(unittest.TestCase):
def test_candidate_suffixes(self) -> None:
assert candidate_suffixes("foo") == ["", "foo."]
assert candidate_suffixes("foo.bar") == ["", "bar.", "foo.bar."]
def test_exported_name(self) -> None:
assert exported_name("foo") == "foo"
assert exported_name("foo.bar") == "foo___bar"
def test_make_module_translation_map(self) -> None:
assert make_module_translation_map(["foo", "bar"]) == {"foo": "foo.", "bar": "bar."}
assert make_module_translation_map(["foo.bar", "foo.baz"]) == {
"foo.bar": "bar.",
"foo.baz": "baz.",
}
assert make_module_translation_map(["zar", "foo.bar", "foo.baz"]) == {
"foo.bar": "bar.",
"foo.baz": "baz.",
"zar": "zar.",
}
assert make_module_translation_map(["foo.bar", "fu.bar", "foo.baz"]) == {
"foo.bar": "foo.bar.",
"fu.bar": "fu.bar.",
"foo.baz": "baz.",
}
def test_name_generator(self) -> None:
g = NameGenerator([["foo", "foo.zar"]])
assert g.private_name("foo", "f") == "foo___f"
assert g.private_name("foo", "C.x.y") == "foo___C___x___y"
assert g.private_name("foo", "C.x.y") == "foo___C___x___y"
assert g.private_name("foo.zar", "C.x.y") == "zar___C___x___y"
assert g.private_name("foo", "C.x_y") == "foo___C___x_y"
assert g.private_name("foo", "C_x_y") == "foo___C_x_y"
assert g.private_name("foo", "C_x_y") == "foo___C_x_y"
assert g.private_name("foo", "___") == "foo______3_"