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()); } } }