6
6
# SPDX-License-Identifier: MIT
7
7
8
8
import 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
10
10
11
11
tests = []
12
12
@@ -18,6 +18,19 @@ def test(param):
18
18
tests .append (param )
19
19
20
20
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
+
21
34
@test
22
35
def test_split_tokens ():
23
36
assert split_tokens ("" ) == []
@@ -69,6 +82,30 @@ def test_validate_expression():
69
82
assert validate_expression ('def CAFE()' ) is False
70
83
71
84
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
+
72
109
@test
73
110
def test_file_exists ():
74
111
testfile = '.testfile'
0 commit comments