Пример #1
0
        /// <summary>
        /// Compares the two circuits for the specified simulation.
        /// </summary>
        /// <param name="simulation">The simulation.</param>
        /// <param name="cktReference">The reference circuit.</param>
        /// <param name="cktActual">The actual circuit.</param>
        /// <param name="exports">The exports to be compared.</param>
        public void Compare(IEventfulSimulation simulation, IEntityCollection cktReference, IEntityCollection cktActual, IExport <double>[] exports)
        {
            var results = new List <double>();

            void StoreResults(object sender, ExportDataEventArgs args)
            {
                foreach (var export in exports)
                {
                    results.Add(export.Value);
                }
            }

            var index = 0;

            void CompareResults(object sender, ExportDataEventArgs args)
            {
                foreach (var export in exports)
                {
                    var expected = results[index++];
                    var actual   = export.Value;
                    var tol      = Math.Max(Math.Abs(expected), Math.Abs(actual)) * CompareRelTol + CompareAbsTol;
                    Assert.AreEqual(expected, actual, tol);
                }
            }

            // Store results
            simulation.ExportSimulationData += StoreResults;
            simulation.Run(cktReference);
            simulation.ExportSimulationData -= StoreResults;

            // Compare to second circuit
            simulation.ExportSimulationData += CompareResults;
            simulation.Run(cktActual);
            simulation.ExportSimulationData -= CompareResults;
        }
Пример #2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GenericExport{T}"/> class.
 /// </summary>
 /// <param name="simulation">The simulation.</param>
 /// <param name="extractor">The function for extracting information.</param>
 public GenericExport(IEventfulSimulation simulation, Func <T> extractor)
     : base(simulation)
 {
     _myExtractor = extractor.ThrowIfNull(nameof(extractor));
 }