Skip to content

Commit b661275

Browse files
committed
fix: update parser import paths and enhance parser tests for unit test
1 parent 0fafd6d commit b661275

3 files changed

Lines changed: 43 additions & 47 deletions

File tree

unit-test/Spice/test_Expression.py

Lines changed: 41 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
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

unit-test/Spice/test_Netlist.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ def test_basic(self):
124124
# for pin in circuit.out:
125125
# print(pin)
126126

127-
self.assertEqual(circuit.out.pins, set((circuit.R1.minus, circuit.R2.plus)))
127+
self.assertEqual(set(circuit.out.pins), set((circuit.R1.minus, circuit.R2.plus)))
128128

129129
self.assertEqual(circuit.R1.resistance, 9@u_kΩ)
130130
self.assertEqual(circuit['R2'].resistance, 1@u_kΩ)

unit-test/SpiceParser/test_SpiceParser.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
####################################################################################################
2828

2929
from PySpice.Spice.Netlist import Circuit
30-
from PySpice.Spice.Parser import SpiceParser
30+
from PySpice.Spice.Parser.Parser import SpiceParser
3131

3232
####################################################################################################
3333

0 commit comments

Comments
 (0)