2015-04-15 18:32:56 +00:00
|
|
|
|
///
|
2019-09-16 08:51:25 +00:00
|
|
|
|
/// Copyright (c) 2013-2015 Sensus Slovensko a.s.
|
2015-04-15 18:32:56 +00:00
|
|
|
|
///
|
|
|
|
|
|
using System;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
|
using TBF.UiBridge;
|
2016-12-10 15:27:51 +00:00
|
|
|
|
using TBF.BenchControl;
|
2019-09-16 08:51:25 +00:00
|
|
|
|
using TBF.UI.Shared;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
2019-09-16 08:51:25 +00:00
|
|
|
|
namespace TBF.UI
|
2014-07-28 07:54:35 +00:00
|
|
|
|
{
|
|
|
|
|
|
public class TestProgressControls
|
|
|
|
|
|
{
|
|
|
|
|
|
System.Windows.Forms.Control parent; /// parent is progressFlowLayoutPanel of the only MainWnd instance
|
2019-09-16 08:51:25 +00:00
|
|
|
|
IList<TestProgressCtrl> progresses;
|
|
|
|
|
|
TestProgressCtrl currentProgress;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
|
|
|
|
|
|
public TestProgressControls(Control parent)
|
|
|
|
|
|
{
|
|
|
|
|
|
this.parent = parent;
|
|
|
|
|
|
progresses = null;
|
|
|
|
|
|
currentProgress = null;
|
|
|
|
|
|
|
|
|
|
|
|
Bridge.ProcedureSelectedHandler += delegate(object sender, ProcedureSelectedEventArgs args)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (Program.MainWnd.InvokeRequired)
|
|
|
|
|
|
{
|
|
|
|
|
|
Program.MainWnd.Invoke(new EventHandler<ProcedureSelectedEventArgs>(OnProcedureSelected), sender, args);
|
|
|
|
|
|
}
|
|
|
|
|
|
else OnProcedureSelected(sender, args);
|
|
|
|
|
|
};
|
|
|
|
|
|
Bridge.TestSelectedHandler += delegate(object sender, TestSelectedEventArgs args)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (Program.MainWnd.InvokeRequired)
|
|
|
|
|
|
{
|
|
|
|
|
|
Program.MainWnd.Invoke(new EventHandler<TestSelectedEventArgs>(OnTestSelected), sender, args);
|
|
|
|
|
|
}
|
|
|
|
|
|
else OnTestSelected(sender, args);
|
|
|
|
|
|
};
|
|
|
|
|
|
Bridge.TestProgressHandler += delegate(object sender, TestProgressEventArgs args)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (Program.MainWnd.InvokeRequired)
|
|
|
|
|
|
{
|
|
|
|
|
|
Program.MainWnd.Invoke(new EventHandler<TestProgressEventArgs>(OnTestProgress), sender, args);
|
|
|
|
|
|
}
|
|
|
|
|
|
else OnTestProgress(sender, args);
|
|
|
|
|
|
};
|
|
|
|
|
|
Bridge.TestCompletedHandler += delegate(object sender, TestCompletedEventArgs args)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (Program.MainWnd.InvokeRequired)
|
|
|
|
|
|
{
|
|
|
|
|
|
Program.MainWnd.Invoke(new EventHandler<TestCompletedEventArgs>(OnTestCompleted), sender, args);
|
|
|
|
|
|
}
|
|
|
|
|
|
else OnTestCompleted(sender, args);
|
|
|
|
|
|
};
|
|
|
|
|
|
Bridge.ProcedureCompletedHandler += delegate(object sender, ProcedureCompletedEventArgs args)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (Program.MainWnd.InvokeRequired)
|
|
|
|
|
|
{
|
|
|
|
|
|
Program.MainWnd.Invoke(new EventHandler<ProcedureCompletedEventArgs>(OnProcedureCompleted), sender, args);
|
|
|
|
|
|
}
|
|
|
|
|
|
else OnProcedureCompleted(sender, args);
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-05-04 20:11:18 +00:00
|
|
|
|
|
|
|
|
|
|
void ResetProgressBars(Config.Entities.Procedure procedure)
|
|
|
|
|
|
{
|
2019-08-08 10:43:20 +00:00
|
|
|
|
foreach (var test in procedure.Tests)
|
|
|
|
|
|
{
|
|
|
|
|
|
var component = TbfComponents.FindComponent(test.Method);
|
|
|
|
|
|
if (component != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
test.IsOuterLoopStart = component is TBF.BenchControl.TestMethods.OuterLoop.Start.Component;
|
|
|
|
|
|
test.IsOuterLoopEnd = component is TBF.BenchControl.TestMethods.OuterLoop.End.Component;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
parent.SuspendLayout();
|
|
|
|
|
|
|
2017-05-04 20:11:18 +00:00
|
|
|
|
currentProgress = null;
|
|
|
|
|
|
parent.Controls.Clear();
|
2019-09-16 08:51:25 +00:00
|
|
|
|
progresses = new List<TestProgressCtrl>();
|
2018-01-24 12:59:20 +00:00
|
|
|
|
bool isOuterLoopMode = false;
|
|
|
|
|
|
int outerLoopRepeats = 0;
|
2019-08-08 10:43:20 +00:00
|
|
|
|
|
2018-01-24 12:59:20 +00:00
|
|
|
|
int i = 0;
|
|
|
|
|
|
while (i < procedure.Tests.Count)
|
2017-05-04 20:11:18 +00:00
|
|
|
|
{
|
2018-01-24 12:59:20 +00:00
|
|
|
|
Config.Entities.Test test = procedure.Tests[i++];
|
2019-08-08 10:43:20 +00:00
|
|
|
|
|
|
|
|
|
|
if (!isOuterLoopMode && test.IsOuterLoopStart)
|
2018-01-24 12:59:20 +00:00
|
|
|
|
{
|
|
|
|
|
|
isOuterLoopMode = true;
|
|
|
|
|
|
outerLoopRepeats = (i < procedure.Tests.Count) ? procedure.Tests[i].Repeats : 1;
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
2019-08-08 10:43:20 +00:00
|
|
|
|
else if (isOuterLoopMode && test.IsOuterLoopEnd)
|
2018-01-24 12:59:20 +00:00
|
|
|
|
{
|
|
|
|
|
|
isOuterLoopMode = false;
|
|
|
|
|
|
continue;
|
|
|
|
|
|
}
|
2017-05-04 20:11:18 +00:00
|
|
|
|
|
2018-01-24 12:59:20 +00:00
|
|
|
|
int repeats = test.Repeats;
|
|
|
|
|
|
int newI = i;
|
|
|
|
|
|
for (int r = 1; r <=repeats ; r++)
|
2017-05-04 20:11:18 +00:00
|
|
|
|
{
|
2018-01-24 12:59:20 +00:00
|
|
|
|
if (isOuterLoopMode)
|
|
|
|
|
|
{
|
2019-08-08 10:43:20 +00:00
|
|
|
|
int j = i - 1;
|
|
|
|
|
|
while (j < procedure.Tests.Count)
|
|
|
|
|
|
{
|
|
|
|
|
|
Config.Entities.Test test2 = procedure.Tests[j++];
|
|
|
|
|
|
|
|
|
|
|
|
if (test2.IsOuterLoopEnd)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (r == repeats) newI = j;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2019-11-22 08:17:16 +00:00
|
|
|
|
string test2Name = Results.Utils.GetTestName(test2.Name, test2.Repeats, r);
|
2019-09-16 08:51:25 +00:00
|
|
|
|
TestProgressCtrl progress =
|
2019-10-15 08:03:28 +00:00
|
|
|
|
new TestProgressCtrl(test2.Id, test2Name, test2.Part, test2.GetExpandedTestName(r), r, test2.Repeats);
|
2019-08-08 10:43:20 +00:00
|
|
|
|
progresses.Add(progress);
|
|
|
|
|
|
parent.Controls.Add(progress);
|
|
|
|
|
|
Console.WriteLine(test2Name);
|
|
|
|
|
|
}
|
2018-01-24 12:59:20 +00:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2019-11-22 08:17:16 +00:00
|
|
|
|
string testName = Results.Utils.GetTestName(test.Name, test.Repeats, r);
|
2019-09-16 08:51:25 +00:00
|
|
|
|
TestProgressCtrl progress =
|
2019-10-15 08:03:28 +00:00
|
|
|
|
new TestProgressCtrl(test.Id, testName, test.Part, test.GetExpandedTestName(r), r, test.Repeats);
|
2019-08-08 10:43:20 +00:00
|
|
|
|
progresses.Add(progress);
|
|
|
|
|
|
parent.Controls.Add(progress);
|
|
|
|
|
|
Console.WriteLine(testName);
|
2018-01-24 12:59:20 +00:00
|
|
|
|
}
|
2017-05-04 20:11:18 +00:00
|
|
|
|
}
|
2018-01-24 12:59:20 +00:00
|
|
|
|
|
|
|
|
|
|
i = newI;
|
2017-05-04 20:11:18 +00:00
|
|
|
|
}
|
2019-08-08 10:43:20 +00:00
|
|
|
|
|
|
|
|
|
|
parent.ResumeLayout();
|
2017-05-04 20:11:18 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-07-28 07:54:35 +00:00
|
|
|
|
public void ProcedureSelectedInUI(object sender, ProcedureSelectedEventArgs args)
|
|
|
|
|
|
{
|
2017-05-04 20:11:18 +00:00
|
|
|
|
ResetProgressBars(args.Procedure);
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void OnProcedureSelected(object sender, ProcedureSelectedEventArgs args)
|
|
|
|
|
|
{
|
2017-05-04 20:11:18 +00:00
|
|
|
|
ResetProgressBars(args.Procedure);
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void OnTestSelected(object sender, TestSelectedEventArgs args)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (progresses != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
foreach (var prgrs in progresses)
|
|
|
|
|
|
{
|
2014-09-16 14:09:07 +00:00
|
|
|
|
if ((prgrs.TestId == args.Test.Id) && (prgrs.RepetitionNr == args.RepetitionNr))
|
2014-07-28 07:54:35 +00:00
|
|
|
|
{
|
|
|
|
|
|
currentProgress = prgrs;
|
|
|
|
|
|
currentProgress.Progress = 0;
|
2019-09-16 08:51:25 +00:00
|
|
|
|
currentProgress.TestResult = TestProgressCtrl.Result.NotDone;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
currentProgress = null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void OnTestProgress(object sender, TestProgressEventArgs args)
|
|
|
|
|
|
{
|
2016-01-08 18:18:45 +00:00
|
|
|
|
foreach (var prgrs in progresses)
|
|
|
|
|
|
{
|
2016-01-12 19:46:37 +00:00
|
|
|
|
if (prgrs.TestName == args.TestName && prgrs.Part == args.Part)
|
2016-01-08 18:18:45 +00:00
|
|
|
|
{
|
|
|
|
|
|
prgrs.Progress = args.Progress;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void OnTestCompleted(object sender, TestCompletedEventArgs args)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (currentProgress != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
// Test is 'failed' if any meter failed
|
2016-01-03 01:05:35 +00:00
|
|
|
|
|
|
|
|
|
|
/// TODO: Reimplement
|
|
|
|
|
|
//foreach (var meterTestResult in args.TestResult.Meters)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// if (!meterTestResult.Passed)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// currentProgress.TestResult = UiControls.TestProgressCtrl.Result.Failed;
|
|
|
|
|
|
// return;
|
|
|
|
|
|
// }
|
|
|
|
|
|
//}
|
2019-09-16 08:51:25 +00:00
|
|
|
|
currentProgress.TestResult = TestProgressCtrl.Result.Failed;
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void OnProcedureCompleted(object sender, ProcedureCompletedEventArgs args)
|
|
|
|
|
|
{
|
2017-05-04 20:11:18 +00:00
|
|
|
|
ResetProgressBars(args.Procedure);
|
|
|
|
|
|
}
|
2014-07-28 07:54:35 +00:00
|
|
|
|
}
|
|
|
|
|
|
}
|