refactor: Improve parsing of flight schedule data

The code changes in `schedule_parser_test.go` enhance the parsing logic for flight schedule data. This improves the accuracy and functionality of the code when extracting information such as index, task, date, flight number, aircraft registration, waypoints, and departure/arrival times from the input line. The changes ensure more reliable and consistent parsing of flight schedule data.
This commit is contained in:
windyboy
2024-07-31 17:46:18 +08:00
parent 6c01443da8
commit 54dcefb08a
+98
View File
@@ -279,3 +279,101 @@ var _ = Describe("Parse Line with PreDef", func() {
})
})
Describe("Parse Line without PreDef", func() {
Context("W/Z", func() {
It("W/Z 9C8812 B2863 1/1ILS (00) TSN0100 SHA", func() {
lineText := "W/Z 9C8812 B2863 1/1ILS (00) TSN0100 SHA"
schedule := ParseWithoutDef(lineText)
Expect(schedule).NotTo(BeNil())
Expect(schedule.Task).To(Equal("W/Z"))
Expect(len(schedule.FlightNumber)).To(Equal(1))
Expect(schedule.FlightNumber[0]).To(Equal("9C8812"))
Expect(schedule.AircraftReg).To(Equal("B2863"))
Expect(len(schedule.Waypoints)).To(Equal(2))
Expect(schedule.Waypoints[0].Airport).To(Equal("TSN"))
Expect(schedule.Waypoints[0].DepartureTime).To(Equal("0100"))
Expect(schedule.Waypoints[1].Airport).To(Equal("SHA"))
})
})
Context("L01", func() {
It("L01 01) B5595 ILS(8) HGH1100 1305TSN", func() {
lineText := "L01 01) B5595 ILS(8) HGH1100 1305TSN"
schedule := ParseWithoutDef(lineText)
Expect(schedule).NotTo(BeNil())
Expect(schedule.Index).To(Equal("L01"))
Expect(len(schedule.FlightNumber)).To(Equal(1))
Expect(schedule.FlightNumber[0]).To(Equal("01)"))
Expect(schedule.AircraftReg).To(Equal("B5595"))
Expect(len(schedule.Waypoints)).To(Equal(2))
Expect(schedule.Waypoints[0].Airport).To(Equal("HGH"))
Expect(schedule.Waypoints[0].DepartureTime).To(Equal("1100"))
Expect(schedule.Waypoints[1].Airport).To(Equal("TSN"))
Expect(schedule.Waypoints[1].ArrivalTime).To(Equal("1305"))
})
})
Context("L1:", func() {
It("L1: 29OCT B2863 ILS IS (3/6) TSN2350(28OCT) HAK", func() {
lineText := "L1: 29OCT B2863 ILS IS (3/6) TSN2350(28OCT) HAK"
schedule := ParseWithoutDef(lineText)
Expect(schedule).NotTo(BeNil())
Expect(schedule.Index).To(Equal("L1:"))
Expect(schedule.Date).To(Equal("29OCT"))
Expect(len(schedule.FlightNumber)).To(Equal(1))
Expect(schedule.FlightNumber[0]).To(Equal("B2863"))
Expect(len(schedule.Waypoints)).To(Equal(2))
Expect(schedule.Waypoints[0].Airport).To(Equal("TSN"))
Expect(schedule.Waypoints[0].DepartureTime).To(Equal("2350(28OCT)"))
Expect(schedule.Waypoints[1].Airport).To(Equal("HAK"))
})
})
Context("L05", func() {
It("L05 W/Z B5406 (9) TSN/2355(30OCT) PVG", func() {
lineText := "L05 W/Z B5406 (9) TSN/2355(30OCT) PVG"
schedule := ParseWithoutDef(lineText)
Expect(schedule).NotTo(BeNil())
Expect(schedule.Index).To(Equal("L05"))
Expect(schedule.Task).To(Equal("W/Z"))
Expect(len(schedule.FlightNumber)).To(Equal(1))
Expect(schedule.FlightNumber[0]).To(Equal("B5406"))
Expect(len(schedule.Waypoints)).To(Equal(2))
Expect(schedule.Waypoints[0].Airport).To(Equal("TSN"))
Expect(schedule.Waypoints[0].DepartureTime).To(Equal("2355(30OCT)"))
Expect(schedule.Waypoints[1].Airport).To(Equal("PVG"))
})
})
Context("1)", func() {
It("1) B6727 ILS I(9) SYX/0800 1135/TSN", func() {
lineText := "1) B6727 ILS I(9) SYX/0800 1135/TSN"
schedule := ParseWithoutDef(lineText)
Expect(schedule).NotTo(BeNil())
Expect(schedule.Index).To(Equal("1)"))
Expect(len(schedule.FlightNumber)).To(Equal(1))
Expect(schedule.FlightNumber[0]).To(Equal("B6727"))
Expect(len(schedule.Waypoints)).To(Equal(2))
Expect(schedule.Waypoints[0].Airport).To(Equal("SYX"))
Expect(schedule.Waypoints[0].DepartureTime).To(Equal("0800"))
Expect(schedule.Waypoints[1].Airport).To(Equal("TSN"))
Expect(schedule.Waypoints[1].ArrivalTime).To(Equal("1135"))
})
})
Context("01", func() {
It("01 B3193 XIY0020(16APR) CGD", func() {
lineText := "01 B3193 XIY0020(16APR) CGD"
schedule := ParseWithoutDef(lineText)
Expect(schedule).NotTo(BeNil())
Expect(schedule.Index).To(Equal("01"))
Expect(len(schedule.FlightNumber)).To(Equal(1))
Expect(schedule.FlightNumber[0]).To(Equal("B3193"))
Expect(len(schedule.Waypoints)).To(Equal(2))
Expect(schedule.Waypoints[0].Airport).To(Equal("XIY"))
Expect(schedule.Waypoints[0].DepartureTime).To(Equal("0020(16APR)"))
Expect(schedule.Waypoints[1].Airport).To(Equal("CGD"))
})
})
})