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