tbf/TestBenchFramework/BenchControl/TestParamsBase.cs
Milan Hanajik 94de991bf6 Everything works OK after serious changes:
- all components, componentCfg-s and parameter providers use base classes
 - less boilerplate code, simpler access to test/procedure parameters from code
 - CreateTestParams(test), CreateProcedureParams(procedure) methods added
 - TestBenchSim class is made static, it is not inheritted by any device anymore
2015-01-02 12:51:27 +01:00

103 lines
2.5 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Xml.Serialization;
namespace TBF.BenchControl
{
public class TestParamsBase : Generic.ITestParams
{
protected Entities.ComponentTest testParamsEntity;
public string ComponentName { get { return componentName; } }
protected string componentName;
public Entities.Test Test { get { return test; } }
protected Entities.Test test;
/// <summary>
/// Parameterless constructor required for serialization
/// </summary>
public TestParamsBase()
{
InitializeAll();
}
/// <summary> To be overridden </summary>
public virtual void InitializeAll()
{
}
/// <summary> To be overridden </summary>
public virtual void UpdateTestParams(Entities.ComponentTest dbEntity)
{
}
public void UpdateTestParams(string cmpntName, Entities.Test test)
{
/// Search for an existing matching entity
foreach (var tstPrms in test.MoreParams)
{
if (tstPrms.CmpntName.Equals(cmpntName))
{
UpdateTestParams(tstPrms);
return;
}
}
/// Create a new entity and add it to the list test.MoreParams
InitializeAll();
Entities.ComponentTest componentTest = ToDbEntity(cmpntName, test);
test.MoreParams.Add(componentTest);
}
public TBF.Entities.ComponentTest ToDbEntity(string componentName, Entities.Test test)
{
using (var writer = new StringWriter())
{
/// Serialize this class with parameters
(new XmlSerializer(GetType())).Serialize(writer, this);
/// Create and return the ComponentTest entity
TBF.Entities.ComponentTest entity = new TBF.Entities.ComponentTest();
entity.CmpntName = componentName;
entity.Parameters = writer.ToString();
entity.Test = test;
return entity;
}
}
public void UpdateDbEntity()
{
using (var writer = new StringWriter())
{
/// Serialize this class and update the entity
(new XmlSerializer(GetType())).Serialize(writer, this);
testParamsEntity.Parameters = writer.ToString();
testParamsEntity.CmpntName = componentName;
testParamsEntity.Test = test;
}
}
public virtual string ParamName(int i) { return string.Empty; }
public virtual int ParamsCount() { return 0; }
public virtual string ToString(int i) { return string.Empty; }
public override string ToString()
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < ParamsCount(); i++)
{
if (i != 0) sb.Append("; ");
sb.Append(ParamName(i));
sb.Append("=");
sb.Append(ToString(i));
}
return sb.ToString();
}
}
}