66# SPDX-License-Identifier: MIT 
77
88import  os 
9- from  esp32_ulp .util  import  split_tokens , validate_expression , file_exists 
9+ from  esp32_ulp .util  import  split_tokens , validate_expression , parse_int ,  file_exists 
1010
1111tests  =  []
1212
@@ -18,6 +18,19 @@ def test(param):
1818    tests .append (param )
1919
2020
21+ def  assert_raises (exception , func , * args , message = None ):
22+     try :
23+         func (* args )
24+     except  exception  as  e :
25+         raised  =  True 
26+         actual_message  =  e .args [0 ]
27+     else :
28+         raised  =  False 
29+     assert  raised 
30+     if  message :
31+         assert  actual_message  ==  message , '%s == %s'  %  (actual_message , message )
32+ 
33+ 
2134@test  
2235def  test_split_tokens ():
2336    assert  split_tokens ("" ) ==  []
@@ -69,6 +82,30 @@ def test_validate_expression():
6982    assert  validate_expression ('def CAFE()' ) is  False 
7083
7184
85+ @test  
86+ def  test_parse_int ():
87+     # decimal 
88+     assert  parse_int ("5" ) ==  5 , "5 == 5" 
89+     assert  parse_int ("-5" ) ==  - 5 , "-5 == -5" 
90+     # hex 
91+     assert  parse_int ("0x5" ) ==  5 , "0x5 == 5" 
92+     assert  parse_int ("0x5a" ) ==  90 , "0x5a == 90" 
93+     assert  parse_int ("-0x5a" ) ==  - 90 , "-0x5a == -90" 
94+     # binary 
95+     assert  parse_int ("0b1001" ) ==  9 , "0b1001 == 9" 
96+     assert  parse_int ("-0b1001" ) ==  - 9 , "-0b1001 == 9" 
97+     # octal 
98+     assert  parse_int ("0100" ) ==  64 , "0100 == 64" 
99+     assert  parse_int ("0o210" ) ==  136 , "0o210 == 136" 
100+     assert  parse_int ("-0100" ) ==  - 64 , "-0100 == -64" 
101+     assert  parse_int ("-0o210" ) ==  - 136 , "-0o210 == -136" 
102+     # negative cases 
103+     assert_raises (ValueError , parse_int , '0b123' , message = "invalid syntax for integer with base 2: '123'" )
104+     assert_raises (ValueError , parse_int , '0900' , message = "invalid syntax for integer with base 8: '0900'" )
105+     assert_raises (ValueError , parse_int , '0o900' , message = "invalid syntax for integer with base 8: '900'" )
106+     assert_raises (ValueError , parse_int , '0xg' , message = "invalid syntax for integer with base 16: 'g'" )
107+ 
108+ 
72109@test  
73110def  test_file_exists ():
74111    testfile  =  '.testfile' 
0 commit comments