using System;
using System.Collections;
using System.IO;
using System.Text;
using System.Xml;
using GHI.IO.Storage;
using HWModules;
using Microsoft.SPOT;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace CPFUnitTests.Core
{
[TestClass]
class MissionConfigUT
{
[TestMethod]
public void TestStringParse()
{
byte[] xml = UTF8Encoding.UTF8.GetBytes("\r\n" +
"\r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
" \r\n" +
"\r\n");
var stream = new MemoryStream(xml);
using (XmlReader reader = XmlReader.Create(stream)) {
bool loop = true;
while (loop) {
try {
loop = reader.Read();
Debug.Print(reader.Name);
}
catch (Exception e) {
Debug.Print(e.ToString());
}
}
}
}
[TestMethod]
public void TestStringParseWithAttributes()
{
byte[] xml = UTF8Encoding.UTF8.GetBytes("\r\n"+
"\r\n"+
"- \r\n" +
"
- \r\n"+
"
- \r\n"+
"
- \r\n"+
"
- \r\n"+
"
- \r\n"+
"
- \r\n"+
"
- \r\n"+
"
- \r\n"+
"
- \r\n"+
"
- \r\n"+
"
- \r\n"+
"
- \r\n"+
"
- \r\n"+
"
- \r\n"+
"
- \r\n"+
"
- \r\n"+
"
- \r\n"+
"
- \r\n" +
"
- \r\n"+
"
- \r\n"+
"
- \r\n"+
"
- \r\n"+
"
- \r\n"+
"
- \r\n"+
"
- \r\n"+
"
- \r\n"+
"
- \r\n
\r\n");
var stream = new MemoryStream(xml);
using (XmlReader reader = XmlReader.Create(stream)) {
bool loop = true;
while (loop) {
try {
loop = reader.Read();
Debug.Print(reader.Name);
switch (reader.Name) {
case "item":
var key = reader.GetAttribute("key");
var value = reader.GetAttribute("value");
Debug.Print("Key: " + key + "\t Value: " + value);
break;
}
}
catch (Exception e) {
Debug.Print(e.ToString());
}
}
}
}
[TestMethod]
public void TestFileParseWithAttributes()
{
var sd = SDStorage.Instance;
var file = @"\SD\config\cpf.xml";
var stream = new FileStream(file, FileMode.Open);
using (XmlReader reader = XmlReader.Create(stream)) {
bool loop = true;
while (loop) {
try {
loop = reader.Read();
Debug.Print(reader.Name);
switch (reader.Name) {
case "item":
var key = reader.GetAttribute("key").ToLower();
var value = reader.GetAttribute("value");
Debug.Print("Key: " + key + "\t Value: " + value);
break;
}
}
catch (Exception e) {
Debug.Print(e.ToString());
}
}
}
}
[TestMethod]
public void TestFileParseToMissionConfig()
{
var sd = SDStorage.Instance;
var file = @"\SD\config\cpf.xml";
var stream = new FileStream(file, FileMode.Open);
using (XmlReader reader = XmlReader.Create(stream)) {
bool loop = true;
while (loop) {
try {
loop = reader.Read();
Debug.Print(reader.Name);
if (reader.Name != "item")
continue;
string key;
string value = reader.GetAttribute("value");
try {
switch (key = reader.GetAttribute("key").ToLower()) {
case "name":
MissionConfig.PlatformName = value;
break;
case "engrlogverb":
MissionConfig.EngrLoggerVerbosityLevel = int.Parse(value);
break;
case "debuglogverb":
MissionConfig.DebuggerVerbosityLevel = int.Parse(value);
break;
case "sysdatasampperiod":
MissionConfig.SetSystemDataSamplePeriod(int.Parse(value));
break;
case "premissdelayperiod":
MissionConfig.SetPreMissionDelayPeriod(int.Parse(value));
break;
case "bellowslower":
MissionConfig.IBFillLowerLimit = double.Parse(value);
break;
case "bellowsupper":
MissionConfig.IBFillLowerLimit = double.Parse(value);
break;
case "sobellowspos":
MissionConfig.SOSetBellowsPosition = double.Parse(value);
break;
case "sobellowsjv":
MissionConfig.SOSetBellowsJV = int.Parse(value);
break;
case "rmbellowspos":
MissionConfig.RMSetBellowsPosition = double.Parse(value);
break;
case "abretfastjv":
MissionConfig.ABRetractFastJV = int.Parse(value);
break;
case "abretslowjv":
MissionConfig.ABRetractSlowJV = int.Parse(value);
break;
case "abpressthres":
MissionConfig.ABPressureThreshold = double.Parse(value);
break;
case "deanchorpresmin":
MissionConfig.DeanchorPressureMinimum = double.Parse(value);
break;
case "deanchorcountthres":
MissionConfig.DeanchorPressureCountThreshold = int.Parse(value);
break;
case "deanchorjv":
MissionConfig.DeanchorJV = int.Parse(value);
break;
case "deanchorvellim":
MissionConfig.DeanchorVelocityLimit = double.Parse(value);
break;
case "deanchorpressmin":
MissionConfig.DeanchorPressureMinimum = double.Parse(value);
break;
case "deanchorcount":
MissionConfig.DeanchorPressureCountThreshold = int.Parse(value);
break;
case "anchorcount":
MissionConfig.AnchorPressureCountThreshold = int.Parse(value);
break;
case "anchorpressmin":
MissionConfig.AnchorPressureMinimum = double.Parse(value);
break;
case "anchorvellim":
MissionConfig.AnchorVelocityLimit = double.Parse(value);
break;
case "exitanchorpressthres":
MissionConfig.ExitAnchorPressureThreshold = double.Parse(value);
break;
case "approachvel":
MissionConfig.ApproachVelocity = double.Parse(value);
break;
case "cppresscutoff":
MissionConfig.CpPressureCutoff = int.Parse(value);
break;
case "cprunpumptime":
MissionConfig.CpRunPumpTime = int.Parse(value);
break;
case "cpmode":
MissionConfig.CPMode = int.Parse(value) == 1;
break;
case "sbecomsampperiod":
MissionConfig.SBE41CPSamplePeriod = int.Parse(value);
break;
case "sbecpsampperiod":
MissionConfig.SBE41CPSamplePeriod = int.Parse(value);
break;
case "stringpotinverseslope":
MissionConfig.StringPotInverseSlope = int.Parse(value);
break;
case "stringpotint":
MissionConfig.StringPotIntercept = double.Parse(value);
break;
default:
throw new ArgumentException("Unknown item present in xml file: " + key);
break;
}
}
catch (Exception err) {
EngrLogger.Comment(err.ToString());
}
}
catch (Exception e) {
Debug.Print(e.ToString());
}
}
}
}
[TestMethod]
public void TestFileParseUsingMethod()
{
var file = @"\SD\config\cpf.xml";
MissionConfig.LoadConfig(file);
Debug.Print(MissionConfig.ToString());
}
}
}