Пример #1
0
    def test_move_to_end(self):
        import __pypy__
        raises(KeyError, __pypy__.move_to_end, {}, 'foo')
        raises(KeyError, __pypy__.move_to_end, {}, 'foo', last=True)
        raises(KeyError, __pypy__.move_to_end, {}, 'foo', last=False)

        def kwdict(**k):
            return k

        for last in [False, True]:
            for d, key in [({
                    1: 2,
                    3: 4,
                    5: 6
            }, 3), ({
                    b"a": 5,
                    b"b": 2,
                    b"c": 6
            }, b"b"), ({
                    u"a": 5,
                    u"b": 2,
                    u"c": 6
            }, u"b"), (kwdict(d=7, e=8, f=9), "e")]:
                other_keys = [k for k in d if k != key]
                __pypy__.move_to_end(d, key, last=last)
                if not self.on_pypy:
                    # when running tests on CPython, the underlying
                    # dicts are not ordered.  We don't get here if
                    # we're running tests on PyPy or with -A.
                    assert set(d.keys()) == set(other_keys + [key])
                elif last:
                    assert list(d) == other_keys + [key]
                else:
                    assert list(d) == [key] + other_keys
                raises(KeyError, __pypy__.move_to_end, d, key * 3, last=last)
Пример #2
0
    def move_to_end(self, key, last=True):
        '''Move an existing element to the end (or beginning if last==False).

        Raises KeyError if the element does not exist.
        When last=True, acts like a fast version of self[key]=self.pop(key).

        '''
        return move_to_end(self, key, last)
Пример #3
0
 def _pypy_move_to_end(self, key, last=True):
     __pypy__.move_to_end(self, key, last)