2424
2525####################################################################################################
2626
27- from PySpice .Spice .Expression .Parser import Parser
27+ from PySpice .Spice .Parser .Parser import SpiceParser
2828
2929####################################################################################################
3030
@@ -34,50 +34,46 @@ class TestParser(unittest.TestCase):
3434
3535 def test_parser (self ):
3636
37- parser = Parser ()
38-
39- parser .parse ('1' )
40-
41- parser .parse ('.1' )
42- parser .parse ('.123' )
43- parser .parse ('1.' )
44- parser .parse ('1.1' )
45- parser .parse ('1.123' )
46- parser .parse ('1.e2' )
47- parser .parse ('1.e-2' )
48- parser .parse ('1.123e2' )
49- parser .parse ('1.123e-2' )
50- parser .parse ('1.123e23' )
51- parser .parse ('1.123e-23' )
52-
53- parser .parse ('-1' )
54- parser .parse ('-1.1' )
55-
56- parser .parse ('! rised' )
57-
58- parser .parse ('1 ** 2' )
59-
60- parser .parse ('1 * 2' )
61- parser .parse ('1 / 2' )
62- parser .parse ('1 % 2' )
63- # parser.parse('1 \\ 2')
64- parser .parse ('1 + 2' )
65-
66- parser .parse ('1 == 2' )
67- parser .parse ('1 != 2' )
68- parser .parse ('1 >= 2' )
69- parser .parse ('1 >= 2' )
70- parser .parse ('1 < 2' )
71- parser .parse ('1 > 2' )
72-
73- parser .parse ('x && y' )
74- parser .parse ('x || y' )
75-
76- parser .parse ('c ? x : y' )
77-
78- parser .parse ('1 * -2' )
79-
80- parser .parse ('x * -y + z' )
37+ parser = SpiceParser ()
38+
39+ # Test commands with numeric expressions
40+ parser .parse ('R1 1 0 1' )
41+ parser .parse ('R2 1 0 .1' )
42+ parser .parse ('R3 1 0 .123' )
43+ parser .parse ('R4 1 0 1.' )
44+ parser .parse ('R5 1 0 1.1' )
45+ parser .parse ('R6 1 0 1.123' )
46+ parser .parse ('R7 1 0 1.e2' )
47+ parser .parse ('R8 1 0 1.e-2' )
48+ parser .parse ('R9 1 0 1.123e2' )
49+ parser .parse ('R10 1 0 1.123e-2' )
50+ parser .parse ('R11 1 0 1.123e23' )
51+ parser .parse ('R12 1 0 1.123e-23' )
52+
53+ parser .parse ('R13 1 0 -1' )
54+ parser .parse ('R14 1 0 -1.1' )
55+
56+ # Test behavioural sources with expressions
57+ parser .parse ('B1 1 0 V=1 ** 2' )
58+ parser .parse ('B2 1 0 V=1 * 2' )
59+ parser .parse ('B3 1 0 V=1 / 2' )
60+ parser .parse ('B4 1 0 V=1 % 2' )
61+ parser .parse ('B5 1 0 V=1 + 2' )
62+
63+ # Test if statements and comparisons in expressions
64+ parser .parse ('B6 1 0 V=1 == 2 ? 3 : 4' )
65+ parser .parse ('B7 1 0 V=1 != 2 ? 3 : 4' )
66+ parser .parse ('B8 1 0 V=1 >= 2 ? 3 : 4' )
67+ parser .parse ('B9 1 0 V=1 < 2 ? 3 : 4' )
68+ parser .parse ('B10 1 0 V=1 > 2 ? 3 : 4' )
69+
70+ # Test boolean operations
71+ parser .parse ('B11 1 0 V=x && y ? 1 : 0' )
72+ parser .parse ('B12 1 0 V=x || y ? 1 : 0' )
73+
74+ # Test combination of operations
75+ parser .parse ('B13 1 0 V=1 * -2' )
76+ parser .parse ('B14 1 0 V=x * -y + z' )
8177
8278####################################################################################################
8379
0 commit comments