public IScheduleRecord ParseRecord(string recordString) { if (string.IsNullOrWhiteSpace(recordString)) { throw new ArgumentNullException(nameof(recordString)); } var record = new ScheduleLocationRecord { RecordIdentity = ScheduleRecordType.LT, Tiploc = recordString.Substring(2, 7).Trim(), TiplocSuffix = recordString.Substring(9, 1).Trim(), WorkingArrival = recordString.Substring(10, 5).Trim(), PublicArrival = recordString.Substring(15, 4).Trim(), Platform = recordString.Substring(19, 3).Trim(), Path = recordString.Substring(22, 3).Trim(), LocationActivityString = recordString.Substring(25, 12), }; record.LocationActivity = (LocationActivity)_enumPropertyParsers["LocationActivity"].ParseProperty(record.LocationActivityString); record.OrderTime = record.WorkingArrival; if (record.PublicArrival == "0000") { record.PublicArrival = string.Empty; } if (record.PublicDeparture == "0000") { record.PublicDeparture = string.Empty; } return(record); }
public IScheduleRecord ParseRecord(string recordString) { if (string.IsNullOrWhiteSpace(recordString)) { throw new ArgumentNullException(nameof(recordString)); } var record = new ScheduleLocationRecord { RecordIdentity = ScheduleRecordType.LI, Tiploc = recordString.Substring(2, 7).Trim(), TiplocSuffix = recordString.Substring(9, 1).Trim(), WorkingArrival = recordString.Substring(10, 5).Trim(), WorkingDeparture = recordString.Substring(15, 5).Trim(), Pass = recordString.Substring(20, 5).Trim(), PublicArrival = recordString.Substring(25, 4).Trim(), PublicDeparture = recordString.Substring(29, 4).Trim(), Platform = recordString.Substring(33, 3).Trim(), Line = recordString.Substring(36, 3).Trim(), Path = recordString.Substring(39, 3).Trim(), LocationActivityString = recordString.Substring(42, 12), EngineeringAllowance = _timingAllowanceParser.ParseTime(recordString.Substring(54, 2)), PathingAllowance = _timingAllowanceParser.ParseTime(recordString.Substring(56, 2)), PerformanceAllowance = _timingAllowanceParser.ParseTime(recordString.Substring(58, 2)) }; record.LocationActivity = (LocationActivity)_enumPropertyParsers["LocationActivity"].ParseProperty(record.LocationActivityString); record.OrderTime = !string.IsNullOrWhiteSpace(record.Pass) ? record.Pass : record.WorkingDeparture; if (record.PublicArrival == "0000") { record.PublicArrival = string.Empty; } if (record.PublicDeparture == "0000") { record.PublicDeparture = string.Empty; } return(record); }
public void returns_expected_result() { var recordParser = BuildParser(); var recordToParse = "LTWSTBRYW 1323 13253 TF "; var expectedResult = new ScheduleLocationRecord { RecordIdentity = ScheduleRecordType.LT, Tiploc = "WSTBRYW", WorkingArrival = "1323", PublicArrival = "1325", Platform = "3", LocationActivity = LocationActivity.TF, LocationActivityString = "TF ", OrderTime = "1323" }; var result = recordParser.ParseRecord(recordToParse); Assert.AreEqual(expectedResult, result); }
public void returns_expected_result() { var recordParser = BuildParser(); var recordToParse = "LOSDON 1242 12422 TB "; var expectedResult = new ScheduleLocationRecord { RecordIdentity = ScheduleRecordType.LO, Tiploc = "SDON", WorkingDeparture = "1242", PublicDeparture = "1242", Platform = "2", LocationActivity = LocationActivity.TB, LocationActivityString = "TB ", OrderTime = "1242" }; var result = recordParser.ParseRecord(recordToParse); Assert.AreEqual(expectedResult, result); }
public void returns_expected_result_pass() { var recordParser = BuildParser(); var recordToParse = "LIBRDFDJN 1314 00000000 "; var expectedResult = new ScheduleLocationRecord { RecordIdentity = ScheduleRecordType.LI, Tiploc = "BRDFDJN", Pass = "******", OrderTime = "1314", LocationActivityString = " ", PublicArrival = string.Empty, PublicDeparture = string.Empty, WorkingDeparture = string.Empty, WorkingArrival = string.Empty }; var result = recordParser.ParseRecord(recordToParse); Assert.AreEqual(expectedResult, result); }
public void returns_expected_result_arrival_and_departure() { var recordParser = BuildParser(); var recordToParse = "LIMELKSHM 1307H1308 13081308 T "; var expectedResult = new ScheduleLocationRecord { RecordIdentity = ScheduleRecordType.LI, Tiploc = "MELKSHM", WorkingArrival = "1307H", PublicArrival = "1308", WorkingDeparture = "1308", PublicDeparture = "1308", LocationActivity = LocationActivity.T, LocationActivityString = "T ", OrderTime = "1308", Pass = string.Empty }; var result = recordParser.ParseRecord(recordToParse); Assert.AreEqual(expectedResult, result); }