Пример #1
0
 def test_restore_an_object(self):
     d = OrderedDict([
         ('parameters',OrderedDict([('c',50),('d',90),('object1','placeholder')])),
         ('__class__', 'coma.test.test_serialization.Class2')
     ])
     s = Serializer(restore_objects=True, getstate='__getstate__', setstate='__setstate__')
     o = s.restore(d)
     self.assertTrue(isinstance(o, Class2))
     self.assertEqual(o.c, 50)
     self.assertEqual(o.d, 90)
Пример #2
0
    def test_restore_an_object_from_incorrect_or_incomplete_dict(self):
        s = Serializer(restore_objects=True, getstate='__getstate__', setstate='__setstate__')
        
        # If the dict does not have '__class__' field, it is just passed through
        d = OrderedDict([('parameters',OrderedDict([('a',10),('b',20)]))])
        o = s.restore(d)
        self.assertTrue(o == d)
        self.assertTrue(o is d)

        # Nonexistent module fails
        d = OrderedDict([
            ('parameters', OrderedDict([('a',10),('b',20)])),
            ('__class__', 'blub.Muh')
        ])
        with self.assertRaises(ImportError):
            s.restore(d)
        
        # Nonexistent class fails
        d = OrderedDict([
            ('parameters', OrderedDict([('a',10),('b',20)])),
            ('__class__', '__main__.Muh')
        ])
        with self.assertRaises(AttributeError):
            s.restore(d)
        
        # Correct class, but wrong / nonexistent serialization method fails
        d = OrderedDict([
            ('parameters', OrderedDict([('a',10),('b',20)])),
            ('__class__', 'coma.test.test_serialization.Class3')
        ])
        with self.assertRaises(AttributeError):
            s.restore(d)
Пример #3
0
    def test_serialize_numpy_arrays(self):
        a = numpy.array([[1,2,3],[4,5,6]])
        s = Serializer()
        d = s.serialize(a)

        self.assertTrue(d.has_key('__type__'))
        self.assertTrue(d.has_key('shape'))
        self.assertTrue(d.has_key('list'))
        self.assertEquals(d['__type__'], 'numpy.ndarray')
        self.assertEquals(d['shape'], (2,3))
        self.assertEquals(d['list'], [1,2,3,4,5,6])
Пример #4
0
 def test_serialize_and_restore_an_object(self):
     s = Serializer(restore_objects=True, getstate='__getstate__', setstate='__setstate__')
     o1 = Class2(8,9)
     d = s.serialize(o1)
     o2 = s.restore(d)
     
     # Note that here object1 was never serialized, it was just passed
     # around as is. Serializing / restoring a whole object tree recursively
     # is not Serializer's job.
     self.assertTrue(isinstance(o1.object1, Class1))
     self.assertTrue(isinstance(o2.object1, Class1))
     self.assertEqual(o1.__dict__, o2.__dict__)
Пример #5
0
 def test_use_serializer_with_config_object(self):
     d = OrderedDict([
         ('parameters',OrderedDict([('c',50),('d',90),('object1','placeholder')])),
         ('__class__', 'coma.test.test_serialization.Class2')
     ])
     c = {
         'serializer_getstate': '__getstate__',
         'serializer_setstate': '__setstate__'
     }
     s = Serializer(restore_objects=True, config=c)
     o = s.restore(d)
     self.assertTrue(isinstance(o, Class2))
     self.assertEqual(o.c, 50)
     self.assertEqual(o.d, 90)
Пример #6
0
    def test_serialize_an_object(self):
        o = Class3(3,4)
        s = Serializer()
        d = s.serialize(o)

        self.assertTrue(d.has_key('parameters'));
        self.assertTrue(d.has_key('__class__'));
        self.assertEqual(d['__class__'], 'coma.test.test_serialization.Class3');
        p = d['parameters']
        self.assertTrue(p.has_key('a'));
        self.assertTrue(p.has_key('b'));
        self.assertTrue(p.has_key('all'));
        self.assertEqual(p['a'], 3);
        self.assertEqual(p['b'], 4);
        self.assertEqual(p['all'], [3,4]);
Пример #7
0
    def test_serialize_an_object_with_a_different_serialization_method(self):
        o = Class2(5,6)
        s = Serializer(getstate='__getstate__')
        d = s.serialize(o)

        self.assertTrue(d.has_key('parameters'));
        self.assertTrue(d.has_key('__class__'));
        self.assertEqual(d['__class__'], 'coma.test.test_serialization.Class2');
        p = d['parameters']
        self.assertTrue(p.has_key('c'));
        self.assertTrue(p.has_key('d'));
        self.assertTrue(p.has_key('object1'));
        self.assertTrue(p.has_key('all'));
        self.assertEqual(p['c'], 5);
        self.assertEqual(p['d'], 6);
        self.assertEqual(p['all'], [5,6]);
        self.assertTrue(isinstance(p['object1'], Class1));
Пример #8
0
 def test_load_and_restore_class_hierarchy(self):
     # At least for the time being, we need to set the serializer by hand;
     # full object restore is not supported via the config dictionary
     c = {
         'serializer_getstate': '__getstate__',
         'serializer_setstate': '__setstate__'
     }
     s = Serializer(restore_objects=True, config=c)
     a = JsonArchive('testhierarchy')
     a.serializer = s
     o = a.loads(test_json['hierarchy'])
     self.assertEquals(o.c, 3)
     self.assertEquals(o.d, 4)
     self.assertEquals(o.object1.a, 30)
     self.assertEquals(o.object1.b, 40)
Пример #9
0
    def test_restore_numpy_arrays(self):
        d = OrderedDict([
            ('__type__', 'numpy.ndarray'),
            ('shape', [2,3]),
            ('list', [1,2,3,4,5,6])
        ])
        s = Serializer()
        o = s.restore(d)
        self.assertTrue(isinstance(o, numpy.ndarray))
        self.assertTrue((o == numpy.array([[1,2,3],[4,5,6]])).all())

        with self.assertRaises(ValueError):
            d = OrderedDict([
                ('__type__', 'numpy.ndarray'),
                ('shape', (2,3)),
                ('list', [1,2,3,4,5])
            ])
            s = Serializer()
            o = s.restore(d)
Пример #10
0
 def test_restore_by_default_does_nothing(self):
     d = OrderedDict([('parameters',OrderedDict([('a',10),('b',20)]))])
     s = Serializer()
     o = s.restore(d)
     self.assertTrue(o == d)
     self.assertTrue(o is d)
Пример #11
0
 def test_serialize_an_object_with_wrong_serialization_method_fails(self):
     o = Class3(3,4)
     s = Serializer(getstate='__getstate__')
     with self.assertRaises(AttributeError):
         s.serialize(o)