Esempio n. 1
0
def test_totally_pickleable():
    '''Test cute-(un)pickling on totally pickleable objects.'''

    totally_pickleable_things = [
        [1, 2, (3, 4)],
        {
            1: 2,
            3: set((1, 2, 3))
        },
        None,
        True,
        False,
        (1, 2, 'meow'),
        u'qweqweqasd',
    ]

    for thing in totally_pickleable_things:
        stream = StringIO()
        pickler = CutePickler(stream)
        pickler.dump(thing)

        stream.seek(0)
        unpickler = CuteUnpickler(stream)
        unpickled_thing = unpickler.load()
        assert unpickled_thing == thing
Esempio n. 2
0
def test():
    '''Test cute-(un)pickling on various objects.'''
    if not import_tools.exists('multiprocessing'):
        raise nose.SkipTest('`multiprocessing` is not installed.')

    import multiprocessing

    totally_pickleable_things = [[1, 2, (3, 4)], {
        1: 2,
        3: set((1, 2, 3))
    }, None, True, False, (1, 2, 'meow'), u'qweqweqasd',
                                 PickleableObject()]

    thing = Object()
    thing.a, thing.b, thing.c, thing.d, thing.e, thing.f, thing.g, thing.h = \
         totally_pickleable_things

    thing.x = threading.Lock()
    thing.y = multiprocessing.Lock()
    thing.z = NonPickleableObject()

    stream = StringIO()
    pickler = CutePickler(stream)
    pickler.dump(thing)

    stream.seek(0)
    unpickler = CuteUnpickler(stream)
    unpickled_thing = unpickler.load()

    assert thing.a == unpickled_thing.a
    assert thing.b == unpickled_thing.b
    assert thing.c == unpickled_thing.c
    assert thing.d == unpickled_thing.d
    assert thing.e == unpickled_thing.e
    assert thing.f == unpickled_thing.f
    assert thing.g == unpickled_thing.g
    # Regarding `.h`, we just check the type cause there's no `__eq__`:
    assert type(thing.h) == type(unpickled_thing.h)

    assert thing.x != unpickled_thing.x
    assert thing.y != unpickled_thing.y
    assert thing.z != unpickled_thing.z

    assert isinstance(unpickled_thing.x, pickle_tools.FilteredObject)
    assert isinstance(unpickled_thing.y, pickle_tools.FilteredObject)
    assert isinstance(unpickled_thing.z, pickle_tools.FilteredObject)