public CircuitTestSocket(LogicalCircuit circuit, bool multithreaded) { Tracer.Assert(CircuitTestSocket.IsTestable(circuit)); TableChank.Validate(circuit); this.chank = new TableChank(circuit); if (multithreaded && 1 < Environment.ProcessorCount && 15 < this.chank.InputBitCount) { this.chankList = new TableChank[Environment.ProcessorCount]; BigInteger total = this.chank.Count; BigInteger count = total / this.chankList.Length; for (int i = 0; i < this.chankList.Length; i++) { if (i == 0) { this.chankList[i] = this.chank; } else { this.chankList[i] = new TableChank(circuit); } this.chankList[i].Count = count; this.chankList[i].Start = count * i; } this.chankList[this.chankList.Length - 1].Count += total % this.chankList.Length; } }
public static CircuitTester CreateTester(string circuitName) { if (string.IsNullOrEmpty(circuitName)) { throw new ArgumentNullException(nameof(circuitName)); } Editor editor = App.Editor; if (editor == null) { throw new InvalidOperationException("Editor was not created yet"); } LogicalCircuit circuit = editor.CircuitProject.LogicalCircuitSet.FindByName(circuitName); if (circuit == null) { throw new CircuitException(Cause.UserError, string.Format(CultureInfo.InvariantCulture, "Logical Circuit {0} not found", circuitName)); } if (!CircuitTestSocket.IsTestable(circuit)) { throw new CircuitException(Cause.UserError, string.Format(CultureInfo.InvariantCulture, "Logical Circuit {0} is not testable. There are no any input or/and output pins on it.", circuitName) ); } return(new CircuitTester(editor, circuit)); }
internal CircuitTester(Editor editor, LogicalCircuit circuit) { Tracer.Assert(editor != null); Tracer.Assert(circuit != null); Tracer.Assert(circuit.CircuitProject == editor.CircuitProject); Tracer.Assert(CircuitTestSocket.IsTestable(circuit)); this.originalEditor = new WeakReference <Editor>(editor); this.originalVersion = editor.CircuitProject.Version; this.logicalCircuitName = circuit.Name; this.socket = new CircuitTestSocket(circuit, false); }