public void Three_Verticals() { TrackLayout.AddTrack(1, 1); TrackLayout.AddTrack(1, 2); TrackLayout.AddTrack(1, 3); TrackLayout.AddTrack(1, 4); TrackLayout.AddTrack(1, 5); TrackLayout.AddTrack(2, 2); TrackLayout.AddTrack(2, 3); TrackLayout.AddTrack(2, 4); TrackLayout.AddTrack(3, 3); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 1).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 2).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 3).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 4).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 5).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 2).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 3).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 4).Direction); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(3, 3).Direction); }
public void TwoCrosses() { TrackLayout.AddTrack(1, 2); TrackLayout.AddTrack(2, 2); TrackLayout.AddTrack(3, 2); TrackLayout.AddTrack(2, 1); TrackLayout.AddTrack(1, 4); TrackLayout.AddTrack(2, 4); TrackLayout.AddTrack(3, 4); TrackLayout.AddTrack(2, 5); TrackLayout.AddTrack(2, 3); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 1).Direction); Assert.Equal(TrackDirection.Cross, TrackLayout.GetTrackAt(2, 2).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 3).Direction); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(1, 2).Direction); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(3, 2).Direction); Assert.Equal(TrackDirection.Cross, TrackLayout.GetTrackAt(2, 4).Direction); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(1, 4).Direction); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(3, 4).Direction); Assert.True(TrackLayout.GetTrackAt(2, 3).Happy); }
[TestInitialize] public void TestInitialize() { TestDataFactory.Init(); layout = TestDataFactory.Layout(); stretch = layout.TrackStretches.First(); train = TestDataFactory.CreateTrain1(); target = new TrackStretchCoordinator(stretch); }
public static TrackLayout CreateFromTrackCollection(TrackCollection tc) { HashSet <TrackSectionSerializer> sectionList = new HashSet <TrackSectionSerializer>(); HashSet <TrackJunctionSerializer> junctionList = new HashSet <TrackJunctionSerializer>(); for (int i = 0; i < tc.sections.Length; i++) { if (tc.sections[i] != null) { TrackJunction j = tc.sections[i] as TrackJunction; if (j != null) { junctionList.Add(new TrackJunctionSerializer(j)); } else { sectionList.Add(new TrackSectionSerializer(tc.sections[i])); } } } TrackLayout layout = ScriptableObject.CreateInstance <TrackLayout>(); layout.trackSections = new TrackSectionSerializer[sectionList.Count]; sectionList.CopyTo(layout.trackSections); layout.trackJunctions = new TrackJunctionSerializer[junctionList.Count]; junctionList.CopyTo(layout.trackJunctions); return(layout); }
public void Vertical() { TrackLayout.AddTrack(1, 1); TrackLayout.AddTrack(1, 2); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 1).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 2).Direction); }
public void Horizontal() { TrackLayout.AddTrack(1, 1); TrackLayout.AddTrack(2, 1); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(1, 1).Direction); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(2, 1).Direction); }
public void Vertical_TrainMovement(float startAngle, int startColumn, int startRow, int endColumn, int endRow) { TrackLayout.AddTrack(1, 1); TrackLayout.AddTrack(1, 2); TrackLayout.AddTrack(1, 3); AssertTrainMovement(startAngle, startColumn, startRow, endColumn, endRow); }
[TestMethod] public void AddingSameStationTwiceThrows() { var target = new TrackLayout("Test"); var station = TestDataFactory.CreateStation1(); target.Add(station); target.Add(station); }
public void LeftDown_TrainMovement(float startAngle, int startColumn, int startRow, int endColumn, int endRow) { TrackLayout.AddTrack(1, 1); TrackLayout.AddTrack(2, 1); TrackLayout.AddTrack(2, 2); AssertTrainMovement(startAngle, startColumn, startRow, endColumn, endRow); }
public void Horizontal_TrainMovement(float startAngle, int startColumn, int startRow, int endColumn, int endRow) { TrackLayout.AddTrack(1, 1); TrackLayout.AddTrack(2, 1); TrackLayout.AddTrack(3, 1); AssertTrainMovement(startAngle, startColumn, startRow, endColumn, endRow); }
public void MovementTest_FullTrackLoop_FourLoopCorners(float initialTrainAngle) { var trackLayout = new TrackLayout(); var board = new GameBoard(trackLayout, null, null); trackLayout.AddTrack(3, 2); trackLayout.AddTrack(4, 2); trackLayout.AddTrack(5, 2); trackLayout.AddTrack(5, 1); trackLayout.AddTrack(4, 1); trackLayout.AddTrack(4, 3); trackLayout.AddTrack(4, 4); trackLayout.AddTrack(4, 5); trackLayout.AddTrack(5, 5); trackLayout.AddTrack(5, 4); trackLayout.AddTrack(3, 4); trackLayout.AddTrack(2, 4); trackLayout.AddTrack(1, 4); trackLayout.AddTrack(1, 5); trackLayout.AddTrack(2, 5); trackLayout.AddTrack(2, 3); // Skip until end! trackLayout.AddTrack(2, 1); trackLayout.AddTrack(1, 1); trackLayout.AddTrack(1, 2); // Finish it off trackLayout.AddTrack(2, 2); board.AddTrain(3, 2); var train = (Train)board.GetMovables().Single(); float distance = (float)(12 * StraightTrackDistance + 12 * CornerTrackDistance); train.Angle = initialTrainAngle; train.ForceSpeed(distance / _movementSteps / Train.SpeedScaleModifier); Assert.Equal(3, train.Column); Assert.Equal(2, train.Row); Assert.Equal(0.5f, train.RelativeLeft, MovementPrecision); Assert.Equal(0.5f, train.RelativeTop, MovementPrecision); Assert.Equal(initialTrainAngle, train.Angle, MovementPrecision); // Move it! for (int i = 0; i < _movementSteps; i++) { board.GameLoopStep(); } Assert.Equal(3, train.Column); Assert.Equal(2, train.Row); Assert.Equal(0.5f, train.RelativeLeft, MovementPrecision); Assert.Equal(0.5f, train.RelativeTop, MovementPrecision); Assert.Equal(initialTrainAngle, train.Angle, MovementPrecision); }
public static TrackLayout Layout() { var layout = new TrackLayout("Test"); foreach (var s in Stations) layout.Add(s); var timetableStretch = new TimetableStretch("1"); var ss = Stations.ToArray(); timetableStretch.Add(layout.Add(ss[0].Exit("Vänster"), ss[1].Exit("Höger"), 10)); timetableStretch.Add(layout.Add(ss[1].Exit("Vänster"), ss[2].Exit("Höger"), 10)); layout.Add(timetableStretch); return layout; }
public void RightDown() { TrackLayout.AddTrack(2, 1); TrackLayout.AddTrack(1, 1); TrackLayout.AddTrack(1, 2); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(2, 1).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 2).Direction); Assert.Equal(TrackDirection.RightDown, TrackLayout.GetTrackAt(1, 1).Direction); }
static TrackLayout GetLayout() { var layout = new TrackLayout("Test"); var stations = TestDataFactory.Stations.ToArray(); foreach (var station in stations) { layout.Add(station); } layout.Add(stations[0].Exit("Vänster"), stations[1].Exit("Höger"), 10); layout.Add(stations[2].Exit("Höger"), stations[1].Exit("Vänster"), 10); return layout; }
public void LeftUp() { TrackLayout.AddTrack(1, 2); TrackLayout.AddTrack(2, 1); TrackLayout.AddTrack(2, 2); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(1, 2).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 1).Direction); Assert.Equal(TrackDirection.LeftUp, TrackLayout.GetTrackAt(2, 2).Direction); }
public static StationExit GetStationExit(this TrackLayout me, string stationSignature, string exitName) { var station = me.Stations.Where(t => t.Signature == stationSignature).SingleOrDefault(); if (station == null) { throw new ArgumentOutOfRangeException("Station " + stationSignature + " does not exits in layout " + me.Name + "."); } var result = new StationExit(exitName); station.Add(result); return(result); }
private static TrackLayout GetTestLayout(string name) { var layout = new TrackLayout(name); var stations = TestDataFactory.Stations.ToArray(); foreach (var station in stations) { layout.Add(station); } layout.Add(stations[0].Exit("Vänster"), stations[1].Exit("Höger"), 10); layout.Add(stations[2].Exit("Höger"), stations[1].Exit("Vänster"), 10); return(layout); }
public void SidewaysHairpin() { TrackLayout.AddTrack(1, 2); TrackLayout.AddTrack(2, 2); TrackLayout.AddTrack(3, 2); TrackLayout.AddTrack(3, 1); TrackLayout.AddTrack(2, 1); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(1, 2).Direction); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(2, 2).Direction); Assert.Equal(TrackDirection.LeftUp, TrackLayout.GetTrackAt(3, 2).Direction); Assert.Equal(TrackDirection.LeftDown, TrackLayout.GetTrackAt(3, 1).Direction); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(2, 1).Direction); }
public void VerticalHairpin() { TrackLayout.AddTrack(1, 3); TrackLayout.AddTrack(1, 2); TrackLayout.AddTrack(1, 1); TrackLayout.AddTrack(2, 1); TrackLayout.AddTrack(2, 2); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 3).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 2).Direction); Assert.Equal(TrackDirection.RightDown, TrackLayout.GetTrackAt(1, 1).Direction); Assert.Equal(TrackDirection.LeftDown, TrackLayout.GetTrackAt(2, 1).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 2).Direction); }
public void CrossMiddleLast() { TrackLayout.AddTrack(1, 2); TrackLayout.AddTrack(3, 2); TrackLayout.AddTrack(2, 1); TrackLayout.AddTrack(2, 3); TrackLayout.AddTrack(2, 2); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 1).Direction); Assert.Equal(TrackDirection.Cross, TrackLayout.GetTrackAt(2, 2).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 3).Direction); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(1, 2).Direction); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(3, 2).Direction); }
private static IEnumerable <Message> GetStations(TrackLayout layout, Excel.Workbook book) { var messages = new List <Message>(); Excel.Worksheet sheet = book.Worksheets["StationTrack"] as Excel.Worksheet; var r = 1; Station current = null; var loop = true; while (loop) { var row = (Array)(sheet.get_Range(Cell("A", r), Cell("G", r)).Cells.Value); var col1 = row.Value(1)?.ToString(); if (col1 == null) { break; } if (col1 != "Name") { var rowType = row.Value(6).ToUpperInvariant(); switch (rowType) { case "STATION": if (current != null) { layout.Add(current); } current = new Station(row.Value(5), row.Value(1)); break; case "TRACK": current.Add(new StationTrack(row.Value(3))); break; default: loop = false; break; } } r++; } if (current != null) { layout.Add(current); } return(messages); }
private static IEnumerable <Message> GetStretches(TrackLayout layout, Excel.Workbook book) { var messages = new List <Message>(); Excel.Worksheet sheet = book.Worksheets["Routes"] as Excel.Worksheet; for (var r = 2; ; r++) { var row = (Array)sheet.get_Range(Cell("A", r), Cell("I", r)).Cells.Value; if (row.GetValue(1, 1) == null) { break; } else { var timetableStretchNumber = row.Value(1); var tracksCount = int.Parse(row.Value(8), CultureInfo.InvariantCulture); var fromName = row.Value(3); var toName = row.Value(5); var distance = double.Parse(row.Value(9).Replace(",", "."), NumberStyles.Float, CultureInfo.InvariantCulture); var fromStation = layout.Station(fromName); if (fromStation.IsNone) { messages.Add(Message.Error(fromStation.Message)); continue; } var fromExit = new StationExit(toName); fromStation.Value.Add(fromExit); var toStation = layout.Station(toName); if (toStation.IsNone) { messages.Add(Message.Error(toStation.Message)); } else { var toExit = new StationExit(fromName); toStation.Value.Add(toExit); var addedStretch = layout.Add(fromExit, toExit, distance, tracksCount); if (!layout.HasTimetableStretch(timetableStretchNumber)) { layout.Add(new TimetableStretch(timetableStretchNumber)); } layout.TimetableStretch(timetableStretchNumber).Add(addedStretch); } } } return(messages); }
public static TrackLayout Layout() { var layout = new TrackLayout("Test"); foreach (var s in Stations) { layout.Add(s); } var timetableStretch = new TimetableStretch("1"); var ss = Stations.ToArray(); timetableStretch.Add(layout.Add(ss[0].Exit("Vänster"), ss[1].Exit("Höger"), 10)); timetableStretch.Add(layout.Add(ss[1].Exit("Vänster"), ss[2].Exit("Höger"), 10)); layout.Add(timetableStretch); return(layout); }
public void Happiness() { TrackLayout.AddTrack(1, 1); Assert.False(TrackLayout.GetTrackAt(1, 1).Happy); TrackLayout.AddTrack(1, 2); Assert.False(TrackLayout.GetTrackAt(1, 1).Happy); Assert.False(TrackLayout.GetTrackAt(1, 2).Happy); TrackLayout.AddTrack(1, 3); Assert.False(TrackLayout.GetTrackAt(1, 1).Happy); Assert.True(TrackLayout.GetTrackAt(1, 2).Happy); Assert.False(TrackLayout.GetTrackAt(1, 3).Happy); }
public void LeftAngleWithCircleOnTop() { TrackLayout.AddTrack(1, 3); TrackLayout.AddTrack(2, 3); TrackLayout.AddTrack(2, 4); TrackLayout.AddTrack(1, 1); TrackLayout.AddTrack(2, 1); TrackLayout.AddTrack(2, 2); TrackLayout.AddTrack(1, 2); Assert.Equal(TrackDirection.RightUp, TrackLayout.GetTrackAt(1, 3).Direction); Assert.Equal(TrackDirection.LeftDown, TrackLayout.GetTrackAt(2, 3).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 4).Direction); Assert.Equal(TrackDirection.RightDown, TrackLayout.GetTrackAt(1, 1).Direction); Assert.Equal(TrackDirection.LeftDown, TrackLayout.GetTrackAt(2, 1).Direction); Assert.Equal(TrackDirection.LeftUp, TrackLayout.GetTrackAt(2, 2).Direction); Assert.Equal(TrackDirection.RightUpDown, TrackLayout.GetTrackAt(1, 2).Direction); }
public void LeftRightDown_DrawOver() { TrackLayout.AddTrack(1, 1); TrackLayout.AddTrack(2, 1); TrackLayout.AddTrack(3, 1); TrackLayout.AddTrack(2, 2); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(1, 1).Direction); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(2, 1).Direction); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(3, 1).Direction); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(2, 2).Direction); TrackLayout.AddTrack(2, 1); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(1, 1).Direction); Assert.Equal(TrackDirection.RightDown_LeftDown, TrackLayout.GetTrackAt(2, 1).Direction); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(3, 1).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 2).Direction); }
public void Two_Verticals() { TrackLayout.AddTrack(1, 1); TrackLayout.AddTrack(1, 2); TrackLayout.AddTrack(1, 3); TrackLayout.AddTrack(1, 4); TrackLayout.AddTrack(2, 2); TrackLayout.AddTrack(2, 3); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 1).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 2).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 3).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(1, 4).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 2).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 3).Direction); }
public void LeftRightUp_DrawOver() { TrackLayout.AddTrack(1, 3); TrackLayout.AddTrack(2, 3); TrackLayout.AddTrack(3, 3); TrackLayout.AddTrack(2, 2); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(1, 3).Direction); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(2, 3).Direction); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(3, 3).Direction); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(2, 2).Direction); TrackLayout.AddTrack(2, 3); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(1, 3).Direction); Assert.Equal(TrackDirection.LeftRightUp, TrackLayout.GetTrackAt(2, 3).Direction); Assert.Equal(TrackDirection.Horizontal, TrackLayout.GetTrackAt(3, 3).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 2).Direction); }
public void MovementTest_FullTrackLoop_3x3Square(float initialTrainAngle) { var trackLayout = new TrackLayout(); var board = new GameBoard(trackLayout, null, null); trackLayout.AddTrack(1, 1); trackLayout.AddTrack(2, 1); trackLayout.AddTrack(3, 1); trackLayout.AddTrack(3, 2); trackLayout.AddTrack(3, 3); trackLayout.AddTrack(2, 3); trackLayout.AddTrack(1, 3); trackLayout.AddTrack(1, 2); board.AddTrain(2, 1); var train = (Train)board.GetMovables().Single(); float distance = (float)(4 * StraightTrackDistance + 4 * CornerTrackDistance); // Train speed & angle train.ForceSpeed(distance / _movementSteps / Train.SpeedScaleModifier); train.SetAngle(initialTrainAngle); Assert.Equal(2, train.Column); Assert.Equal(1, train.Row); Assert.Equal(0.5f, train.RelativeLeft, MovementPrecision); Assert.Equal(0.5f, train.RelativeTop, MovementPrecision); Assert.Equal(initialTrainAngle, train.Angle, MovementPrecision); // Move it! for (int i = 0; i < _movementSteps; i++) { board.GameLoopStep(); } Assert.Equal(2, train.Column); Assert.Equal(1, train.Row); Assert.Equal(0.5f, train.RelativeLeft, MovementPrecision); Assert.Equal(0.5f, train.RelativeTop, MovementPrecision); Assert.Equal(initialTrainAngle, train.Angle, MovementPrecision); }
public void Trident() { TrackLayout.AddTrack(1, 1); TrackLayout.AddTrack(1, 2); TrackLayout.AddTrack(2, 2); TrackLayout.AddTrack(3, 2); TrackLayout.AddTrack(3, 1); TrackLayout.AddTrack(2, 3); TrackLayout.AddTrack(2, 2); TrackLayout.AddTrack(2, 1); Assert.Equal(TrackDirection.RightDown, TrackLayout.GetTrackAt(1, 1).Direction); Assert.Equal(TrackDirection.RightUp, TrackLayout.GetTrackAt(1, 2).Direction); Assert.Equal(TrackDirection.Cross, TrackLayout.GetTrackAt(2, 2).Direction); Assert.Equal(TrackDirection.LeftUp, TrackLayout.GetTrackAt(3, 2).Direction); Assert.Equal(TrackDirection.LeftDown, TrackLayout.GetTrackAt(3, 1).Direction); Assert.Equal(TrackDirection.Vertical, TrackLayout.GetTrackAt(2, 3).Direction); Assert.Equal(TrackDirection.LeftRightDown, TrackLayout.GetTrackAt(2, 1).Direction); }
public static void PopulateTrackCollection(TrackLayout layout, TrackCollection target) { target.Clear(); foreach (TrackSectionSerializer serializedTrack in layout.trackSections) { TrackSection track = serializedTrack.ToTrackSection(); if (!target.Add(track, track.index)) { Debug.LogError("Could not add track section to collection at index " + track.index); } } foreach (TrackJunctionSerializer serializedJunction in layout.trackJunctions) { TrackJunction track = serializedJunction.ToTrackJunction(); if (!target.Add(track, track.index)) { Debug.LogError("Could not add track junction to collection at index " + track.index); } } }
public (Maybe <TrackLayout> item, IEnumerable <Message> messages) GetLayout(string name) { var messages = new List <Message>(); var result = new TrackLayout(name); var app = Excel; Excel.Workbook book = null; try { var fileName = GetFullFilename(name); book = app.Workbooks.Open(fileName); messages.AddRange(GetStations(result, book)); if (messages.CanContinue()) { messages.AddRange(GetStretches(result, book)); } } finally { book?.Close(false, GetFullFilename(name)); } return(Maybe <TrackLayout> .NoneIfError(result, messages.HasStoppingErrors()), messages); }
public override string ToString() { var builder = new System.Text.StringBuilder(); builder.AppendFormat("{0} {{", nameof(SessionInfo)).AppendLine(); builder.AppendFormat(" {0} = {1}", nameof(Version), Version.ToString()).AppendLine(); builder.AppendFormat(" {0} = {1}", nameof(MessageSessionIndex), MessageSessionIndex.ToString()).AppendLine(); builder.AppendFormat(" {0} = {1}", nameof(ServerSessionIndex), ServerSessionIndex.ToString()).AppendLine(); builder.AppendFormat(" {0} = {1}", nameof(SessionCount), SessionCount.ToString()).AppendLine(); builder.AppendFormat(" {0} = {1}", nameof(ServerName), ServerName.ToString()).AppendLine(); builder.AppendFormat(" {0} = {1}", nameof(TrackName), TrackName.ToString()).AppendLine(); builder.AppendFormat(" {0} = {1}", nameof(TrackLayout), TrackLayout.ToString()).AppendLine(); builder.AppendFormat(" {0} = {1}", nameof(SessionName), SessionName.ToString()).AppendLine(); builder.AppendFormat(" {0} = {1}", nameof(SessionType), SessionType.ToString()).AppendLine(); builder.AppendFormat(" {0} = {1}", nameof(SessionLengthLaps), SessionLengthLaps.ToString()).AppendLine(); builder.AppendFormat(" {0} = {1}", nameof(SessionLengthMinutes), SessionLengthMinutes.ToString()).AppendLine(); builder.AppendFormat(" {0} = {1}", nameof(WaitTime), WaitTime.ToString()).AppendLine(); builder.AppendFormat(" {0} = {1}", nameof(AmbientTemperature), AmbientTemperature.ToString()).AppendLine(); builder.AppendFormat(" {0} = {1}", nameof(RoadTemperature), RoadTemperature.ToString()).AppendLine(); builder.AppendFormat(" {0} = {1}", nameof(Weather), Weather.ToString()).AppendLine(); builder.AppendFormat(" {0} = {1}", nameof(Elapsed), Elapsed.ToString()).AppendLine(); builder.AppendFormat("}}").AppendLine(); return(builder.ToString()); }