-
Notifications
You must be signed in to change notification settings - Fork 0
/
testSuite.py
32 lines (30 loc) · 1.38 KB
/
testSuite.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import os
from circuitSimParts import *
from circuitSim import funSPICE
testTolerance = 0.008
solverOptions = dict(spiceRefNode='0', capAdmittance=0, solverTolerance=10e-6, refV=0.0, maxIters=int(2*10e4), wrelax=1)
outputOptions = dict(printRead=False, printResults=False, printSupernodes=False)
codeResults = dict()
expectedResults = dict()
for filename in os.listdir('./testcircuits'):
if filename[0] != '.' and filename[-4:] == '.txt':
if 'out' in filename:
name = filename[:-8]
expectedResults[name] = readOutput('./testcircuits/' + filename)
else:
name = filename[:-4]
n, e, _ = funSPICE('./testcircuits/' + filename, solverOptions, outputOptions)
writeOutput(n, e, './output.txt')
codeResults[name] = readOutput('./output.txt')
for key in codeResults:
print(key)
print(' Node Voltage Errors:')
print(' % abs. [V]')
for k, v in compareOutputs(codeResults[key], expectedResults[key])[0].items():
if v[0] > testTolerance:
print(k + ': ' + str(round(v[0]*100, 3)) + ', ' + str(round(v[1], 3)))
print(' Element Current Errors:')
print(' % abs. [V]')
for k, v in compareOutputs(codeResults[key], expectedResults[key])[1].items():
if v[0] > testTolerance:
print(k + ': ' + str(round(v[0]*100, 3)) + ', ' + str(round(v[1], 3)))