paul@458 | 1 | #!/usr/bin/env python |
paul@458 | 2 | |
paul@476 | 3 | from micropython.common import ObjectSet, combine_mapping_dicts |
paul@458 | 4 | |
paul@487 | 5 | # Test storage. |
paul@487 | 6 | |
paul@458 | 7 | o1 = ObjectSet() |
paul@458 | 8 | o1.add("a") |
paul@458 | 9 | o1.add("b") |
paul@458 | 10 | o1.add("c") |
paul@458 | 11 | print "o1 =", o1 |
paul@458 | 12 | |
paul@487 | 13 | # Test storage with associated data. |
paul@487 | 14 | |
paul@458 | 15 | o2 = ObjectSet() |
paul@458 | 16 | o2.add("b") |
paul@458 | 17 | o2["c"] = ["x"] |
paul@458 | 18 | o2.add("d") |
paul@458 | 19 | o2["d"] += ["p", "q"] |
paul@458 | 20 | print "o2 =", o2 |
paul@458 | 21 | |
paul@458 | 22 | print "o1 == o2", o1 == o2 |
paul@458 | 23 | print "o1 != o2", o1 != o2 |
paul@487 | 24 | assert o1 != o2 |
paul@487 | 25 | |
paul@487 | 26 | # Test merging. |
paul@458 | 27 | |
paul@458 | 28 | o12 = o1.merge(o2) |
paul@458 | 29 | print "o1 =", o1 |
paul@458 | 30 | print "o2 =", o2 |
paul@458 | 31 | print "o12 =", o12 |
paul@458 | 32 | |
paul@458 | 33 | o12_keys = o12.keys() |
paul@458 | 34 | o12_keys.sort() |
paul@487 | 35 | print "o12_keys =", o12_keys |
paul@458 | 36 | assert o12_keys == ["a", "b", "c", "d"] |
paul@487 | 37 | |
paul@487 | 38 | # Test copying. |
paul@458 | 39 | |
paul@458 | 40 | o1_copy = ObjectSet(o1) |
paul@458 | 41 | print "o1 =", o1 |
paul@458 | 42 | print "o1_copy =", o1_copy |
paul@458 | 43 | print "o1 == o1_copy", o1 == o1_copy |
paul@487 | 44 | assert o1 == o1_copy |
paul@487 | 45 | |
paul@487 | 46 | # Test updating. |
paul@458 | 47 | |
paul@458 | 48 | o1_copy.update(o2) |
paul@458 | 49 | print "o1_copy =", o1_copy |
paul@458 | 50 | print "o1 != o1_copy", o1 != o1_copy |
paul@458 | 51 | print "o12 == o1_copy", o12 == o1_copy |
paul@487 | 52 | assert o1 != o1_copy |
paul@487 | 53 | assert o12 == o1_copy |
paul@458 | 54 | |
paul@458 | 55 | o3 = ObjectSet() |
paul@458 | 56 | o3.add("c") |
paul@458 | 57 | o3["c"].append("y") |
paul@458 | 58 | print "o3 =", o3 |
paul@458 | 59 | |
paul@487 | 60 | # Test combining. |
paul@487 | 61 | |
paul@476 | 62 | d1 = {'a' : [ObjectSet(['f', 'g']), ObjectSet(['f', 'h'])]} |
paul@476 | 63 | d2 = {'a' : [ObjectSet(['f']), ObjectSet(['e', 'f', 'g'])]} |
paul@476 | 64 | d3 = combine_mapping_dicts(d1, d2) |
paul@476 | 65 | print "d1 =", d1 |
paul@476 | 66 | print "d2 =", d2 |
paul@476 | 67 | print "d3 =", d3 |
paul@487 | 68 | assert d3["a"] == [ObjectSet(['f', 'g']), ObjectSet(['f', 'h']), ObjectSet(['e', 'f', 'g']), ObjectSet(['e', 'f', 'g', 'h'])] |
paul@487 | 69 | |
paul@487 | 70 | # Test combining with empty sets. |
paul@476 | 71 | |
paul@476 | 72 | d4 = {'a' : None} |
paul@476 | 73 | d5 = combine_mapping_dicts(d1, d4) |
paul@476 | 74 | print "d4 =", d4 |
paul@476 | 75 | print "d5 =", d5 |
paul@487 | 76 | assert d5 == d1 |
paul@476 | 77 | |
paul@458 | 78 | # vim: tabstop=4 expandtab shiftwidth=4 |