void writeRunData(RaceRun raceRun, AdditionalRaceProperties.RaceRunProperties raceRunProperties) { _writer.WriteStartElement("rundata"); _writer.WriteAttributeString("runnumber", raceRun.Run.ToString()); { _writer.WriteStartElement("coursedata"); if (string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties?.CoarseName)) { throw new DSVExportException("missing coarsename"); } _writer.WriteStartElement("coursename"); _writer.WriteValue(raceRun.GetRace().AdditionalProperties?.CoarseName); _writer.WriteEndElement(); if (!string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties?.CoarseHomologNo)) { _writer.WriteStartElement("homologationnumber"); _writer.WriteValue(raceRun.GetRace().AdditionalProperties.CoarseHomologNo); _writer.WriteEndElement(); } if (raceRunProperties.Gates <= 0) { throw new DSVExportException("missing number_of_gates"); } _writer.WriteStartElement("number_of_gates"); _writer.WriteValue(raceRunProperties.Gates.ToString()); _writer.WriteEndElement(); if (raceRunProperties.Turns <= 0) { throw new DSVExportException("missing number_of_turninggates"); } _writer.WriteStartElement("number_of_turninggates"); _writer.WriteValue(raceRunProperties.Turns.ToString()); _writer.WriteEndElement(); if (raceRun.GetRace().AdditionalProperties?.StartHeight <= 0) { throw new DSVExportException("missing startaltitude"); } _writer.WriteStartElement("startaltitude"); _writer.WriteValue(raceRun.GetRace().AdditionalProperties?.StartHeight.ToString()); _writer.WriteEndElement(); if (raceRun.GetRace().AdditionalProperties?.FinishHeight <= 0) { throw new DSVExportException("missing finishaltitude"); } _writer.WriteStartElement("finishaltitude"); _writer.WriteValue(raceRun.GetRace().AdditionalProperties?.FinishHeight.ToString()); _writer.WriteEndElement(); if (raceRun.GetRace().AdditionalProperties?.CoarseLength <= 0) { throw new DSVExportException("missing courselength"); } _writer.WriteStartElement("courselength"); _writer.WriteValue(raceRun.GetRace().AdditionalProperties.CoarseLength.ToString()); _writer.WriteEndElement(); writeCourseSetterPerson(_writer, raceRunProperties.CoarseSetter); if (!string.IsNullOrWhiteSpace(raceRunProperties.Forerunner1.Name)) { writeForeRunnerPerson(_writer, 1, raceRunProperties.Forerunner1); } else { throw new DSVExportException("missing forerunner"); } if (!string.IsNullOrWhiteSpace(raceRunProperties.Forerunner2.Name)) { writeForeRunnerPerson(_writer, 2, raceRunProperties.Forerunner2); } if (!string.IsNullOrWhiteSpace(raceRunProperties.Forerunner3.Name)) { writeForeRunnerPerson(_writer, 3, raceRunProperties.Forerunner3); } _writer.WriteEndElement(); } if (!string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.Weather) || !string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.Snow) || !string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.TempStart) || !string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.TempFinish)) { _writer.WriteStartElement("meteodata"); if (!string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.Weather)) { _writer.WriteStartElement("weather"); _writer.WriteValue(raceRun.GetRace().AdditionalProperties.Weather); _writer.WriteEndElement(); } if (!string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.Snow)) { _writer.WriteStartElement("snowtexture"); _writer.WriteValue(raceRun.GetRace().AdditionalProperties.Snow); _writer.WriteEndElement(); } if (!string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.TempStart)) { _writer.WriteStartElement("temperature_startaltitude"); _writer.WriteValue(raceRun.GetRace().AdditionalProperties.TempStart); _writer.WriteEndElement(); } if (!string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.TempFinish)) { _writer.WriteStartElement("temperature_finishaltitude"); _writer.WriteValue(raceRun.GetRace().AdditionalProperties.TempFinish); _writer.WriteEndElement(); } _writer.WriteEndElement(); } { _writer.WriteStartElement("starttime"); _writer.WriteValue(raceRunProperties.StartTime); // TODO: Ensure "HH:MM" 24h _writer.WriteEndElement(); } _writer.WriteEndElement(); }
public void Equals() { var cs1 = new AdditionalRaceProperties.Person { Name = "NameCS 1", Club = "Club 1" }; var p1 = new AdditionalRaceProperties.Person { Name = "Name 1", Club = "Club 1" }; var p2 = new AdditionalRaceProperties.Person { Name = "Name 2", Club = "Club 2" }; var p3 = new AdditionalRaceProperties.Person { Name = "Name 3", Club = "Club 3" }; var rrp1 = new AdditionalRaceProperties.RaceRunProperties { CoarseSetter = cs1, Forerunner1 = p1, Forerunner2 = p2, Forerunner3 = p3, Gates = 10, Turns = 9, StartTime = "10:00" }; var rrp2 = rrp1.Copy(); rrp2.StartTime = "11:00"; AdditionalRaceProperties prop1 = new AdditionalRaceProperties { Location = "Location 1", RaceNumber = "RaceNumber 1", Description = "Description 1", DateStartList = new DateTime(2021, 01, 01), DateResultList = new DateTime(2021, 02, 01), Analyzer = "Analyzer 1", Organizer = "Organizer 1", RaceReferee = new AdditionalRaceProperties.Person { Name = "RaceReferee 1", Club = "Club 1" }, RaceManager = new AdditionalRaceProperties.Person { Name = "RaceManager 1", Club = "Club 1" }, TrainerRepresentative = new AdditionalRaceProperties.Person { Name = "TrainerRepresentative 1", Club = "Club 1" }, CoarseName = "CoarseName 1", CoarseLength = 100, CoarseHomologNo = "CoarseHomologNo 1", StartHeight = 1100, FinishHeight = 1000, RaceRun1 = rrp1, RaceRun2 = rrp2, Weather = "Weather 1", Snow = "Snow 1", TempStart = "TempStart 1", TempFinish = "TempFinish 1" }; AdditionalRaceProperties prop2 = prop1.Copy(); Assert.IsTrue(AdditionalRaceProperties.Equals(prop1, prop1)); Assert.IsTrue(AdditionalRaceProperties.Equals(prop1, prop2)); Assert.IsFalse(AdditionalRaceProperties.Equals(prop1, null)); Assert.IsFalse(AdditionalRaceProperties.Equals(null, prop1)); prop1.Location = "Location 2"; prop1.RaceNumber = "RaceNumber 2"; prop1.Description = "Description 2"; prop1.DateStartList = new DateTime(2021, 01, 02); prop1.DateResultList = new DateTime(2021, 02, 02); prop1.Analyzer = "Analyzer 2"; prop1.Organizer = "Organizer 2"; prop1.RaceReferee = new AdditionalRaceProperties.Person { Name = "RaceReferee 2", Club = "Club 2" }; prop1.RaceManager = new AdditionalRaceProperties.Person { Name = "RaceManager 2", Club = "Club 2" }; prop1.TrainerRepresentative = new AdditionalRaceProperties.Person { Name = "TrainerRepresentative 2", Club = "Club 2" }; prop1.CoarseName = "CoarseName 2"; prop1.CoarseLength = 200; prop1.CoarseHomologNo = "CoarseHomologNo 2"; prop1.StartHeight = 2100; prop1.FinishHeight = 2000; prop1.RaceRun1 = rrp1; prop1.RaceRun2 = rrp2; prop1.Weather = "Weather 2"; prop1.Snow = "Snow 2"; prop1.TempStart = "TempStart 2"; prop1.TempFinish = "TempFinish 2"; prop1.Location = "Location 1"; Assert.IsFalse(AdditionalRaceProperties.Equals(prop1, prop2)); prop1.RaceNumber = "RaceNumber 1"; Assert.IsFalse(AdditionalRaceProperties.Equals(prop1, prop2)); prop1.Description = "Description 1"; Assert.IsFalse(AdditionalRaceProperties.Equals(prop1, prop2)); prop1.DateStartList = new DateTime(2021, 01, 01); Assert.IsFalse(AdditionalRaceProperties.Equals(prop1, prop2)); prop1.DateResultList = new DateTime(2021, 02, 01); Assert.IsFalse(AdditionalRaceProperties.Equals(prop1, prop2)); prop1.Analyzer = "Analyzer 1"; Assert.IsFalse(AdditionalRaceProperties.Equals(prop1, prop2)); prop1.Organizer = "Organizer 1"; Assert.IsFalse(AdditionalRaceProperties.Equals(prop1, prop2)); prop1.RaceReferee = new AdditionalRaceProperties.Person { Name = "RaceReferee 1", Club = "Club 1" }; Assert.IsFalse(AdditionalRaceProperties.Equals(prop1, prop2)); prop1.RaceManager = new AdditionalRaceProperties.Person { Name = "RaceManager 1", Club = "Club 1" }; Assert.IsFalse(AdditionalRaceProperties.Equals(prop1, prop2)); prop1.TrainerRepresentative = new AdditionalRaceProperties.Person { Name = "TrainerRepresentative 1", Club = "Club 1" }; Assert.IsFalse(AdditionalRaceProperties.Equals(prop1, prop2)); prop1.CoarseName = "CoarseName 1"; Assert.IsFalse(AdditionalRaceProperties.Equals(prop1, prop2)); prop1.CoarseLength = 100; Assert.IsFalse(AdditionalRaceProperties.Equals(prop1, prop2)); prop1.CoarseHomologNo = "CoarseHomologNo 1"; Assert.IsFalse(AdditionalRaceProperties.Equals(prop1, prop2)); prop1.StartHeight = 1100; Assert.IsFalse(AdditionalRaceProperties.Equals(prop1, prop2)); prop1.FinishHeight = 1000; Assert.IsFalse(AdditionalRaceProperties.Equals(prop1, prop2)); prop1.RaceRun1 = rrp1; Assert.IsFalse(AdditionalRaceProperties.Equals(prop1, prop2)); prop1.RaceRun2 = rrp2; Assert.IsFalse(AdditionalRaceProperties.Equals(prop1, prop2)); prop1.Weather = "Weather 1"; Assert.IsFalse(AdditionalRaceProperties.Equals(prop1, prop2)); prop1.Snow = "Snow 1"; Assert.IsFalse(AdditionalRaceProperties.Equals(prop1, prop2)); prop1.TempStart = "TempStart 1"; Assert.IsFalse(AdditionalRaceProperties.Equals(prop1, prop2)); prop1.TempFinish = "TempFinish 1"; Assert.IsTrue(AdditionalRaceProperties.Equals(prop1, prop2)); }
internal string getXmlRaceInfo(RaceRun raceRun) { using (var sw = new Utf8StringWriter()) { using (var xw = XmlWriter.Create(sw, _xmlSettings)) { xw.WriteStartDocument(); xmlWriteStartElementLivetiming(xw); xw.WriteStartElement("raceinfo"); xw.WriteElementString("event", raceRun.GetRace().Description); xw.WriteElementString("slope", raceRun.GetRace().AdditionalProperties.CoarseName); xw.WriteElementString("discipline", getDisciplin(raceRun.GetRace())); xw.WriteElementString("gender", getGender(raceRun.GetRace())); xw.WriteElementString("category", _fisCategory); xw.WriteElementString("place", raceRun.GetRace().AdditionalProperties.Location); xw.WriteElementString("tempunit", "c"); xw.WriteElementString("longunit", "m"); xw.WriteElementString("speedunit", "Kmh"); xw.WriteStartElement("run"); xw.WriteAttributeString("no", raceRun.Run.ToString()); xw.WriteElementString("discipline", getDisciplin(raceRun.GetRace())); if (raceRun.GetRace().AdditionalProperties?.StartHeight > 0) { xw.WriteElementString("start", raceRun.GetRace().AdditionalProperties?.StartHeight.ToString()); } if (raceRun.GetRace().AdditionalProperties?.FinishHeight > 0) { xw.WriteElementString("finish", raceRun.GetRace().AdditionalProperties?.FinishHeight.ToString()); } if (raceRun.GetRace().AdditionalProperties?.StartHeight > 0 && raceRun.GetRace().AdditionalProperties?.FinishHeight > 0) { xw.WriteElementString("height", (raceRun.GetRace().AdditionalProperties?.StartHeight - raceRun.GetRace().AdditionalProperties?.FinishHeight).ToString()); } AdditionalRaceProperties.RaceRunProperties raceRunProperties = null; if (raceRun.Run == 1) { raceRunProperties = raceRun.GetRace().AdditionalProperties?.RaceRun1; } else if (raceRun.Run >= 2) { raceRunProperties = raceRun.GetRace().AdditionalProperties?.RaceRun2; } if (raceRunProperties != null) { if (raceRunProperties.Gates > 0) { xw.WriteElementString("gates", raceRunProperties.Gates.ToString()); } if (raceRunProperties.Turns > 0) { xw.WriteElementString("turninggates", raceRunProperties.Turns.ToString()); } if (raceRunProperties.StartTime != null && raceRunProperties.StartTime.Contains(":") && raceRunProperties.StartTime.Length == 5) { xw.WriteElementString("hour", raceRunProperties.StartTime.Substring(0, 2)); xw.WriteElementString("minute", raceRunProperties.StartTime.Substring(3, 2)); } } if (raceRun.GetRace().AdditionalProperties?.DateResultList != null) { xw.WriteElementString("day", ((DateTime)raceRun.GetRace().AdditionalProperties?.DateResultList).Day.ToString()); xw.WriteElementString("month", ((DateTime)raceRun.GetRace().AdditionalProperties?.DateResultList).Month.ToString()); xw.WriteElementString("year", ((DateTime)raceRun.GetRace().AdditionalProperties?.DateResultList).Year.ToString()); } xw.WriteStartElement("racedef"); xw.WriteEndElement(); xw.WriteEndElement(); // run xw.WriteEndElement(); // raceinfo xw.WriteEndElement(); // Livetiming xw.WriteEndDocument(); } return(sw.ToString()); } }
public void AdditionalRaceProperties_RaceRunProperties_Equals() { var cs1 = new AdditionalRaceProperties.Person { Name = "NameCS 1", Club = "Club 1" }; var p1 = new AdditionalRaceProperties.Person { Name = "Name 1", Club = "Club 1" }; var p2 = new AdditionalRaceProperties.Person { Name = "Name 2", Club = "Club 2" }; var p3 = new AdditionalRaceProperties.Person { Name = "Name 3", Club = "Club 3" }; var rrp1 = new AdditionalRaceProperties.RaceRunProperties { CoarseSetter = cs1, Forerunner1 = p1, Forerunner2 = p2, Forerunner3 = p3, Gates = 10, Turns = 9, StartTime = "10:00" }; var rrp2 = new AdditionalRaceProperties.RaceRunProperties { CoarseSetter = cs1, Forerunner1 = p1, Forerunner2 = p2, Forerunner3 = p3, Gates = 10, Turns = 9, StartTime = "10:00" }; Assert.IsTrue(AdditionalRaceProperties.RaceRunProperties.Equals(rrp1, rrp1)); Assert.IsTrue(AdditionalRaceProperties.RaceRunProperties.Equals(rrp1, rrp2)); Assert.IsTrue(AdditionalRaceProperties.RaceRunProperties.Equals(rrp2, rrp1)); Assert.IsFalse(AdditionalRaceProperties.RaceRunProperties.Equals(null, rrp1)); Assert.IsFalse(AdditionalRaceProperties.RaceRunProperties.Equals(rrp1, null)); Assert.IsTrue(AdditionalRaceProperties.RaceRunProperties.Equals(null, null)); rrp1.CoarseSetter = p1; Assert.IsFalse(AdditionalRaceProperties.RaceRunProperties.Equals(rrp1, rrp2)); rrp1.CoarseSetter = cs1; Assert.IsTrue(AdditionalRaceProperties.RaceRunProperties.Equals(rrp1, rrp2)); rrp1.Forerunner1 = cs1; rrp1.Forerunner2 = cs1; rrp1.Forerunner3 = cs1; Assert.IsFalse(AdditionalRaceProperties.RaceRunProperties.Equals(rrp1, rrp2)); rrp1.Forerunner1 = p1; Assert.IsFalse(AdditionalRaceProperties.RaceRunProperties.Equals(rrp1, rrp2)); rrp1.Forerunner2 = p2; Assert.IsFalse(AdditionalRaceProperties.RaceRunProperties.Equals(rrp1, rrp2)); rrp1.Forerunner3 = p3; Assert.IsTrue(AdditionalRaceProperties.RaceRunProperties.Equals(rrp1, rrp2)); rrp1.Gates = 9; Assert.IsFalse(AdditionalRaceProperties.RaceRunProperties.Equals(rrp1, rrp2)); rrp1.Turns = 8; Assert.IsFalse(AdditionalRaceProperties.RaceRunProperties.Equals(rrp1, rrp2)); rrp1.Gates = 10; Assert.IsFalse(AdditionalRaceProperties.RaceRunProperties.Equals(rrp1, rrp2)); rrp1.Turns = 9; Assert.IsTrue(AdditionalRaceProperties.RaceRunProperties.Equals(rrp1, rrp2)); rrp1.StartTime = "11:00"; Assert.IsFalse(AdditionalRaceProperties.RaceRunProperties.Equals(rrp1, rrp2)); rrp1.StartTime = "10:00"; Assert.IsTrue(AdditionalRaceProperties.RaceRunProperties.Equals(rrp1, rrp2)); }