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