diff options
author | Damien George <damien.p.george@gmail.com> | 2014-04-05 17:17:19 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-04-05 17:17:19 +0100 |
commit | 95004e5114bd40cea256c3228ffac682d231855d (patch) | |
tree | 520edc9372b1e26e1e21c8e8c4a66f8ad93773da /tests/basics/set_remove.py | |
parent | e20b6b418ce5272c1945e4dabc02de0336b99697 (diff) | |
download | micropython-95004e5114bd40cea256c3228ffac682d231855d.tar.gz micropython-95004e5114bd40cea256c3228ffac682d231855d.zip |
py: Fix delete operation on map/dict and set objects.
Hash table can now be completely full (ie now NULL entry) before a
resize is triggered. Use sentinel value to indicate delete entry in the
table.
Diffstat (limited to 'tests/basics/set_remove.py')
-rw-r--r-- | tests/basics/set_remove.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/basics/set_remove.py b/tests/basics/set_remove.py index 208ab137f3..5627516c43 100644 --- a/tests/basics/set_remove.py +++ b/tests/basics/set_remove.py @@ -1,3 +1,4 @@ +# basic test s = {1} print(s.remove(1)) print(list(s)) @@ -7,3 +8,26 @@ except KeyError: pass else: print("failed to raise KeyError") + +# test sets of varying size +for n in range(20): + print('testing set with {} items'.format(n)) + for i in range(n): + # create set + s = set() + for j in range(n): + s.add(str(j)) + print(len(s)) + + # delete an item + s.remove(str(i)) + print(len(s)) + + # check items + for j in range(n): + if str(j) in s: + if j == i: + print(j, 'in s, but it should not be') + else: + if j != i: + print(j, 'not in s, but it should be') |