From aff70c7373ba0527abfe7b7a6c92d407bf586a11 Mon Sep 17 00:00:00 2001 From: windyboy Date: Fri, 2 Aug 2024 14:37:12 +0800 Subject: [PATCH] refactor: Update flight schedule parser to handle multiple flight numbers --- internal/parsers/schedule_parser.go | 2 +- internal/parsers/schedule_parser_test.go | 40 ++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/internal/parsers/schedule_parser.go b/internal/parsers/schedule_parser.go index 93123b5..ee0b661 100644 --- a/internal/parsers/schedule_parser.go +++ b/internal/parsers/schedule_parser.go @@ -80,7 +80,7 @@ func ParseWithDef(line string, parserDef *LineParser) *domain.ScheduleLine { case Task: flightSchedule.Task = data[Task] case FlightNumber: - flightSchedule.FlightNumber = append(flightSchedule.FlightNumber, data[FlightNumber]) + flightSchedule.FlightNumber = getFlightNumbers(data[FlightNumber]) case Register: flightSchedule.AircraftReg = data[Register] } diff --git a/internal/parsers/schedule_parser_test.go b/internal/parsers/schedule_parser_test.go index 204ac95..d04d8cc 100644 --- a/internal/parsers/schedule_parser_test.go +++ b/internal/parsers/schedule_parser_test.go @@ -506,4 +506,44 @@ var _ = Describe("Parse Line with PreDef", func() { }) }) + Context("CZ", func() { + It("83. CZ3301/2 B2823 B752 CAN0135 TSN0535 CAN", func() { + lineText := "83. CZ3301/2 B2823 B752 CAN0135 TSN0535 CAN" + def := FindDef("CZ") + Expect(def).NotTo(BeNil()) + schedule := ParseWithDef(lineText, def) + Expect(schedule).NotTo(BeNil()) + Expect(schedule.Index).To(Equal("83.")) + Expect(len(schedule.FlightNumber)).To(Equal(2)) + Expect(schedule.FlightNumber).To(ContainElement("CZ3301")) + Expect(schedule.FlightNumber).To(ContainElement("CZ3302")) + Expect(schedule.AircraftReg).To(Equal("B2823")) + Expect(len(schedule.Waypoints)).To(Equal(3)) + Expect(schedule.Waypoints[0].Airport).To(Equal("CAN")) + Expect(schedule.Waypoints[0].DepartureTime).To(Equal("0135")) + Expect(schedule.Waypoints[1].Airport).To(Equal("TSN")) + Expect(schedule.Waypoints[1].DepartureTime).To(Equal("0535")) + Expect(schedule.Waypoints[2].Airport).To(Equal("CAN")) + }) + + It("83. CZ3301/2 B2823 B752 CAN0135 TSN0535 CAN", func() { + lineText := "83. CZ3301/2 B2823 B752 CAN0135 TSN0535 CAN" + def := FindDef("CZ") + Expect(def).NotTo(BeNil()) + schedule := ParseWithDef(lineText, def) + Expect(schedule).NotTo(BeNil()) + Expect(schedule.Index).To(Equal("83.")) + Expect(len(schedule.FlightNumber)).To(Equal(2)) + Expect(schedule.FlightNumber).To(ContainElement("CZ3301")) + Expect(schedule.FlightNumber).To(ContainElement("CZ3302")) + Expect(schedule.AircraftReg).To(Equal("B2823")) + Expect(len(schedule.Waypoints)).To(Equal(3)) + Expect(schedule.Waypoints[0].Airport).To(Equal("CAN")) + Expect(schedule.Waypoints[0].DepartureTime).To(Equal("0135")) + Expect(schedule.Waypoints[1].Airport).To(Equal("TSN")) + Expect(schedule.Waypoints[1].DepartureTime).To(Equal("0535")) + Expect(schedule.Waypoints[2].Airport).To(Equal("CAN")) + }) + }) + })