#!/usr/bin/env python import empty import np_ut import arg import dbg def data(): o = empty.new() o.header = empty.new() o.header.seq = 1 o.header.stamp = empty.new() o.header.stamp.secs = 2 o.header.stamp.nsecs = 3 p0 = empty.new() p0.stamp = empty.new() p0.stamp.secs = 4 p0.stamp.nsecs = 5 p0.data = b'\x06\x07\x08' p1 = empty.new() p1.stamp = empty.new() p1.stamp.secs = 9 p1.stamp.nsecs = 10 p1.data = b'\x0b\x0c\x0d' o.packets = [ p0, p1 ] s_yaml = ''' - name: header type: - { name: seq, type: np.uint32 } - name: stamp type: - { name: secs, type: np.int32 } - { name: nsecs, type: np.int32 } - name: packets type_list: - name: stamp type: - { name: secs, type: np.int32 } - { name: nsecs, type: np.int32 } - { name: data, type_list: np.uint8 } '''.replace( '\t', '' ) return ( o, s_yaml ) def data_1(): o = empty.new() o.n = 3 o.pos = empty.new() o.pos.x = 12.3 o.pos.y = 45.6 s_yaml = ''' - { name: n, type: np.int32 } - name: pos type: - { name: x, type: np.float32 } - { name: y, type: np.float32 } '''.replace( '\t', '' ) return ( o, s_yaml ) def data_2(): o = empty.new() o.int_0_9 = list( range( 10 ) ) o.v_lst = [ 1, 0.5, 99 ] s_yaml = ''' - { name: int_0_9, type_list: np.int32 } - { name: v_lst, type_list: np.float32 } '''.replace( '\t', '' ) return ( o, s_yaml ) def test_obj_yaml(sample=None): s = 'data' if sample: s = 'data_{}'.format( sample ) f = eval( s ) return f() def test_save(path, sample): (o, s_yaml) = test_obj_yaml( sample ) np_ut.save( path, o, s_yaml ) def test_info(path): (s_yaml, pos) = np_ut.info( path ) dbg.out( s_yaml ) dbg.out( 'pos={}'.format( pos ) ) def test_load(path, sample): o = np_ut.load( path ) d = empty.to_dic( o ) dbg.out( 'd={}'.format( d ) ) (o_, s_yaml) = test_obj_yaml( sample ) d_ = empty.to_dic( o_ ) dbg.out( 'd_={}'.format( d_ ) ) if __name__ == "__main__": cmds = [ arg.cmd_new( 'test_save', [ 'path' ], opts={ 'sample': None } ), arg.cmd_new( 'test_info', [ 'path' ] ), arg.cmd_new( 'test_load', [ 'path' ], opts={ 'sample': None } ), ] cmd = arg.get_name_args( cmds ) f = eval( cmd.name ) f( *cmd.args, **cmd.opts ) # EOF