Ejemplo n.º 1
0
        public async Task LogPluginHost_HandleProcessExceptions()
        {
            using (TestHostContext tc = new TestHostContext(this))
            {
                AgentLogPluginHostContext hostContext = CreateTestLogPluginHostContext();
                hostContext.Variables["throw_process"] = "1";

                List <IAgentLogPlugin> plugins = new List <IAgentLogPlugin>()
                {
                    new TestPlugin1(), new TestPluginException()
                };

                TestTrace          trace         = new TestTrace(tc);
                AgentLogPluginHost logPluginHost = new AgentLogPluginHost(hostContext, plugins, trace);
                var task = logPluginHost.Run();
                for (int i = 0; i < 1000; i++)
                {
                    logPluginHost.EnqueueOutput($"{Guid.Empty.ToString("D")}:{i}");
                }

                await Task.Delay(1000);

                logPluginHost.Finish();
                await task;

                // regular one still running
                Assert.True(trace.Outputs.Contains("Test1: 0"));
                Assert.True(trace.Outputs.Contains("Test1: 999"));
                Assert.True(trace.Outputs.Contains("Test1: Done"));

                Assert.True(!trace.Outputs.Contains("TestException: 0"));
                Assert.True(!trace.Outputs.Contains("TestException: 999"));
                Assert.True(trace.Outputs.Contains("TestException: Done"));
            }
        }
Ejemplo n.º 2
0
        public async Task LogPluginHost_SlowPluginRecover()
        {
            using (TestHostContext tc = new TestHostContext(this))
            {
                AgentLogPluginHostContext hostContext = CreateTestLogPluginHostContext();
                List <IAgentLogPlugin>    plugins     = new List <IAgentLogPlugin>()
                {
                    new TestPlugin1(), new TestPluginSlowRecover()
                };

                TestTrace          trace         = new TestTrace(tc);
                AgentLogPluginHost logPluginHost = new AgentLogPluginHost(hostContext, plugins, trace, 950, 100);
                var task = logPluginHost.Run();
                for (int i = 0; i < 1000; i++)
                {
                    logPluginHost.EnqueueOutput($"{Guid.Empty.ToString("D")}:{i}");
                }

                await Task.Delay(1000);

                logPluginHost.Finish();
                await task;

                // regular one still running
                Assert.True(trace.Outputs.Contains("Test1: 0"));
                Assert.True(trace.Outputs.Contains("Test1: 999"));
                Assert.True(trace.Outputs.Contains("Test1: Done"));

                Assert.True(trace.Outputs.Contains("TestSlowRecover: Done"));
                Assert.True(trace.Outputs.Exists(x => x.Contains("TestPluginSlowRecover' has too many buffered outputs.")));
                Assert.True(trace.Outputs.Exists(x => x.Contains("TestPluginSlowRecover' has cleared out buffered outputs.")));
            }
        }
Ejemplo n.º 3
0
        public async Task LogPluginHost_NotInitialized()
        {
            using (TestHostContext tc = new TestHostContext(this))
            {
                AgentLogPluginHostContext hostContext = CreateTestLogPluginHostContext();
                List <IAgentLogPlugin>    plugins     = new List <IAgentLogPlugin>()
                {
                    new TestPlugin1(), new TestPluginNotInitialized()
                };

                TestTrace          trace         = new TestTrace(tc);
                AgentLogPluginHost logPluginHost = new AgentLogPluginHost(hostContext, plugins, trace);
                var task = logPluginHost.Run();
                for (int i = 0; i < 1000; i++)
                {
                    logPluginHost.EnqueueOutput($"{Guid.Empty.ToString("D")}:{i}");
                }

                await Task.Delay(1000);

                logPluginHost.Finish();
                await task;

                // regular one still running
                Assert.True(trace.Outputs.Contains("Test1: 0"));
                Assert.True(trace.Outputs.Contains("Test1: 999"));
                Assert.True(trace.Outputs.Contains("Test1: Done"));

                Assert.True(!trace.Outputs.Contains("TestNotInitialized: 0"));
                Assert.True(!trace.Outputs.Contains("TestNotInitialized: Done"));
            }
        }
Ejemplo n.º 4
0
        public async Task LogPluginHost_ShortCircuitSlowPlugin()
        {
            using (TestHostContext tc = new TestHostContext(this))
            {
                AgentLogPluginHostContext hostContext = CreateTestLogPluginHostContext();
                List <IAgentLogPlugin>    plugins     = new List <IAgentLogPlugin>()
                {
                    new TestPlugin1(), new TestPluginSlow()
                };

                TestTrace          trace         = new TestTrace(tc);
                AgentLogPluginHost logPluginHost = new AgentLogPluginHost(hostContext, plugins, trace, 100, 100);
                var task = logPluginHost.Run();
                for (int i = 0; i < 1000; i++)
                {
                    logPluginHost.EnqueueOutput($"{Guid.Empty.ToString("D")}:{i}");
                }

                await Task.Delay(1000);

                logPluginHost.Finish();
                await task;

                // regular one still running
                Assert.True(trace.Outputs.Contains("Test1: 0"));
                Assert.True(trace.Outputs.Contains("Test1: 999"));
                Assert.True(trace.Outputs.Contains("Test1: Done"));

                // slow one got killed
                Assert.False(trace.Outputs.Contains("TestSlow: Done"));
                Assert.True(trace.Outputs.Exists(x => x.Contains("Plugin has been short circuited")));
            }
        }
Ejemplo n.º 5
0
 private void IsAddToChart_Click(object sender, RoutedEventArgs e)
 {
     if (vm.SelectedItem as TreeNodeVM  != null && (vm.SelectedItem.NodeObj as TestItem != null))
     {
         // string traceName = (vm.SelectedItem.ParentNode.NodeObj as TestStep).Name + (vm.SelectedItem.NodeObj as TestItem).TypeName + vm.SelectedItem.ParentNode.SubTreeNodeList.IndexOf(vm.SelectedItem);
         string traceName = (vm.SelectedItem.ParentNode.NodeObj as TestStep).Name + "_" + (vm.SelectedItem.NodeObj as TestItem).TypeName;
         if (vm.SelectedItem.ParentNode.ParentNode.NodeObj as LoopTestStep == null)
         {
             TestTrace tr = (treeView.SelectedItem as TreeNodeVM).NodeObj as TestTrace;
             if (tr != null && tr.ResultData != null)
             {
                 ShowChart(tr, traceName);
             }
         }
         else
         {
             DataTable dt = loopGridControl.ItemsSource as DataTable;
             TraceEditValuelist.Clear();
             if (dt != null)
             {
                 TraceSetWindow window = new TraceSetWindow(dt, TraceEditValuelist, traceName);
                 window.updateTraceData += UpdateTraceData;
                 window.Show();
             }
         }
     }
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Setup generic environment for unit testing with XFS code.
 /// </summary>
 public static void SetupUnitTests()
 {
     ErrorHandling.ErrorHandler = (message) =>
     {
         TestTrace.Trace("Testing", "Error", message);
         if (System.Diagnostics.Debugger.IsAttached)
         {
             System.Diagnostics.Debugger.Break();
         }
         throw new TestFatalErrorException(message);
     };
 }
Ejemplo n.º 7
0
        public TestVerdict GetProjects(
            [TestParameter("TestRail Url", "Enter the TestRail Url", "[TestRailUrl]")]
            string url,
            [TestParameter("User name", "Enter the TestRail user name.", "[TestRailUser]")]
            string userName,
            [TestParameter("User password", "Enter the TestRail user password.", "[TestRailPassword]")]
            string password)
        {
            try
            {
                var client = new TestRail.TestRailClient(url, userName, password);

                var projects = client.GetProjects();

                var project = projects.Find(x => x.Name.Equals("TestProject"));

                //client.GetProject()

                var runs = client.GetRuns(project.ID);

                var bob = client.GetResults(136);

                var results = client.GetResultsForCase(59, 136);

                var suites = client.GetSuites(project.ID);
                var suite  = suites.Find(x => x.Name.Equals("Master test suite"));


                var testRun = client.AddRun(project.ID, (ulong)suite.ID, $"Very important test run:  {DateTime.Now}", "Blah, blah, blah", 1);
                var dorks   = client.GetResultsForRun(60);

                var tests = client.GetTests(60);
                var cases = client.GetCases(project.ID, (ulong)suite.ID);

                var comment = File.ReadAllText(@"C:\DevProjects\Quintity\Repos\Quintity.TestFramework.TestListeners\Quintity.TestFramework.TestListeners.Test\TestProperties\TestProperties.props");

                foreach (var @case in cases)
                {
                    var spud = client.AddResultForCase(testRun.Value, (ulong)@case.ID, TestRail.Types.ResultStatus.Passed, comment, "version 1.0", new TimeSpan(0, 0, 30));
                    TestTrace.Trace($"Added result:  {spud.Value}");
                }

                TestMessage += "Success";
                TestVerdict  = TestVerdict.Pass;
            }
            catch (Exception e)
            {
                TestMessage += e.ToString();
                TestVerdict  = TestVerdict.Error;
            }

            return(TestVerdict.Pass);
        }
Ejemplo n.º 8
0
            bool RecoverySentinel()
            {
                var ing = false;

                if (RecoverySentineling == false)
                {
                    lock (RecoverySentinelingLock)
                    {
                        if (RecoverySentineling == false)
                        {
                            RecoverySentineling = ing = true;
                        }
                    }
                }

                if (ing)
                {
                    new Thread(() =>
                    {
                        while (true)
                        {
                            Thread.CurrentThread.Join(1000);
                            try
                            {
                                ResetSentinel();

                                if (_ib.Get(_masterHost).CheckAvailable())
                                {
                                    if (!TopOwner.OnNotice(null, new NoticeEventArgs(NoticeType.Info, null, $"{_connectionString.Host.PadRight(21)} > Redis Sentinel switch to {_masterHost}", null)))
                                    {
                                        TestTrace.WriteLine($"【{_connectionString.Host}】Redis Sentinel switch to {_masterHost}", ConsoleColor.DarkGreen);
                                    }

                                    RecoverySentineling = false;
                                    return;
                                }
                            }
                            catch (Exception ex21)
                            {
                                if (!TopOwner.OnNotice(null, new NoticeEventArgs(NoticeType.Info, null, $"{_connectionString.Host.PadRight(21)} > Redis Sentinel switch to {_masterHost}", null)))
                                {
                                    TestTrace.WriteLine($"【{_connectionString.Host}】Redis Sentinel: {ex21.Message}", ConsoleColor.DarkYellow);
                                }
                            }
                        }
                    }).Start();
                }
                return(ing);
            }
        public async Task LogPluginHost_RunSinglePluginWithEmptyLinesInput()
        {
            using (TestHostContext tc = new TestHostContext(this))
            {
                AgentLogPluginHostContext hostContext = CreateTestLogPluginHostContext();
                List <IAgentLogPlugin>    plugins     = new List <IAgentLogPlugin>()
                {
                    new TestPlugin1()
                };

                TestTrace          trace         = new TestTrace(tc);
                AgentLogPluginHost logPluginHost = new AgentLogPluginHost(hostContext, plugins, trace);
                var task = logPluginHost.Run();
                for (int i = 0; i < 100; i++)
                {
                    logPluginHost.EnqueueOutput($"{Guid.Empty.ToString("D")}:{i}");
                }

                for (int i = 0; i < 100; i++)
                {
                    logPluginHost.EnqueueOutput($"{Guid.Empty.ToString("D")}:{i}");
                }

                for (int i = 0; i < 10; i++)
                {
                    logPluginHost.EnqueueOutput($"{Guid.Empty.ToString("D")}:");
                }

                for (int i = 100; i < 200; i++)
                {
                    logPluginHost.EnqueueOutput($"{Guid.Empty.ToString("D")}:{i}");
                }

                await Task.Delay(1000);

                logPluginHost.Finish();
                await task;

                Assert.True(trace.Outputs.Contains("Test1: 0"));
                Assert.True(trace.Outputs.Contains("Test1: 99"));
                Assert.True(trace.Outputs.Contains("Test1: "));
                Assert.True(trace.Outputs.Contains("Test1: 100"));
                Assert.True(trace.Outputs.Contains("Test1: 199"));
                Assert.Equal(10, trace.Outputs.FindAll(x => x == "Test1: ").Count);
            }
        }
Ejemplo n.º 10
0
        private DataTable GeneralTableConvert(DataTable dt)
        {
            string where = "全选='{0}'";
            DataRow[]     drs              = vm.TestResultTable.Select(string.Format(where, true));
            DataTable     dtResult         = ToDataTable(drs);
            List <string> AllDynamicColumn = new List <string>();

            foreach (DataRow dr in dt.DefaultView.ToTable(true, "X").Rows)
            {
                if (dr["X"] != null && !string.IsNullOrEmpty(dr["X"].ToString()))
                {
                    dtResult.Columns.Add(dr["X"].ToString());
                }
            }
            foreach (DataRow row in dtResult.Rows)
            {
                string[] strs = row["IndexStr"].ToString().Split(',');
                if (!string.IsNullOrWhiteSpace(row["IndexStr"].ToString()))
                {
                    TestTrace trace = TestPlan.ManualConnectionList[Convert.ToInt32(strs[0])].TestStepList[Convert.ToInt32(strs[1])].ItemList[Convert.ToInt32(strs[2])] as TestTrace;
                    if (trace != null)
                    {
                        for (int i = 0; i < trace.ResultData.Count(); i++)
                        {
                            string xValue = (new FreqStringConverter()).Convert(trace.ResultData[i].X, null, null, null).ToString();
                            string yValue = trace.ResultData[i].Y.ToDigits(GeneTestSetup.Instance.DataDisplayDigits);
                            row[xValue] = yValue;
                        }
                    }
                }
                else
                {
                    string xValue = row["X"].ToString();
                    string yValue = row["测试数据"].ToString();
                    row[xValue] = yValue;
                }
            }
            dtResult.Columns.Remove("X");
            dtResult.Columns.Remove("IndexStr");
            dtResult.Columns.Remove("测试数据");
            dtResult.Columns.Remove("全选");
            return(dtResult);
        }
Ejemplo n.º 11
0
        public TestVerdict MyTestMethod(
            [TestParameter("String parameter", "Enter string parameter", "Default value")]
            string param1,
            [TestParameter("Int parameter", "Enter integer parameter", 0)]
            int param2,
            [TestParameter("Boolean parameter", "Enter boolean parameter", true)]
            bool param3)
        {
            try
            {
                Setup();

                TestTrace.Trace("This is a sample TestTrace message.");

                TestAssert.IsTrue(param3, "This is a sample assertion.");

                TestCheck.IsTrue("Test of param3", param3, "This is a sample TestCheck.");

                TestMessage += "This is the returned test message.";
                TestVerdict  = TestVerdict.Pass;
            }
            catch (TestAssertFailedException e)
            {
                TestMessage += e.ToString();
                TestVerdict  = TestVerdict.Fail;
            }
            catch (Exception e)
            {
                TestMessage += e.ToString();
                TestVerdict  = TestVerdict.Error;
            }
            finally
            {
                Teardown();
            }

            return(TestVerdict);
        }
Ejemplo n.º 12
0
 public string GetTestName() => string.Join(",", TestTrace.ToArray());
Ejemplo n.º 13
0
 public void AddTestName(string testName) => TestTrace.Add(testName);
Ejemplo n.º 14
0
        private void updateResultData(int stepIndex)
        {
            TestStep step = TestPlan.ManualConnectionList[TestPlan.currentConnIndex].TestStepList[stepIndex];

            if (step is LoopTestStep)
            {
                return;
            }
            for (int i = 0; i < step.ItemList.Count(); i++)
            {
                var    item = step.ItemList[i];
                string sn   = TestPlan.ManualConnectionList[TestPlan.currentConnIndex].SN;
                if (item is TestTrace)
                {
                    TestTrace trace = item as TestTrace;
                    if (trace.ResultData.Count() == 0)
                    {
                        continue;
                    }
                    double ymaxValue     = trace.ResultData.Select(x => x.Y).Max();
                    double yminValue     = trace.ResultData.Select(x => x.Y).Min();
                    double maxValue      = Convert.ToDouble(ymaxValue.ToDigits(GeneTestSetup.Instance.DataDisplayDigits));
                    double minValue      = Convert.ToDouble(yminValue.ToDigits(GeneTestSetup.Instance.DataDisplayDigits));
                    string xmaxValue     = (new FreqStringConverter()).Convert(trace.ResultData.Find(x => x.Y == ymaxValue).X, null, null, null).ToString();
                    string xminValue     = (new FreqStringConverter()).Convert(trace.ResultData.Find(x => x.Y == yminValue).X, null, null, null).ToString();
                    string tracePassFail = trace.PassFail == false ? "Fail" : "Pass";
                    for (int j = 0; j < TestPlan.TestSpecs.Count(); j++)
                    {
                        vm.TestResultTable.Rows.Add(new object[] { false, TestPlan.currentConnIndex + "," + stepIndex + "," + i, sn, trace.TypeName, TestPlan.TestSpecs[j].SpecName, trace.UserDefName,
                                                                   trace.TestConfigDesciption, trace.XDescription, trace.TestSpecList[j].LimitDescription, xmaxValue + "," + xminValue, maxValue + "," + minValue, tracePassFail });
                        foreach (XYTestMarker marker in trace.TestSpecList[j].TestMarkerList)
                        {
                            string markerPassFail = marker.PassFail == false ? "Fail" : "Pass";
                            double valueY         = Convert.ToDouble(marker.MarkerResult[0].Y.ToDigits(GeneTestSetup.Instance.DataDisplayDigits));
                            string valueX         = (new FreqStringConverter()).Convert(marker.MarkerResult[0].X, null, null, null).ToString();
                            vm.TestResultTable.Rows.Add(new object[] { false, "", sn, "Marker", TestPlan.TestSpecs[j].SpecName, marker.UserDefName,
                                                                       marker.TestConfigDesciption, marker.XDescription, trace.TestSpecList[j].LimitDescription, valueX, valueY, markerPassFail });
                        }
                    }
                }
                else if (item is PointTestItem)
                {
                    PointTestItem pointItem         = item as PointTestItem;
                    double        valueY            = Convert.ToDouble(pointItem.Y.ToDigits(GeneTestSetup.Instance.DataDisplayDigits));
                    string        valueX            = (new FreqStringConverter()).Convert(pointItem.X, null, null, null).ToString();
                    string        pointItemPassFail = pointItem.PassFail == false ? "Fail" : "Pass";
                    for (int j = 0; j < TestPlan.TestSpecs.Count(); j++)
                    {
                        vm.TestResultTable.Rows.Add(new object[] { false, "", sn, pointItem.TypeName, TestPlan.TestSpecs[j].SpecName, pointItem.UserDefName,
                                                                   pointItem.TestConfigDesciption, pointItem.XDescription, pointItem.TestSpecList[j].LimitDescription, valueX, valueY, pointItemPassFail });
                    }
                }
                else if (item is TRTestItem)
                {
                    TRTestItem trTestItem = item as TRTestItem;
                    if (trTestItem.Data == null)
                    {
                        return;
                    }
                    if (trTestItem.FreqList == null || trTestItem.FreqList.Count() == 0)
                    {
                        return;
                    }
                    if (trTestItem.StateList == null || trTestItem.StateList.Count() == 0)
                    {
                        return;
                    }
                    double?maxValue;
                    double?minValue;
                    int    maxRowIndex;
                    int    maxColumnIndex;
                    int    minRowIndex;
                    int    minColumnIndex;
                    GeneFun.GetArrayMax(out maxRowIndex, out maxColumnIndex, out maxValue, trTestItem.Data);
                    GeneFun.GetArrayMin(out minRowIndex, out minColumnIndex, out minValue, trTestItem.Data);
                    maxValue = Convert.ToDouble(Convert.ToDouble(maxValue).ToDigits(GeneTestSetup.Instance.DataDisplayDigits));
                    minValue = Convert.ToDouble(Convert.ToDouble(minValue).ToDigits(GeneTestSetup.Instance.DataDisplayDigits));
                    int    maxAtt   = trTestItem.StateList[maxRowIndex].Att;
                    int    maxPhase = trTestItem.StateList[maxRowIndex].Phase;
                    double maxFreq  = trTestItem.FreqList[maxColumnIndex];
                    int    minAtt   = trTestItem.StateList[minRowIndex].Att;
                    int    minPhase = trTestItem.StateList[minRowIndex].Phase;
                    double minFreq  = trTestItem.FreqList[minColumnIndex];
                    for (int j = 0; j < TestPlan.TestSpecs.Count(); j++)
                    {
                        string maxValueStr        = "最大值:att =" + maxAtt + "phase = " + maxPhase + "freq = " + maxFreq;
                        string minValueStr        = "最小值:att =" + minAtt + "phase = " + minPhase + "freq = " + minFreq;
                        string trTestItemPassFail = trTestItem.TestSpecList[j].PassFail == false ? "Fail" : "Pass";
                        vm.TestResultTable.Rows.Add(new object[] { false, TestPlan.currentConnIndex + "," + stepIndex + "," + i, sn, trTestItem.TypeName, TestPlan.TestSpecs[j].SpecName, trTestItem.UserDefName,
                                                                   trTestItem.TestConfigDesciption, trTestItem.XDescription, trTestItem.TestSpecList[j].LimitDescription, maxValueStr + "\r\n" + minValueStr, maxValue + "," + minValue, trTestItemPassFail });
                    }
                }
            }
            this.Dispatcher.Invoke(new Action(() => { bindGridControl(); }));
        }
Ejemplo n.º 15
0
        public void OnTestStepRunCompleted(int stepIndex)
        {
            TestStep step = TestPlan.ManualConnectionList[TestPlan.currentConnIndex].TestStepList[stepIndex];

            if (step is LoopTestStep)
            {
                return;
            }
            for (int k = 0; k < step.ItemList.Count; k++)
            {
                if (step.ItemList[k] as TestTrace != null)
                {
                    TestTrace tc = step.ItemList[k] as TestTrace;
                    for (int j = 0; j < tc.TestSpecList.Count; j++)
                    {
                        TestTraceSpec tp = tc.TestSpecList[j];
                        for (int p = 0; p < tp.TestMarkerList.Count; p++)
                        {
                            TestMarker tm = tp.TestMarkerList[p];
                            if (tm as XYTestMarker != null)
                            {
                                XYTestMarker xyM = tm as XYTestMarker;
                                foreach (XYData xyData in xyM.MarkerResult)
                                {
                                    if (vm.XYMarkerDisplist.Count <= j)
                                    {
                                        ObservableCollection <XYMarkerDisp> XYMarkerDisps = new ObservableCollection <XYMarkerDisp>();
                                        vm.XYMarkerDisplist.Add(XYMarkerDisps);
                                    }
                                    if (vm.XYMarkerDisplist[j].Where(x => x.ConnIndex == TestPlan.currentConnIndex && x.StepIndex == stepIndex && x.TraceIndex == k && x.MarkerIndex == p).Count() == 0)
                                    {
                                        vm.XYMarkerDisplist[j].Add(new XYMarkerDisp()
                                        {
                                            ConnIndex = TestPlan.currentConnIndex, StepIndex = stepIndex, TraceIndex = k, MarkerIndex = p, PortName = xyM.TestConfigDesciption, UserDefName = xyM.UserDefName, Freq = xyData.X, TestResult = xyData.Y, PassFail = xyM.PassFail, LimitDescription = xyM.LimitDescription, XDescription = xyM.XDescription
                                        });
                                    }
                                    else
                                    {
                                        var item = vm.XYMarkerDisplist[j].Where(x => x.ConnIndex == TestPlan.currentConnIndex && x.StepIndex == stepIndex && x.TraceIndex == k && x.MarkerIndex == p).First();
                                        item.Freq       = xyData.X;
                                        item.TestResult = xyData.Y;
                                        item.PassFail   = xyM.PassFail;
                                    }
                                }
                            }
                        }
                    }
                }
                else if (step.ItemList[k] as TRTestItem != null)
                {
                    TRTestItem tt = step.ItemList[k] as TRTestItem;
                    for (int j = 0; j < tt.TestSpecList.Count; j++)
                    {
                        TRTestItemSpec tp = tt.TestSpecList[j];
                        for (int p = 0; p < tp.TestMarkerList.Count; p++)
                        {
                            TestMarker tm = tp.TestMarkerList[p];
                            if (tm as XYTestMarker != null)
                            {
                                XYTestMarker xyM = tm as XYTestMarker;
                                foreach (XYData xyData in xyM.MarkerResult)
                                {
                                    if (vm.XYMarkerDisplist.Count <= j)
                                    {
                                        ObservableCollection <XYMarkerDisp> XYMarkerDisps = new ObservableCollection <XYMarkerDisp>();
                                        vm.XYMarkerDisplist.Add(XYMarkerDisps);
                                    }
                                    if (vm.XYMarkerDisplist[j].Where(x => x.ConnIndex == TestPlan.currentConnIndex && x.StepIndex == stepIndex && x.TraceIndex == k && x.MarkerIndex == p).Count() == 0)
                                    {
                                        vm.XYMarkerDisplist[j].Add(new XYMarkerDisp()
                                        {
                                            ConnIndex = TestPlan.currentConnIndex, StepIndex = stepIndex, TraceIndex = k, MarkerIndex = p, PortName = xyM.TestConfigDesciption, UserDefName = xyM.UserDefName, Freq = xyData.X, TestResult = xyData.Y, PassFail = xyM.PassFail, LimitDescription = xyM.LimitDescription, XDescription = xyM.XDescription
                                        });
                                    }
                                    else
                                    {
                                        var item = vm.XYMarkerDisplist[j].Where(x => x.ConnIndex == TestPlan.currentConnIndex && x.StepIndex == stepIndex && x.TraceIndex == k && x.MarkerIndex == p).First();
                                        item.Freq       = xyData.X;
                                        item.TestResult = xyData.Y;
                                        item.PassFail   = xyM.PassFail;
                                    }
                                }
                            }
                        }
                    }
                }
                else if (step.ItemList[k] is PointTestItem)
                {
                    PointTestItem pTestItem = step.ItemList[k] as PointTestItem;
                    for (int j = 0; j < pTestItem.TestSpecList.Count; j++)
                    {
                        if (vm.XYMarkerDisplist.Count <= j)
                        {
                            ObservableCollection <XYMarkerDisp> XYMarkerDisps = new ObservableCollection <XYMarkerDisp>();
                            vm.XYMarkerDisplist.Add(XYMarkerDisps);
                        }
                        if (vm.XYMarkerDisplist[j].Where(x => x.ConnIndex == TestPlan.currentConnIndex && x.StepIndex == stepIndex && x.TraceIndex == k && x.MarkerIndex == 0).Count() == 0)
                        {
                            vm.XYMarkerDisplist[j].Add(new XYMarkerDisp()
                            {
                                ConnIndex        = TestPlan.currentConnIndex,
                                StepIndex        = stepIndex,
                                TraceIndex       = k,
                                MarkerIndex      = 0,
                                PortName         = pTestItem.TestConfigDesciption,
                                UserDefName      = pTestItem.UserDefName,
                                Freq             = pTestItem.X,
                                TestResult       = pTestItem.Y,
                                PassFail         = pTestItem.PassFail,
                                LimitDescription = pTestItem.TestSpecList[j].LimitDescription,
                                XDescription     = pTestItem.XDescription
                            });
                        }
                        else
                        {
                            var item = vm.XYMarkerDisplist[j].Where(x => x.ConnIndex == TestPlan.currentConnIndex && x.StepIndex == stepIndex && x.TraceIndex == k && x.MarkerIndex == 0).First();
                            item.Freq       = pTestItem.X;
                            item.TestResult = pTestItem.Y;
                            item.PassFail   = pTestItem.PassFail;
                        }
                    }
                }
                else if (step.ItemList[k] is BoolTestItem)
                {
                    BoolTestItem bTestItem  = step.ItemList[k] as BoolTestItem;
                    int          resultData = bTestItem.ResultData == true ? 1 : 0;
                    vm.XYMarkerDisplist[0].Add(new XYMarkerDisp()
                    {
                        TestResult = Convert.ToDouble(resultData), UserDefName = bTestItem.UserDefName
                    });
                }
            }
            this.Dispatcher.Invoke(new Action(() => { gridControl.ItemsSource = vm.XYMarkerDisplist[0]; }));
            // gridControl.ItemsSource = vm.XYMarkerDisplist;
        }
Ejemplo n.º 16
0
        private void ShowChart(TestTrace tr, string str)
        {
            SymtChartLib.Trace trace = new SymtChartLib.Trace();
            if (lstXAxis.Where(x => x.Start == tr.XAxisInfo.Start && x.Stop == tr.XAxisInfo.Stop && x.Center == tr.XAxisInfo.Center).Count() == 0)
            {
                lstXAxis.Add(new SymtChartLib.XAxis()
                {
                    Start = tr.XAxisInfo.Start, Stop = tr.XAxisInfo.Stop, Center = tr.XAxisInfo.Center
                });
            }
            int k = InterfaceChart2.Traces.Count;

            trace.Title     = str;
            trace.AxisIndex = lstXAxis.FindIndex(x => x.Start == tr.XAxisInfo.Start && x.Stop == tr.XAxisInfo.Stop && x.Center == tr.XAxisInfo.Center);
            if (tr.ResultData != null)
            {
                List <XYData> xyData = tr.ResultData;
                if (xyData.Count > 0)
                {
                    Point[] point = new Point[xyData.Count];
                    for (int i = 0; i < xyData.Count; i++)
                    {
                        Point p = new Point()
                        {
                            X = xyData[i].X, Y = xyData[i].Y
                        };
                        point[i] = p;
                    }

                    trace.TraceData = point;
                    InterfaceChart2.Traces.Add(trace);
                }
            }
            if (tr.TestSpecList.Count > 0 && vm.SelectedSpecIndex >= 0)
            {
                XYTestLimit testLimit = tr.TestSpecList[vm.SelectedSpecIndex].TestLimit;
                if (testLimit != null)
                {
                    foreach (var limit in testLimit.LimitLine)
                    {
                        SymtChartLib.LimitLineTypeEnum type = new SymtChartLib.LimitLineTypeEnum();
                        if (limit.Type == LimitLineTypeEnum.Max)
                        {
                            type = SymtChartLib.LimitLineTypeEnum.Max;
                        }
                        else if (limit.Type == LimitLineTypeEnum.Min)
                        {
                            type = SymtChartLib.LimitLineTypeEnum.Min;
                        }
                        else
                        {
                            type = SymtChartLib.LimitLineTypeEnum.None;
                        }
                        trace.LimitLineList.Add(new SymtChartLib.LimitLine()
                        {
                            X1 = limit.X1, Y1 = limit.Y1, X2 = limit.X2, Y2 = limit.Y2, Type = type
                        });
                    }
                }
            }
            trace.Scale               = tr.Scale;
            trace.DivisionCount       = tr.DivCount;
            trace.ReferenceLevel      = tr.RefValue;
            trace.Unit                = tr.Unit;
            trace.ReferencePosition   = tr.RefPosition;
            InterfaceChart2.XAxisList = lstXAxis;
            InterfaceChart2.UpdateData();
        }