Files
codeql/swift/codegen/test/test_cpp.py
2022-05-04 18:20:06 +02:00

61 lines
1.4 KiB
Python

import sys
from copy import deepcopy
import pytest
from swift.codegen.lib import cpp
@pytest.mark.parametrize("keyword", cpp.cpp_keywords)
def test_field_keyword_cpp_name(keyword):
f = cpp.Field(keyword, "int")
assert f.cpp_name == keyword + "_"
def test_field_cpp_name():
f = cpp.Field("foo", "int")
assert f.cpp_name == "foo"
@pytest.mark.parametrize("type,expected", [
("std::string", "trapQuoted(value)"),
("bool", '(value ? "true" : "false")'),
("something_else", "value"),
])
def test_field_get_streamer(type, expected):
f = cpp.Field("name", type)
assert f.get_streamer()("value") == expected
def test_trap_has_first_field_marked():
fields = [
cpp.Field("a", "x"),
cpp.Field("b", "y"),
cpp.Field("c", "z"),
]
expected = deepcopy(fields)
expected[0].first = True
t = cpp.Trap("table_name", "name", fields)
assert t.fields == expected
def test_tag_has_first_base_marked():
bases = ["a", "b", "c"]
expected = [cpp.TagBase("a", first=True), cpp.TagBase("b"), cpp.TagBase("c")]
t = cpp.Tag("name", bases, 0, "id")
assert t.bases == expected
@pytest.mark.parametrize("bases,expected", [
([], False),
(["a"], True),
(["a", "b"], True)
])
def test_tag_has_bases(bases, expected):
t = cpp.Tag("name", bases, 0, "id")
assert t.has_bases is expected
if __name__ == '__main__':
sys.exit(pytest.main())