atrcopy/test/test_jsonpickle.py

54 lines
1.5 KiB
Python

from __future__ import print_function
from builtins import zip
from builtins import range
from builtins import object
import os
import pytest
jsonpickle = pytest.importorskip("jsonpickle")
import numpy as np
from atrcopy import DefaultSegment, SegmentData
class TestJsonPickle:
def setup(self):
data = np.arange(2048, dtype=np.uint8)
self.segment = DefaultSegment(SegmentData(data))
def test_simple(self):
print(self.segment.byte_bounds_offset(), len(self.segment))
r2 = self.segment.rawdata[100:400]
s2 = DefaultSegment(r2)
print(s2.byte_bounds_offset(), len(s2), s2.__getstate__())
r3 = s2.rawdata[100:200]
s3 = DefaultSegment(r3)
print(s3.byte_bounds_offset(), len(s3), s3.__getstate__())
order = list(reversed(list(range(700, 800))))
r4 = self.segment.rawdata.get_indexed(order)
s4 = DefaultSegment(r4)
print(s4.byte_bounds_offset(), len(s4), s4.__getstate__())
slist = [s2, s3, s4]
for s in slist:
print(s)
j = jsonpickle.dumps(slist)
print(j)
slist2 = jsonpickle.loads(j)
print(slist2)
for s in slist2:
s.reconstruct_raw(self.segment.rawdata)
print(s)
for orig, rebuilt in zip(slist, slist2):
print("orig", orig.data[:])
print("rebuilt", rebuilt.data[:])
assert np.array_equal(orig[:], rebuilt[:])
if __name__ == "__main__":
t = TestJsonPickle()
t.setup()
t.test_simple()