예제 #1
0
def test_get_object_tree(instance):
    root, a1, a2, a3 = instance
    tree, refs = serialize.get_object_tree(root)

    r = [root, a1, a2, a3]
    r += [type(o) for o in r] + [dict]
    assert refs == {id(o): o for o in r}
    assert tree == {
        'i': id(root),
        't': type_id(root),
        'v': {
            0: 0,
            'a': {
                'i': id(a1),
                't': type_id(a1),
                'v': {
                    0: 0,
                    'b': 1,
                    'c': 'c',
                    'd': True,
                    'e': None}},
            'b': [{'i': id(a2), 't': type_id(a2), 'v': {0: 0, 'a': 1}}, 'b', 1],  # noqa: E501
            'c': {
                'i': tree['v']['c']['i'],
                't': id(dict),
                'v': {
                    'a': 1,
                    'b': [1, 2, {'i': id(a3), 't': type_id(a3), 'v': {0: 0}}]}},  # noqa: E501
            'circular': {'i': id(root), 't': type_id(root), 'v': None}}}

    assert json.dumps(tree)
예제 #2
0
 def call_and_serialize(self, func, max_depth=0):
     # XXXX: This should really only be called in a new thread (as in
     #       the normal case where it is called in a threadpool)
     call_result = func()
     serialized, refs = serialize.get_object_tree(call_result,
                                                  max_depth=max_depth)
     self.objects.update(refs)
     return serialized
예제 #3
0
def test_get_object_tree_shallow(instance):
    root, *_ = instance
    tree, refs = serialize.get_object_tree(root, max_depth=1)
    assert tree == {
        'i': id(root),
        't': type_id(root),
        'v': {
            0: 0, 'a': {}, 'b': {}, 'c': {},
            'circular': {'i': id(root), 't': type_id(root), 'v': None}}}
    assert refs == {id(root): root, type_id(root): type(root)}
예제 #4
0
def test_ordered_dict():
    b = OrderedDict()
    b['b'] = 1
    a = {'a': b}
    tree, refs = serialize.get_object_tree(a)
    assert tree == {
        'i': id(a),
        't': type_id(a),
        'v': {'a': {
                'i': id(b),
                't': type_id(b),
                'v': {'b': 1}}}}
예제 #5
0
def test_robot():
    robot.reset()
    containers.load('trough-12row', '3', 'trough')
    containers.load('96-PCR-flat', '1', 'plate')

    # a tip rack for our pipette
    p200rack = containers.load('tiprack-200ul', '2', 'tiprack')

    # create a p200 pipette on robot axis B
    instruments.P300_Single(mount="left", tip_racks=[p200rack])

    # Robot tree is pretty big and hard to verify
    # Making sure we can serialize it into json
    tree, refs = serialize.get_object_tree(robot)
예제 #6
0
 def call_and_serialize(self, func, max_depth=0):
     call_result = func()
     serialized, refs = serialize.get_object_tree(call_result,
                                                  max_depth=max_depth)
     self.objects.update(refs)
     return serialized