refactor: Update flight schedule parser to handle multiple flight numbers

This commit is contained in:
windyboy
2024-08-02 14:37:12 +08:00
parent 8798727a0d
commit aff70c7373
2 changed files with 41 additions and 1 deletions
+1 -1
View File
@@ -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]
}
+40
View File
@@ -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"))
})
})
})