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
|
from vtkmodules.test import Testing as vtkTesting
import json
class TestBiDirectionalSerialization(vtkTesting.vtkTest):
def test(self):
from vtkmodules.vtkSerializationManager import vtkObjectManager
from vtkmodules.vtkRenderingCore import vtkRenderWindow
id_rw = 0
def serialize():
global id_rw
manager = vtkObjectManager()
manager.Initialize()
rw = vtkRenderWindow()
id_rw = manager.RegisterObject(rw)
manager.UpdateStatesFromObjects()
active_ids = manager.GetAllDependencies(0)
states = map(manager.GetState, active_ids)
hash_to_blob_map = { blob_hash: manager.GetBlob(blob_hash) for blob_hash in manager.GetBlobHashes(active_ids) }
return states, hash_to_blob_map
def deserialize(states, hash_to_blob_map):
global id_rw
manager = vtkObjectManager()
manager.Initialize()
for state in states:
manager.RegisterState(state)
for hash_text, blob in hash_to_blob_map.items():
manager.RegisterBlob(hash_text, blob)
manager.UpdateObjectsFromStates()
active_ids = manager.GetAllDependencies(0)
rw = manager.GetObjectAtId(id_rw)
self.assertIsNotNone(rw)
rw.SetWindowName("Window #1")
manager.UpdateStatesFromObjects()
state = json.loads(manager.GetState(id_rw))
self.assertEqual(state["WindowName"], "Window #1")
deserialize(*serialize())
if __name__ == "__main__":
vtkTesting.main([(TestBiDirectionalSerialization, 'test')])
|