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):
1818tests .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 ():
2336assert split_tokens ("" )== []
@@ -69,6 +82,30 @@ def test_validate_expression():
6982assert 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 ():
74111testfile = '.testfile'