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[:])
class TestSegment: def setup(self): data = np.ones([4000], dtype=np.uint8) r = SegmentData(data) self.segment = DefaultSegment(r, 0) def test_getstate(self): state = self.segment.__getstate__() for k, v in state.items(): print("k=%s v=%s type=%s" % (k, v, type(v))) byte_type = type(str(u' ').encode('utf-8')) # py2 and py3 try: u = unicode(" ") except: u = str(" ") assert type(state['uuid']) == type(u) def test_extra(self): s = self.segment s.set_comment([[4,5]], "test1") s.set_comment([[40,50]], "test2") s.set_style_ranges([[2,100]], comment=True) s.set_style_ranges([[200, 299]], data=True) for i in range(1,4): for j in range(1, 4): # create some with overlapping regions, some without r = [500*j, 500*j + 200*i + 200] s.set_style_ranges([r], user=i) s.set_user_data([r], i, i*10 + j) r = [100, 200] s.set_style_ranges([r], user=4) s.set_user_data([r], 4, 99) r = [3100, 3200] s.set_style_ranges([r], user=4) s.set_user_data([r], 4, 99) out = dict() s.serialize_session(out) print("saved", out) data = np.ones([4000], dtype=np.uint8) r = SegmentData(data) s2 = DefaultSegment(r, 0) s2.restore_session(out) out2 = dict() s2.serialize_session(out2) print("loaded", out2) assert out == out2