1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
# (C) Copyright 2005-2025 Enthought, Inc., Austin, TX
# All rights reserved.
#
# This software is provided without warranty under the terms of the BSD
# license included in LICENSE.txt and may be redistributed only under
# the conditions described in the aforementioned license. The license
# is also available online at http://www.enthought.com/licenses/BSD.txt
#
# Thanks for using Enthought open source!
import os
import shutil
import tempfile
import unittest
from traits.api import cached_property, HasTraits, Property, Str, Event
from apptools.naming.api import ObjectSerializer
class FooWithTraits(HasTraits):
"""Dummy HasTraits class for testing ObjectSerizalizer."""
full_name = Str()
last_name = Property(observe="full_name")
event = Event()
@cached_property
def _get_last_name(self):
return self.full_name.split(" ")[-1]
class TestObjectSerializer(unittest.TestCase):
def setUp(self):
self.tmpdir = tempfile.mkdtemp()
self.addCleanup(shutil.rmtree, self.tmpdir)
self.tmp_file = os.path.join(self.tmpdir, "tmp.pickle")
def test_save_load_roundtrip(self):
# Test HasTraits objects can be serialized and deserialized as expected
obj = FooWithTraits(full_name="John Doe")
serializer = ObjectSerializer()
serializer.save(self.tmp_file, obj)
self.assertTrue(serializer.can_load(self.tmp_file))
deserialized = serializer.load(self.tmp_file)
self.assertIsInstance(deserialized, FooWithTraits)
self.assertEqual(deserialized.full_name, "John Doe")
self.assertEqual(deserialized.last_name, "Doe")
|