Exemple #1
0
 def test_walk_identity_preserves(self):
     for coll in [
             None, 1, "aap", [1, 2, 3], {
                 "a": "b",
                 1: 2
             }, (4, 5, 6),
             set([7, 8, 9])
     ]:
         res = walk(identity, identity, deepcopy(coll))
         res2 = walk(inner=identity, outer=identity, coll=deepcopy(coll))
         self.assertEquals(type(res), type(coll))
         self.assertEquals(res, coll)
         self.assertEquals(res2, coll)
Exemple #2
0
    def test_walk_fns_inner(self):
        log_inner = []

        def inner(e):
            log_inner.append(e)
            return e + 10

        self.assertEquals([11, 12], walk(inner, identity, [1, 2]))
        self.assertEquals([1, 2], log_inner)
Exemple #3
0
    def test_walk_fns_outer(self):
        log_outer = []

        def outer(e):
            log_outer.append(e)
            return "replaced"

        self.assertEquals("replaced", walk(identity, outer, [1, 2]))
        self.assertEquals([[1, 2]], log_outer)
Exemple #4
0
    def test_walk_outer_after_inner(self):
        log = []

        def inner(e):
            log.append(("in", e))
            return e + 10

        def outer(e):
            log.append(("out", e))
            return set(e)

        self.assertEquals({11, 12}, walk(inner, outer, [1, 2]))
        self.assertEquals([("in", 1), ("in", 2), ("out", [11, 12])], log)
Exemple #5
0
    def test_walk_supports_Mapping(self):
        class MyMapping(Mapping):
            def __getitem__(self, key):
                return 'aValue'

            def __iter__(self):
                yield 'aKey'

            def __len__(self):
                return 1

        m = MyMapping()
        res = walk(inner=lambda (k, v): (k, '~' + v), outer=identity, coll=m)
        self.assertEquals({'aKey': '~aValue'}, res)
Exemple #6
0
 def test_walk_builds_new_coll(self):
     coll = [1, 2]
     res = walk(identity, identity, coll)
     self.assertEquals([1, 2], res)
     self.assertFalse(res is coll)