Skip to content

Commit

Permalink
test
Browse files Browse the repository at this point in the history
  • Loading branch information
iMichka committed Dec 3, 2024
1 parent 688576e commit 6d84042
Show file tree
Hide file tree
Showing 8 changed files with 189 additions and 160 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -102,4 +102,4 @@ jobs:
- name: Run tests
run: |
export PATH=~/castxml/bin:$PATH
pytest tests
pytest tests/test_remove_template_defaults.py
2 changes: 2 additions & 0 deletions src/pygccxml/declarations/container_traits.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ def normalize(self, type_str):

def replace_basic_string(self, cls_name):

print("replace_basic_string", cls_name)

# Take the lists of all possible string variations
# and clean them up by replacing ::std by std.
str_eq = [
Expand Down
6 changes: 3 additions & 3 deletions src/pygccxml/declarations/pattern_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,11 +192,11 @@ def join(self, name, args, arg_separator=None):
args = [_f for _f in args if _f]

if not args:
args_str = ' '
args_str = ''
elif len(args) == 1:
args_str = ' ' + args[0] + ' '
args_str = '' + args[0] + ''
else:
args_str = ' ' + arg_separator.join(args) + ' '
args_str = '' + arg_separator.join(args) + ''

return ''.join([name, self.__begin, args_str, self.__end])

Expand Down
26 changes: 26 additions & 0 deletions src/pygccxml/parser/patcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -314,6 +314,32 @@ def remove_spaces_from_template_names(decls):
after hash<std::vector<int>>
"""
for decl in decls:
# if "v_int" in decl.name:
# print("------")
# print(
# decl.decl_type,
# type(decl.decl_type),
# decl.decl_type.declaration.name)
# if "vector" in decl.name:
# print("------")
# print("vvvvvvv", decl, decl.name)
decl.name = decl.name.replace(" >", ">").replace("< ", "<")
decl.partial_name = \
decl.partial_name.replace(" >", ">").replace("< ", "<")
if isinstance(decl, declarations.typedef_t) and \
isinstance(decl.decl_type, declarations.declarated_t):
decl.decl_type.declaration.name = fix_spaces(
decl.decl_type.declaration.name)
decl.decl_type.declaration.partial_name = fix_spaces(
decl.decl_type.declaration.partial_name)
# if "v_int" in decl.name:
# print(
# decl.decl_type,
# type(decl.decl_type),
# decl.decl_type.declaration.name)
# if "vector" in decl.name:
# print("vvvvvvv", decl, decl.name)


def fix_spaces(val):
return val.replace(" >", ">").replace("< ", "<")
4 changes: 2 additions & 2 deletions tests/test_pattern_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,8 @@ def test_split():
"""

p1 = "std::vector<char, std::allocator<char> >"
p2 = "std::vector<int, std::allocator<int> >"
p1 = "std::vector<char, std::allocator<char>>"
p2 = "std::vector<int, std::allocator<int>>"
args_list = [
"const std::basic_string<char> &", "const int &", "const double &"]

Expand Down
279 changes: 140 additions & 139 deletions tests/test_remove_template_defaults.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,142 +37,143 @@ def test_vector(global_ns):
v_v_int = global_ns.typedef('v_v_int')
assert 'vector<std::vector<int>>' == \
v_traits.remove_defaults(v_v_int)


def test_list(global_ns):
l_int = global_ns.typedef('l_int')
l_traits = declarations.list_traits
assert 'list<int>' == l_traits.remove_defaults(l_int)
l_wstring = global_ns.typedef('l_wstring')
assert 'list<std::wstring>' == l_traits.remove_defaults(l_wstring)


def test_deque(global_ns):
d_v_int = global_ns.typedef('d_v_int')
d_v_traits = declarations.deque_traits
assert 'deque<std::vector<int>>' == \
d_v_traits.remove_defaults(d_v_int)
d_l_string = global_ns.typedef('d_l_string')
assert 'deque<std::list<std::string>>' == \
d_v_traits.remove_defaults(d_l_string)


def test_queue(global_ns):
q_int = global_ns.typedef('q_int')
q_traits = declarations.queue_traits
assert 'queue<int>' == q_traits.remove_defaults(q_int)
q_string = global_ns.typedef('q_string')
assert 'queue<std::string>' == q_traits.remove_defaults(q_string)


def test_priority_queue(global_ns):
pq_int = global_ns.typedef('pq_int')
pq_traits = declarations.priority_queue_traits
assert 'priority_queue<int>' == pq_traits.remove_defaults(pq_int)
pq_string = global_ns.typedef('pq_string')
assert 'priority_queue<std::string>' == \
pq_traits.remove_defaults(pq_string)


def test_set(global_ns):
s_v_int = global_ns.typedef('s_v_int')
assert 'set<std::vector<int>>' == \
declarations.set_traits.remove_defaults(s_v_int)
s_string = global_ns.typedef('s_string')
assert 'set<std::string>' == \
declarations.set_traits.remove_defaults(s_string)


def test_multiset(global_ns):
ms_v_int = global_ns.typedef('ms_v_int')
ms_v_traits = declarations.multiset_traits
assert 'multiset<std::vector<int>>' == \
ms_v_traits.remove_defaults(ms_v_int)
ms_string = global_ns.typedef('ms_string')
assert 'multiset<std::string>' == \
ms_v_traits.remove_defaults(ms_string)


def test_map(global_ns):
m_i2d = global_ns.typedef('m_i2d')
assert 'map<int, double>' == \
declarations.map_traits.remove_defaults(m_i2d)
m_wstr2d = global_ns.typedef('m_wstr2d')
assert 'map<std::wstring, double>' == \
declarations.map_traits.remove_defaults(m_wstr2d)
m_v_i2m_wstr2d = global_ns.typedef('m_v_i2m_wstr2d')
m = 'map<const std::vector<int>, std::map<std::wstring, double>>'
assert m == declarations.map_traits.remove_defaults(m_v_i2m_wstr2d)


def test_multimap(global_ns):
mm_i2d = global_ns.typedef('mm_i2d')
mm_traits = declarations.multimap_traits
assert 'multimap<int, double>' == mm_traits.remove_defaults(mm_i2d)
mm_wstr2d = global_ns.typedef('mm_wstr2d')
assert 'multimap<const std::wstring, double>' == \
mm_traits.remove_defaults(mm_wstr2d)
mm_v_i2mm_wstr2d = global_ns.typedef('mm_v_i2mm_wstr2d')
assert ('multimap<const std::vector<int>, ' +
'const std::multimap<const std::wstring, double>>') == \
mm_traits.remove_defaults(mm_v_i2mm_wstr2d)


def test_hash_set(global_ns):
hs_v_int = global_ns.typedef('hs_v_int')
hs_traits = declarations.unordered_set_traits
name = 'unordered_set'
assert (name + '<std::vector<int>>') == \
hs_traits.remove_defaults(hs_v_int), \
hs_traits.remove_defaults(hs_v_int)
hs_string = global_ns.typedef('hs_string')
assert (name + '<std::string>') == \
hs_traits.remove_defaults(hs_string)


def test_hash_multiset(global_ns):
mhs_v_int = global_ns.typedef('mhs_v_int')
mhs_traits = declarations.unordered_multiset_traits
name = 'unordered_multiset'
assert (name + '<std::vector<int>>') == \
mhs_traits.remove_defaults(mhs_v_int)
mhs_string = global_ns.typedef('mhs_string')
assert (name + '<std::string>') == \
mhs_traits.remove_defaults(mhs_string)


def test_hash_map(global_ns):
hm_i2d = global_ns.typedef('hm_i2d')
hm_traits = declarations.unordered_map_traits
name = 'unordered_map'
assert (name + '<int, double>') == \
hm_traits.remove_defaults(hm_i2d)
hm_wstr2d = global_ns.typedef('hm_wstr2d')
assert (name + '<std::wstring, double>') == \
hm_traits.remove_defaults(hm_wstr2d)


def test_hash_multimap(global_ns):
hmm_i2d = global_ns.typedef('hmm_i2d')
hmm_traits = declarations.unordered_multimap_traits
name = 'unordered_multimap'
assert (name + '<int, double>') == \
hmm_traits.remove_defaults(hmm_i2d)
hmm_wstr2d = global_ns.typedef('hmm_wstr2d')
assert (name + '<const std::wstring, double>') == \
hmm_traits.remove_defaults(hmm_wstr2d)

hmm_v_i2mm_wstr2d = global_ns.typedef('hmm_v_i2mm_wstr2d')

hmm_traits_value = hmm_traits.remove_defaults(hmm_v_i2mm_wstr2d)

possible_values = (
name + '<const std::vector<int>, ' +
'const __gnu_cxx::' + name + '<const std::wstring, double>>',
name + '<const std::vector<int>, ' +
'const std::' + utils.get_tr1(hmm_traits_value) + name +
'<const std::wstring, double>>',
name + '<const std::vector<int>, ' +
'const stdext::' + name + '<const std::wstring, double>>')

assert hmm_traits_value in possible_values, hmm_traits_value
raise


# def test_list(global_ns):
# l_int = global_ns.typedef('l_int')
# l_traits = declarations.list_traits
# assert 'list<int>' == l_traits.remove_defaults(l_int)
# l_wstring = global_ns.typedef('l_wstring')
# assert 'list<std::wstring>' == l_traits.remove_defaults(l_wstring)


# def test_deque(global_ns):
# d_v_int = global_ns.typedef('d_v_int')
# d_v_traits = declarations.deque_traits
# assert 'deque<std::vector<int>>' == \
# d_v_traits.remove_defaults(d_v_int)
# d_l_string = global_ns.typedef('d_l_string')
# assert 'deque<std::list<std::string>>' == \
# d_v_traits.remove_defaults(d_l_string)


# def test_queue(global_ns):
# q_int = global_ns.typedef('q_int')
# q_traits = declarations.queue_traits
# assert 'queue<int>' == q_traits.remove_defaults(q_int)
# q_string = global_ns.typedef('q_string')
# assert 'queue<std::string>' == q_traits.remove_defaults(q_string)


# def test_priority_queue(global_ns):
# pq_int = global_ns.typedef('pq_int')
# pq_traits = declarations.priority_queue_traits
# assert 'priority_queue<int>' == pq_traits.remove_defaults(pq_int)
# pq_string = global_ns.typedef('pq_string')
# assert 'priority_queue<std::string>' == \
# pq_traits.remove_defaults(pq_string)


# def test_set(global_ns):
# s_v_int = global_ns.typedef('s_v_int')
# assert 'set<std::vector<int>>' == \
# declarations.set_traits.remove_defaults(s_v_int)
# s_string = global_ns.typedef('s_string')
# assert 'set<std::string>' == \
# declarations.set_traits.remove_defaults(s_string)


# def test_multiset(global_ns):
# ms_v_int = global_ns.typedef('ms_v_int')
# ms_v_traits = declarations.multiset_traits
# assert 'multiset<std::vector<int>>' == \
# ms_v_traits.remove_defaults(ms_v_int)
# ms_string = global_ns.typedef('ms_string')
# assert 'multiset<std::string>' == \
# ms_v_traits.remove_defaults(ms_string)


# def test_map(global_ns):
# m_i2d = global_ns.typedef('m_i2d')
# assert 'map<int, double>' == \
# declarations.map_traits.remove_defaults(m_i2d)
# m_wstr2d = global_ns.typedef('m_wstr2d')
# assert 'map<std::wstring, double>' == \
# declarations.map_traits.remove_defaults(m_wstr2d)
# m_v_i2m_wstr2d = global_ns.typedef('m_v_i2m_wstr2d')
# m = 'map<const std::vector<int>, std::map<std::wstring, double>>'
# assert m == declarations.map_traits.remove_defaults(m_v_i2m_wstr2d)


# def test_multimap(global_ns):
# mm_i2d = global_ns.typedef('mm_i2d')
# mm_traits = declarations.multimap_traits
# assert 'multimap<int, double>' == mm_traits.remove_defaults(mm_i2d)
# mm_wstr2d = global_ns.typedef('mm_wstr2d')
# assert 'multimap<const std::wstring, double>' == \
# mm_traits.remove_defaults(mm_wstr2d)
# mm_v_i2mm_wstr2d = global_ns.typedef('mm_v_i2mm_wstr2d')
# assert ('multimap<const std::vector<int>, ' +
# 'const std::multimap<const std::wstring, double>>') == \
# mm_traits.remove_defaults(mm_v_i2mm_wstr2d)


# def test_hash_set(global_ns):
# hs_v_int = global_ns.typedef('hs_v_int')
# hs_traits = declarations.unordered_set_traits
# name = 'unordered_set'
# assert (name + '<std::vector<int>>') == \
# hs_traits.remove_defaults(hs_v_int), \
# hs_traits.remove_defaults(hs_v_int)
# hs_string = global_ns.typedef('hs_string')
# assert (name + '<std::string>') == \
# hs_traits.remove_defaults(hs_string)


# def test_hash_multiset(global_ns):
# mhs_v_int = global_ns.typedef('mhs_v_int')
# mhs_traits = declarations.unordered_multiset_traits
# name = 'unordered_multiset'
# assert (name + '<std::vector<int>>') == \
# mhs_traits.remove_defaults(mhs_v_int)
# mhs_string = global_ns.typedef('mhs_string')
# assert (name + '<std::string>') == \
# mhs_traits.remove_defaults(mhs_string)


# def test_hash_map(global_ns):
# hm_i2d = global_ns.typedef('hm_i2d')
# hm_traits = declarations.unordered_map_traits
# name = 'unordered_map'
# assert (name + '<int, double>') == \
# hm_traits.remove_defaults(hm_i2d)
# hm_wstr2d = global_ns.typedef('hm_wstr2d')
# assert (name + '<std::wstring, double>') == \
# hm_traits.remove_defaults(hm_wstr2d)


# def test_hash_multimap(global_ns):
# hmm_i2d = global_ns.typedef('hmm_i2d')
# hmm_traits = declarations.unordered_multimap_traits
# name = 'unordered_multimap'
# assert (name + '<int, double>') == \
# hmm_traits.remove_defaults(hmm_i2d)
# hmm_wstr2d = global_ns.typedef('hmm_wstr2d')
# assert (name + '<const std::wstring, double>') == \
# hmm_traits.remove_defaults(hmm_wstr2d)

# hmm_v_i2mm_wstr2d = global_ns.typedef('hmm_v_i2mm_wstr2d')

# hmm_traits_value = hmm_traits.remove_defaults(hmm_v_i2mm_wstr2d)

# possible_values = (
# name + '<const std::vector<int>, ' +
# 'const __gnu_cxx::' + name + '<const std::wstring, double>>',
# name + '<const std::vector<int>, ' +
# 'const std::' + utils.get_tr1(hmm_traits_value) + name +
# '<const std::wstring, double>>',
# name + '<const std::vector<int>, ' +
# 'const stdext::' + name + '<const std::wstring, double>>')

# assert hmm_traits_value in possible_values, hmm_traits_value
Loading

0 comments on commit 6d84042

Please sign in to comment.