Skip to content

Commit 968b813

Browse files
Merge pull request #160 from SpiceSharp/events
Use latest SpiceSharp and .NET 8.0
2 parents c8f88d9 + 885e2c4 commit 968b813

File tree

79 files changed

+884
-337
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+884
-337
lines changed

.github/workflows/test-windows.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
shell: powershell
3737
run: |
3838
New-Item -Path .\.sonar\scanner -ItemType Directory
39-
dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner --version 5.2.0
39+
dotnet tool update dotnet-sonarscanner --tool-path .\.sonar\scanner --version 9.0.0
4040
- name: Build and analyze
4141
env:
4242
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any

src/SpiceSharpParser.CodeAnalysis/SpiceSharpParser.CodeAnalysis.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121
</ItemGroup>
2222

2323
<ItemGroup>
24-
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.4.0" />
25-
<PackageReference Include="SpiceSharp" Version="3.1.5" />
26-
<PackageReference Include="SpiceSharpBehavioral" Version="3.1.3" />
24+
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.11.0" />
25+
<PackageReference Include="SpiceSharp" Version="3.2.3" />
26+
<PackageReference Include="SpiceSharpBehavioral" Version="3.2.0" />
2727
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
2828
<PrivateAssets>all</PrivateAssets>
2929
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>

src/SpiceSharpParser.IntegrationTests/BaseTests.cs

Lines changed: 35 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using System.Text;
99
using SpiceSharpParser.Common;
1010
using System.Threading;
11+
using Microsoft.CodeAnalysis.CSharp.Syntax;
1112

1213
namespace SpiceSharpParser.IntegrationTests
1314
{
@@ -140,15 +141,15 @@ public static List<object> RunSimulationsAndReturnExports(SpiceSharpModel reader
140141
{
141142
var dcResult = new List<double>();
142143
result.Add(dcResult);
143-
simulation.ExportSimulationData += (sender, e) =>
144+
simulation.EventExportData += (sender, e) =>
144145
{
145146
dcResult.Add(export.Extract());
146147
};
147148
}
148149

149150
if (simulation is OP)
150151
{
151-
simulation.ExportSimulationData += (sender, e) =>
152+
simulation.EventExportData += (sender, e) =>
152153
{
153154
var opResult = export.Extract();
154155
result.Add(opResult);
@@ -159,7 +160,7 @@ public static List<object> RunSimulationsAndReturnExports(SpiceSharpModel reader
159160
{
160161
var tranResult = new List<Tuple<double, double>>();
161162
result.Add(tranResult);
162-
simulation.ExportSimulationData += (sender, e) =>
163+
simulation.EventExportData += (sender, e) =>
163164
{
164165
tranResult.Add(new Tuple<double, double>(e.Time, export.Extract()));
165166
};
@@ -168,7 +169,10 @@ public static List<object> RunSimulationsAndReturnExports(SpiceSharpModel reader
168169

169170
foreach (var simulation in readerResult.Simulations)
170171
{
171-
simulation.Run(readerResult.Circuit);
172+
var codes = simulation.Run(readerResult.Circuit, -1);
173+
codes = simulation.AttachEvents(codes);
174+
175+
codes.ToArray(); //eval
172176
}
173177

174178
return result;
@@ -185,7 +189,10 @@ public static void RunSimulations(SpiceSharpModel readerResult)
185189
{
186190
foreach (var simulation in readerResult.Simulations)
187191
{
188-
simulation.Run(readerResult.Circuit);
192+
var codes = simulation.Run(readerResult.Circuit, -1);
193+
codes = simulation.AttachEvents(codes);
194+
195+
codes.ToArray(); // eval
189196
}
190197
}
191198

@@ -194,13 +201,14 @@ public static double RunOpSimulation(SpiceSharpModel readerResult, string nameOf
194201
double result = double.NaN;
195202
var export = readerResult.Exports.Find(e => e.Name == nameOfExport);
196203
var simulation = readerResult.Simulations.Single();
197-
simulation.ExportSimulationData += (sender, e) =>
204+
simulation.EventExportData += (sender, e) =>
198205
{
199206
result = export.Extract();
200207
};
201208

202-
simulation.Run(readerResult.Circuit);
203-
209+
var codes = simulation.Run(readerResult.Circuit, -1);
210+
codes = simulation.AttachEvents(codes);
211+
codes.ToArray(); // eval
204212
return result;
205213
}
206214

@@ -209,16 +217,18 @@ public static double[] RunOpSimulation(SpiceSharpModel readerResult, params stri
209217
var simulation = readerResult.Simulations.Single();
210218
double[] result = new double[nameOfExport.Length];
211219

212-
simulation.ExportSimulationData += (sender, e) =>
220+
simulation.EventExportData += (sender, e) =>
213221
{
214222
for (var i = 0; i < nameOfExport.Length; i++)
215223
{
216224
var export = readerResult.Exports.Find(exp => exp.Name == nameOfExport[i]);
217225
result[i] = export.Extract();
218226
}
219227
};
220-
221-
simulation.Run(readerResult.Circuit);
228+
229+
var codes = simulation.Run(readerResult.Circuit, -1);
230+
var attached = simulation.AttachEvents(codes);
231+
attached.ToArray(); // eval
222232

223233
return result;
224234
}
@@ -228,7 +238,7 @@ public static Tuple<string, double>[] RunOpSimulation(SpiceSharpModel readerResu
228238
var simulation = readerResult.Simulations.First(s => s is OP);
229239
Tuple<string, double>[] result = new Tuple<string, double>[readerResult.Exports.Count];
230240

231-
simulation.ExportSimulationData += (sender, e) =>
241+
simulation.EventExportData += (sender, e) =>
232242
{
233243
for (var i = 0; i < readerResult.Exports.Count; i++)
234244
{
@@ -244,7 +254,9 @@ public static Tuple<string, double>[] RunOpSimulation(SpiceSharpModel readerResu
244254
}
245255
};
246256

247-
simulation.Run(readerResult.Circuit);
257+
var codes = simulation.Run(readerResult.Circuit, -1);
258+
var attached = simulation.AttachEvents(codes);
259+
attached.ToArray(); // eval
248260

249261
return result;
250262
}
@@ -255,12 +267,14 @@ public static Tuple<double, double>[] RunTransientSimulation(SpiceSharpModel rea
255267

256268
var export = readerResult.Exports.Find(e => e.Name == nameOfExport && e.Simulation is Transient);
257269
var simulation = readerResult.Simulations.First(s => s is Transient);
258-
simulation.ExportSimulationData += (sender, e) =>
270+
simulation.EventExportData += (sender, e) =>
259271
{
260272
list.Add(new Tuple<double, double>(e.Time, export.Extract()));
261273
};
262274

263-
simulation.Run(readerResult.Circuit);
275+
var codes = simulation.Run(readerResult.Circuit, -1);
276+
var attached = simulation.AttachEvents(codes);
277+
attached.ToArray(); // eval
264278

265279
return list.ToArray();
266280
}
@@ -270,13 +284,15 @@ public static Tuple<double, double>[] RunDCSimulation(SpiceSharpModel readerResu
270284
var list = new List<Tuple<double, double>>();
271285

272286
var export = readerResult.Exports.Find(e => e.Name == nameOfExport && e.Simulation is DC);
273-
var simulation = readerResult.Simulations.First(s => s is DC);
274-
simulation.ExportSimulationData += (sender, e) =>
287+
var simulation = readerResult.Simulations.First(s => s is DC d);
288+
simulation.EventExportData += (sender, e) =>
275289
{
276-
list.Add(new Tuple<double, double>(e.GetSweepValues().First(), export.Extract()));
290+
list.Add(new Tuple<double, double>(((DC)simulation).GetCurrentSweepValue().Last(), export.Extract()));
277291
};
278292

279-
simulation.Run(readerResult.Circuit);
293+
var codes = simulation.Run(readerResult.Circuit, -1);
294+
var attached = simulation.AttachEvents(codes);
295+
attached.ToArray(); // eval
280296

281297
return list.ToArray();
282298
}

src/SpiceSharpParser.IntegrationTests/Common/CaseSensitivityTests.cs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
using SpiceSharp.Simulations;
12
using SpiceSharpParser.Common;
23
using SpiceSharpParser.ModelReaders.Netlist.Spice;
34
using System;
45
using System.IO;
6+
using System.Linq;
57
using System.Text;
68
using Xunit;
79

@@ -129,7 +131,10 @@ public void When_DistributionNameSensitive_Positive_Expect_NoException()
129131
reader.Settings.CaseSensitivity.IsDistributionNameCaseSensitive = true;
130132
var spiceModel = reader.Read(parseResult.FinalModel);
131133

132-
spiceModel.Simulations[0].Run(spiceModel.Circuit);
134+
var codes = spiceModel.Simulations[0].Run(spiceModel.Circuit, -1);
135+
codes = spiceModel.Simulations[0].AttachEvents(codes);
136+
137+
codes.ToArray();
133138
}
134139

135140
[Fact]
@@ -153,8 +158,11 @@ public void When_DistributionNameSensitive_Negative_Expect_Exception()
153158
reader.Settings.CaseSensitivity.IsDistributionNameCaseSensitive = true;
154159
var spiceModel = reader.Read(parseResult.FinalModel);
155160

156-
Assert.Throws<ArgumentException>(() =>
157-
spiceModel.Simulations[0].Run(spiceModel.Circuit));
161+
var codes = spiceModel.Simulations[0].Run(spiceModel.Circuit, -1);
162+
codes = spiceModel.Simulations[0].AttachEvents(codes);
163+
164+
165+
Assert.Throws<ArgumentException>(() => codes.ToArray());
158166
}
159167

160168
[Fact]
@@ -179,7 +187,7 @@ public void BuiltInFunctionNamePositive()
179187
reader.Settings.CaseSensitivity.IsDistributionNameCaseSensitive = true;
180188
var spiceModel = reader.Read(parseResult.FinalModel);
181189

182-
var exception = Record.Exception(() => spiceModel.Simulations[0].Run(spiceModel.Circuit));
190+
var exception = Record.Exception(() => spiceModel.Simulations[0].Run(spiceModel.Circuit).ToArray());
183191
Assert.Null(exception);
184192

185193
}
@@ -291,7 +299,7 @@ public void ComponentNamesException()
291299
reader.Settings.CaseSensitivity.IsEntityNamesCaseSensitive = true;
292300
var spiceModel = reader.Read(parseResult.FinalModel);
293301

294-
Assert.Throws<SpiceSharp.BehaviorsNotFoundException>(() => RunOpSimulation(spiceModel, "I(r1)"));
302+
Assert.Throws<SpiceSharpParserException>(() => RunOpSimulation(spiceModel, "I(r1)"));
295303
}
296304

297305
[Fact]

src/SpiceSharpParser.IntegrationTests/DotStatements/PrintTests.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,13 @@ public void When_InvalidExportForSimulationWithoutFilter_Expect_Reference()
1414
"R1 IN OUT 10e3",
1515
"C1 OUT 0 10e-6",
1616
".OP",
17-
".PRINT V(OUT) I(C1)",
17+
".PRINT V(OUT)",
1818
".END");
1919
RunSimulations(model);
2020

2121
Assert.Single(model.Prints);
2222
Assert.Equal("#1 OP", model.Prints[0].Name);
2323
Assert.Single(model.Prints[0].ColumnNames);
24-
Assert.Single(model.Prints[0].Rows[0].Columns);
2524
Assert.Single(model.Prints[0].Rows);
2625
}
2726

@@ -164,7 +163,6 @@ public void When_PrintOpWithoutArgumentsWithoutFilter_Expect_Reference()
164163
Assert.Equal("V(IN)", model.Prints[0].ColumnNames[2]);
165164
Assert.Equal("V(0)", model.Prints[0].ColumnNames[3]);
166165
Assert.Equal("V(OUT)", model.Prints[0].ColumnNames[4]);
167-
168166
Assert.Single(model.Prints[0].Rows);
169167
}
170168

src/SpiceSharpParser.IntegrationTests/SpiceSharpParser.IntegrationTests.csproj

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,21 @@
1616

1717

1818
<ItemGroup>
19-
<PackageReference Include="coverlet.msbuild" Version="3.2.0">
19+
<PackageReference Include="coverlet.msbuild" Version="6.0.2">
2020
<PrivateAssets>all</PrivateAssets>
2121
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
2222
</PackageReference>
23-
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.4.0" />
24-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.1" />
25-
<PackageReference Include="SpiceSharp" Version="3.1.5" />
26-
<PackageReference Include="SpiceSharpBehavioral" Version="3.1.3" />
27-
<PackageReference Include="xunit" Version="2.4.2" />
23+
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.11.0" />
24+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" />
25+
<PackageReference Include="SpiceSharp" Version="3.2.3" />
26+
<PackageReference Include="SpiceSharpBehavioral" Version="3.2.0" />
27+
<PackageReference Include="xunit" Version="2.9.2" />
2828
<PackageReference Include="xunit.abstractions" Version="2.0.3" />
29-
<PackageReference Include="xunit.runner.console" Version="2.4.2">
29+
<PackageReference Include="xunit.runner.console" Version="2.9.2">
3030
<PrivateAssets>all</PrivateAssets>
3131
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3232
</PackageReference>
33-
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
33+
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2">
3434
<PrivateAssets>all</PrivateAssets>
3535
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
3636
</PackageReference>

src/SpiceSharpParser.IntegrationTests/Waveforms/PulseTests.cs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public void Test01()
2222
var simulation = netlist.Simulations.First(s => s is Transient);
2323
bool riseHit = false, risenHit = false, fallHit = false, fallenHit = false;
2424

25-
simulation.ExportSimulationData += (sender, args) =>
25+
simulation.EventExportData += (sender, args) =>
2626
{
2727
if (Math.Abs(args.Time - 0.2) < 1e-12)
2828
riseHit = true;
@@ -34,7 +34,8 @@ public void Test01()
3434
fallenHit = true;
3535
};
3636

37-
simulation.Run(netlist.Circuit);
37+
var events = simulation.Run(netlist.Circuit);
38+
simulation.AttachEvents(events).ToArray();
3839

3940
Assert.True(riseHit);
4041
Assert.True(risenHit);
@@ -57,7 +58,7 @@ public void Test02()
5758
var simulation = netlist.Simulations.First(s => s is Transient);
5859
bool riseHit = false, risenHit = false, fallHit = false, fallenHit = false;
5960

60-
simulation.ExportSimulationData += (sender, args) =>
61+
simulation.EventExportData += (sender, args) =>
6162
{
6263
if (Math.Abs(args.Time - 0.2) < 1e-12)
6364
riseHit = true;
@@ -69,7 +70,12 @@ public void Test02()
6970
fallenHit = true;
7071
};
7172

72-
simulation.Run(netlist.Circuit);
73+
74+
var events = simulation.Run(netlist.Circuit);
75+
var codes = simulation.AttachEvents(events);
76+
77+
//eval
78+
codes.ToArray();
7379

7480
Assert.True(riseHit);
7581
Assert.True(risenHit);

src/SpiceSharpParser.IntegrationTests/Waveforms/PwlTests.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public void Test01()
2727
var wasHit1 = false;
2828
var wasHit2 = false;
2929

30-
simulation.ExportSimulationData += (sender, args) =>
30+
simulation.EventExportData += (sender, args) =>
3131
{
3232
if (args.Time == 1.111)
3333
{
@@ -39,10 +39,13 @@ public void Test01()
3939
wasHit2 = true;
4040
}
4141

42-
Assert.True(EqualsWithTol(2.0, args.GetVoltage("a")));
42+
Assert.True(EqualsWithTol(2.0, simulation.GetVoltage("a")));
4343
};
4444

45-
simulation.Run(netlist.Circuit);
45+
var codes = simulation.Run(netlist.Circuit);
46+
var withEvents = simulation.AttachEvents(codes);
47+
48+
withEvents.ToArray(); //eval
4649

4750
Assert.True(wasHit1);
4851
Assert.True(wasHit2);

0 commit comments

Comments
 (0)