/// <summary> /// Event Handler for when the RUN button is clicked to /// run the input string on the logic ciruit /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void RunButton_Click(object sender, RoutedEventArgs e) { CreateInputStringDictionary(); outputMasterDictionary = new Dictionary <int, int>(); foreach (int output in outputs) { outputMasterDictionary.Add(output, GetSimplExp(output)); } outputFinalList = new List <IntermediateGateFault>(); foreach (IntermediateGateFault fault in faultList) { inputSignalsDict = null; CreateInputStringDictionary(); if (inputSignalsDict.ContainsKey(fault.net_no)) { inputSignalsDict.Remove(fault.net_no); } inputSignalsDict.Add(fault.net_no, fault.stuck_at_fault); Dictionary <int, int> intermediateOutputs = new Dictionary <int, int>(); foreach (int output in outputs) { intermediateOutputs.Add(output, GetSimplExp(output)); } bool success = CompareWithMasterDictionary(intermediateOutputs); if (success == false) { IntermediateGateFault faultWrite = new IntermediateGateFault(); faultWrite.net_no = fault.net_no; faultWrite.stuck_at_fault = fault.stuck_at_fault; outputFinalList.Add(faultWrite); } } outputFinalList.Sort((a, b) => a.net_no.CompareTo(b.net_no)); WriteToOutputDisplay(); }
private void CreateFaultList() { faultList = new List <IntermediateGateFault>(); foreach (int input in inputs) { IntermediateGateFault fault_0 = new IntermediateGateFault(); IntermediateGateFault fault_1 = new IntermediateGateFault(); //Stuck at 0 fault_0.net_no = input; fault_0.stuck_at_fault = 0; //Stuck at 1 fault_1.net_no = input; fault_1.stuck_at_fault = 1; faultList.Add(fault_0); faultList.Add(fault_1); } foreach (LogicRecord logicRecord in logicRecords) { int signalNumber = logicRecord._output; if ((faultList.Find(obj => obj.net_no == signalNumber) == null)) { IntermediateGateFault fault_0 = new IntermediateGateFault(); IntermediateGateFault fault_1 = new IntermediateGateFault(); //Stuck at 0 fault_0.net_no = signalNumber; fault_0.stuck_at_fault = 0; //Stuck at 1 fault_1.net_no = signalNumber; fault_1.stuck_at_fault = 1; faultList.Add(fault_0); faultList.Add(fault_1); } } }