Browse Source
Implements dictionary union according to PEP 584's specifications, minus the fact that dictionary entries are not guaranteed to be in insertion order. This feature is enabled with MICROPY_CPYTHON_COMPAT. Includes a new test. With the assistance of Fangrui Qin <qinf@purdue.edu> Signed-off-by: Rayane Chatrieux <rayane.chatrieux@gmail.com> Signed-off-by: Damien George <damien@micropython.org>pull/9609/head
Rayane Chatrieux
3 years ago
committed by
Damien George
3 changed files with 59 additions and 0 deletions
@ -0,0 +1,36 @@ |
|||
# Test dictionary union. |
|||
# |
|||
# The tests sort the resulting dictionaries for now, since map insertion |
|||
# order is not implemented in MicroPython. |
|||
|
|||
try: |
|||
{} | {} |
|||
except TypeError: |
|||
print("SKIP") |
|||
raise SystemExit |
|||
|
|||
|
|||
def print_sorted_dict(d): |
|||
print(sorted(d.items())) |
|||
|
|||
|
|||
def test_union(a, b): |
|||
print_sorted_dict(a | b) |
|||
print_sorted_dict(b | a) |
|||
a |= a |
|||
print_sorted_dict(a) |
|||
a |= b |
|||
print_sorted_dict(a) |
|||
|
|||
|
|||
d = {} |
|||
e = {} |
|||
test_union(d, e) |
|||
|
|||
d = {1: "apple"} |
|||
e = {1: "cheese"} |
|||
test_union(d, e) |
|||
|
|||
d = {"spam": 1, "eggs": 2, "cheese": 3} |
|||
e = {"cheese": "cheddar", "aardvark": "Ethel"} |
|||
test_union(d, e) |
@ -0,0 +1,12 @@ |
|||
[] |
|||
[] |
|||
[] |
|||
[] |
|||
[(1, 'cheese')] |
|||
[(1, 'apple')] |
|||
[(1, 'apple')] |
|||
[(1, 'cheese')] |
|||
[('aardvark', 'Ethel'), ('cheese', 'cheddar'), ('eggs', 2), ('spam', 1)] |
|||
[('aardvark', 'Ethel'), ('cheese', 3), ('eggs', 2), ('spam', 1)] |
|||
[('cheese', 3), ('eggs', 2), ('spam', 1)] |
|||
[('aardvark', 'Ethel'), ('cheese', 'cheddar'), ('eggs', 2), ('spam', 1)] |
Loading…
Reference in new issue