|
|
|
project('dict test', 'c')
|
|
|
|
|
|
|
|
dict = {'foo' : 'bar',
|
|
|
|
'baz' : 'foo',
|
|
|
|
'foo bar': 'baz'}
|
|
|
|
|
|
|
|
exe = executable('prog', sources : ['prog.c'])
|
|
|
|
|
|
|
|
i = 0
|
|
|
|
|
|
|
|
foreach key, value : dict
|
|
|
|
test('dict test @0@'.format(key), exe,
|
|
|
|
args : [dict[key], value])
|
|
|
|
i += 1
|
|
|
|
endforeach
|
|
|
|
|
|
|
|
assert(i == 3, 'There should be three elements in that dictionary')
|
|
|
|
|
|
|
|
empty_dict = {}
|
|
|
|
|
|
|
|
foreach key, value : empty_dict
|
|
|
|
assert(false, 'This dict should be empty')
|
|
|
|
endforeach
|
|
|
|
|
|
|
|
d1 = empty_dict + {'a' : 'b'}
|
|
|
|
assert(d1 == {'a' : 'b'}, 'dict addition is not working')
|
|
|
|
|
|
|
|
d2 = d1 + {'a' : 'b2', 'c' : 'd'}
|
|
|
|
assert(d2 == {'a' : 'b2', 'c' : 'd'}, 'dict addition is not working')
|
|
|
|
assert(d1 == {'a' : 'b'}, 'dict should be immutable')
|
|
|
|
|
|
|
|
d3 = d2
|
|
|
|
d3 += {'e' : 'f'}
|
|
|
|
assert(d3 == {'a' : 'b2', 'c' : 'd', 'e' : 'f'}, 'dict plusassign is not working')
|
|
|
|
assert(d2 == {'a' : 'b2', 'c' : 'd'}, 'dict should be immutable')
|
|
|
|
|
|
|
|
dict1 = {}
|
|
|
|
|
|
|
|
# A variable to be used as a key
|
|
|
|
testkey1 = 'myKey1'
|
|
|
|
testkey2 = 'myKey2'
|
|
|
|
|
|
|
|
# Add new entry using the variable
|
|
|
|
dict1 += {testkey1 : 'myValue'}
|
|
|
|
dict1 += {testkey2 : 42}
|
|
|
|
|
|
|
|
# Test that the stored values are correct
|
|
|
|
assert(dict1[testkey1] == 'myValue',
|
|
|
|
'Incorrect string value retrieved from dictionary - variable key')
|
|
|
|
assert(dict1['myKey1'] == 'myValue',
|
|
|
|
'Incorrect string value retrieved from dictionary - literal key')
|
|
|
|
assert(dict1[testkey2] == 42,
|
|
|
|
'Incorrect int value retrieved from dictionary - variable key')
|
|
|
|
assert(dict1['myKey2'] == 42,
|
|
|
|
'Incorrect int value retrieved from dictionary - literal key')
|
|
|
|
|
|
|
|
d = {testkey1 : 1}
|
|
|
|
assert(d[testkey1] == 1,
|
|
|
|
'Incorrect int value retrieved from dictionary - variable key')
|
|
|
|
assert(d['myKey1'] == 1,
|
|
|
|
'Incorrect int value retrieved from dictionary - literal key')
|
|
|
|
|
|
|
|
d = {'1' / '2' : 1, join_paths('a', 'b') : 2}
|
|
|
|
k1 = '1' / '2'
|
|
|
|
k2 = join_paths('a', 'b')
|
|
|
|
assert(d[k1] == 1, 'Incorrect expression evaluation in dictionary key')
|
|
|
|
assert(d[k2] == 2, 'Incorrect expression evaluation in dictionary key')
|
|
|
|
|
|
|
|
d = {'a' + 'b' : 1}
|
|
|
|
assert(d['a' + 'b'] == 1, 'Incorrect expression evaluation in dictionary key')
|
|
|
|
assert(d['ab'] == 1, 'Incorrect expression evaluation in dictionary key')
|
|
|
|
|
|
|
|
# Complex types
|
|
|
|
d = {
|
|
|
|
'sanity': 1,
|
|
|
|
'host': host_machine,
|
|
|
|
'meson': meson,
|
|
|
|
}
|
|
|
|
|
|
|
|
assert(d['sanity'] == 1)
|
|
|
|
assert(not is_disabler(d['meson']))
|
|
|
|
assert(not is_disabler(d['host']))
|