Ejemplo n.º 1
0
    def test_template_arg_matching(self):
        template_type = templates.parse_template_type(
            "test::template_class<vector<*>, *>")
        arglist = []
        self.assertTrue(
            template_type.matches(
                templates.parse_template_type(
                    "test::template_class<vector<int>, test>"), arglist))

        self.assertListEqual(["int", "test"], arglist)
Ejemplo n.º 2
0
    def test_non_template(self):
        template_type = templates.parse_template_type(
            "test::non_template_class")

        self.assertEqual("test::non_template_class", template_type.name)

        self.assertEqual(0, len(template_type.args))
Ejemplo n.º 3
0
    def test_wildcard(self):
        template_type = templates.parse_template_type(
            "test::template_class<*>")

        self.assertEqual("test::template_class", template_type.name)

        self.assertEqual(1, len(template_type.args))

        self.assertTrue(template_type.args[0].is_wildcard)
        self.assertEqual(0, len(template_type.args[0].args))
Ejemplo n.º 4
0
    def test_simple_list(self):
        template_type = templates.parse_template_type(
            "test::template_class<float>")

        self.assertEqual("test::template_class", template_type.name)

        self.assertEqual(1, len(template_type.args))

        self.assertEqual("float", template_type.args[0].name)
        self.assertEqual(0, len(template_type.args[0].args))
Ejemplo n.º 5
0
    def test_nested_wildcard(self):
        template_type = templates.parse_template_type(
            "test::template_class<vector<*>>")

        self.assertEqual("test::template_class", template_type.name)

        self.assertEqual(1, len(template_type.args))

        vector_type = template_type.args[0]
        self.assertEqual("vector", vector_type.name)
        self.assertEqual(1, len(vector_type.args))

        self.assertTrue(vector_type.args[0].is_wildcard)
        self.assertEqual(0, len(vector_type.args[0].args))
Ejemplo n.º 6
0
    def test_nested_args(self):
        template_type = templates.parse_template_type(
            "test::template_class<vector<test>>")

        self.assertEqual("test::template_class", template_type.name)

        self.assertEqual(1, len(template_type.args))

        vector_type = template_type.args[0]
        self.assertEqual("vector", vector_type.name)
        self.assertEqual(1, len(vector_type.args))

        self.assertEqual("test", vector_type.args[0].name)
        self.assertEqual(0, len(vector_type.args[0].args))
Ejemplo n.º 7
0
    def test_multiple_args(self):
        template_type = templates.parse_template_type(
            "test::template_class<float, test, const char*>")

        self.assertEqual("test::template_class", template_type.name)

        self.assertEqual(3, len(template_type.args))

        self.assertEqual("float", template_type.args[0].name)
        self.assertEqual(0, len(template_type.args[0].args))

        self.assertEqual("test", template_type.args[1].name)
        self.assertEqual(0, len(template_type.args[1].args))

        self.assertEqual("const char*", template_type.args[2].name)
        self.assertEqual(0, len(template_type.args[2].args))
Ejemplo n.º 8
0
    def test_lookup_type(self):
        manager = NatvisManager()

        manager.load_natvis_file(
            os.path.join(os.path.dirname(__file__), "data", "glm.natvis"))

        self.assertIsNotNone(
            manager.lookup_type(
                templates.parse_template_type("glm::tvec1<float>")))
        self.assertIsNotNone(
            manager.lookup_type(
                templates.parse_template_type("glm::tvec1<int>")))

        self.assertIsNotNone(
            manager.lookup_type(
                templates.parse_template_type("glm::tvec2<float>")))
        self.assertIsNotNone(
            manager.lookup_type(
                templates.parse_template_type("glm::tvec2<int>")))

        self.assertIsNotNone(
            manager.lookup_type(
                templates.parse_template_type("glm::tvec3<float>")))
        self.assertIsNotNone(
            manager.lookup_type(
                templates.parse_template_type("glm::tvec3<int>")))

        self.assertIsNotNone(
            manager.lookup_type(
                templates.parse_template_type("glm::tvec4<float>")))
        self.assertIsNotNone(
            manager.lookup_type(
                templates.parse_template_type("glm::tvec4<int>")))

        self.assertIsNone(
            manager.lookup_type(templates.parse_template_type("lua_State")))
Ejemplo n.º 9
0
    def __init__(self, element: Element) -> None:
        super().__init__()

        name = element.get("Name")
        self.template_type = templates.parse_template_type(name)

        self.display_parsers = []
        self.expand_items = None

        for child in element:
            if child.tag == "DisplayString":
                condition = child.get("Condition", None)

                self.display_parsers.append(
                    DisplayString(
                        DisplayStringParser(child.text.lstrip().rstrip()),
                        condition))
            elif child.tag == "Expand":
                self.expand_items = []

                self._process_expand(child)
Ejemplo n.º 10
0
 def test_empty_comma_arg(self):
     with self.assertRaises(TemplateException):
         templates.parse_template_type("test::template_class<float,>")
Ejemplo n.º 11
0
 def test_missing_opening_brance(self):
     with self.assertRaises(TemplateException):
         templates.parse_template_type("test::template_class>")