77
88from uctypes import UINT32 , BFUINT32 , BF_POS , BF_LEN
99from esp32_ulp .opcodes_s2 import make_ins , make_ins_struct_def
10- from esp32_ulp .opcodes_s2 import get_reg , get_imm , get_cond , arg_qualify , eval_arg , ARG , REG , IMM , SYM , COND
10+ from esp32_ulp .opcodes_s2 import get_reg , get_imm , get_cond , arg_qualify , parse_int , eval_arg , ARG , REG , IMM , SYM , COND
1111from esp32_ulp .assemble import SymbolTable , ABS , REL , TEXT
1212import esp32_ulp .opcodes_s2 as opcodes
1313
@@ -46,6 +46,7 @@ def test_arg_qualify():
4646 assert arg_qualify ('-1' ) == ARG (IMM , - 1 , '-1' )
4747 assert arg_qualify ('1' ) == ARG (IMM , 1 , '1' )
4848 assert arg_qualify ('0x20' ) == ARG (IMM , 32 , '0x20' )
49+ assert arg_qualify ('0100' ) == ARG (IMM , 64 , '0100' )
4950 assert arg_qualify ('0o100' ) == ARG (IMM , 64 , '0o100' )
5051 assert arg_qualify ('0b1000' ) == ARG (IMM , 8 , '0b1000' )
5152 assert arg_qualify ('eq' ) == ARG (COND , 'eq' , 'eq' )
@@ -96,6 +97,11 @@ def test_eval_arg():
9697 assert eval_arg ('const >> 1' ) == 21
9798 assert eval_arg ('(const|4)&0xf' ) == 0xe
9899
100+ assert eval_arg ('0x7' ) == 7
101+ assert eval_arg ('010' ) == 8
102+ assert eval_arg ('-0x7' ) == - 7 # negative
103+ assert eval_arg ('~0x7' ) == - 8 # complement
104+
99105 assert_raises (ValueError , eval_arg , 'evil()' )
100106 assert_raises (ValueError , eval_arg , 'def cafe()' )
101107 assert_raises (ValueError , eval_arg , '1 ^ 2' )
@@ -105,14 +111,17 @@ def test_eval_arg():
105111 opcodes .symbols = None
106112
107113
108- def assert_raises (exception , func , * args ):
114+ def assert_raises (exception , func , * args , message = None ):
109115 try :
110116 func (* args )
111- except exception :
117+ except exception as e :
112118 raised = True
119+ actual_message = e .args [0 ]
113120 else :
114121 raised = False
115122 assert raised
123+ if message :
124+ assert actual_message == message , '%s == %s' % (actual_message , message )
116125
117126
118127def test_reg_direct_ulp_addressing ():
0 commit comments