7
7
8
8
from uctypes import UINT32 , BFUINT32 , BF_POS , BF_LEN
9
9
from 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
11
11
from esp32_ulp .assemble import SymbolTable , ABS , REL , TEXT
12
12
import esp32_ulp .opcodes_s2 as opcodes
13
13
@@ -46,6 +46,7 @@ def test_arg_qualify():
46
46
assert arg_qualify ('-1' ) == ARG (IMM , - 1 , '-1' )
47
47
assert arg_qualify ('1' ) == ARG (IMM , 1 , '1' )
48
48
assert arg_qualify ('0x20' ) == ARG (IMM , 32 , '0x20' )
49
+ assert arg_qualify ('0100' ) == ARG (IMM , 64 , '0100' )
49
50
assert arg_qualify ('0o100' ) == ARG (IMM , 64 , '0o100' )
50
51
assert arg_qualify ('0b1000' ) == ARG (IMM , 8 , '0b1000' )
51
52
assert arg_qualify ('eq' ) == ARG (COND , 'eq' , 'eq' )
@@ -96,6 +97,11 @@ def test_eval_arg():
96
97
assert eval_arg ('const >> 1' ) == 21
97
98
assert eval_arg ('(const|4)&0xf' ) == 0xe
98
99
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
+
99
105
assert_raises (ValueError , eval_arg , 'evil()' )
100
106
assert_raises (ValueError , eval_arg , 'def cafe()' )
101
107
assert_raises (ValueError , eval_arg , '1 ^ 2' )
@@ -105,14 +111,17 @@ def test_eval_arg():
105
111
opcodes .symbols = None
106
112
107
113
108
- def assert_raises (exception , func , * args ):
114
+ def assert_raises (exception , func , * args , message = None ):
109
115
try :
110
116
func (* args )
111
- except exception :
117
+ except exception as e :
112
118
raised = True
119
+ actual_message = e .args [0 ]
113
120
else :
114
121
raised = False
115
122
assert raised
123
+ if message :
124
+ assert actual_message == message , '%s == %s' % (actual_message , message )
116
125
117
126
118
127
def test_reg_direct_ulp_addressing ():
0 commit comments