summaryrefslogtreecommitdiffstatshomepage
path: root/tests/basics/set_remove.py
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2014-04-05 17:17:19 +0100
committerDamien George <damien.p.george@gmail.com>2014-04-05 17:17:19 +0100
commit95004e5114bd40cea256c3228ffac682d231855d (patch)
tree520edc9372b1e26e1e21c8e8c4a66f8ad93773da /tests/basics/set_remove.py
parente20b6b418ce5272c1945e4dabc02de0336b99697 (diff)
downloadmicropython-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.py24
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')