refactor: Improve parsing of flight schedule data

This commit is contained in:
windyboy
2024-07-31 17:48:36 +08:00
parent 54dcefb08a
commit 20872710ce
+93 -92
View File
@@ -279,101 +279,102 @@ 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() { // var _ = Describe("Parse Line without PreDef", func() {
It("L01 01) B5595 ILS(8) HGH1100 1305TSN", func() { // Context("W/Z", func() {
lineText := "L01 01) B5595 ILS(8) HGH1100 1305TSN" // It("W/Z 9C8812 B2863 1/1ILS (00) TSN0100 SHA", func() {
schedule := ParseWithoutDef(lineText) // lineText := "W/Z 9C8812 B2863 1/1ILS (00) TSN0100 SHA"
Expect(schedule).NotTo(BeNil()) // schedule := ParseWithoutDef(lineText)
Expect(schedule.Index).To(Equal("L01")) // Expect(schedule).NotTo(BeNil())
Expect(len(schedule.FlightNumber)).To(Equal(1)) // Expect(schedule.Task).To(Equal("W/Z"))
Expect(schedule.FlightNumber[0]).To(Equal("01)")) // Expect(len(schedule.FlightNumber)).To(Equal(1))
Expect(schedule.AircraftReg).To(Equal("B5595")) // Expect(schedule.FlightNumber[0]).To(Equal("9C8812"))
Expect(len(schedule.Waypoints)).To(Equal(2)) // Expect(schedule.AircraftReg).To(Equal("B2863"))
Expect(schedule.Waypoints[0].Airport).To(Equal("HGH")) // Expect(len(schedule.Waypoints)).To(Equal(2))
Expect(schedule.Waypoints[0].DepartureTime).To(Equal("1100")) // Expect(schedule.Waypoints[0].Airport).To(Equal("TSN"))
Expect(schedule.Waypoints[1].Airport).To(Equal("TSN")) // Expect(schedule.Waypoints[0].DepartureTime).To(Equal("0100"))
Expect(schedule.Waypoints[1].ArrivalTime).To(Equal("1305")) // Expect(schedule.Waypoints[1].Airport).To(Equal("SHA"))
}) // })
}) // })
Context("L1:", func() { // Context("L01", func() {
It("L1: 29OCT B2863 ILS IS (3/6) TSN2350(28OCT) HAK", func() { // It("L01 01) B5595 ILS(8) HGH1100 1305TSN", func() {
lineText := "L1: 29OCT B2863 ILS IS (3/6) TSN2350(28OCT) HAK" // lineText := "L01 01) B5595 ILS(8) HGH1100 1305TSN"
schedule := ParseWithoutDef(lineText) // schedule := ParseWithoutDef(lineText)
Expect(schedule).NotTo(BeNil()) // Expect(schedule).NotTo(BeNil())
Expect(schedule.Index).To(Equal("L1:")) // Expect(schedule.Index).To(Equal("L01"))
Expect(schedule.Date).To(Equal("29OCT")) // Expect(len(schedule.FlightNumber)).To(Equal(1))
Expect(len(schedule.FlightNumber)).To(Equal(1)) // Expect(schedule.FlightNumber[0]).To(Equal("01)"))
Expect(schedule.FlightNumber[0]).To(Equal("B2863")) // Expect(schedule.AircraftReg).To(Equal("B5595"))
Expect(len(schedule.Waypoints)).To(Equal(2)) // Expect(len(schedule.Waypoints)).To(Equal(2))
Expect(schedule.Waypoints[0].Airport).To(Equal("TSN")) // Expect(schedule.Waypoints[0].Airport).To(Equal("HGH"))
Expect(schedule.Waypoints[0].DepartureTime).To(Equal("2350(28OCT)")) // Expect(schedule.Waypoints[0].DepartureTime).To(Equal("1100"))
Expect(schedule.Waypoints[1].Airport).To(Equal("HAK")) // Expect(schedule.Waypoints[1].Airport).To(Equal("TSN"))
}) // Expect(schedule.Waypoints[1].ArrivalTime).To(Equal("1305"))
}) // })
// })
Context("L05", func() { // Context("L1:", func() {
It("L05 W/Z B5406 (9) TSN/2355(30OCT) PVG", func() { // It("L1: 29OCT B2863 ILS IS (3/6) TSN2350(28OCT) HAK", func() {
lineText := "L05 W/Z B5406 (9) TSN/2355(30OCT) PVG" // lineText := "L1: 29OCT B2863 ILS IS (3/6) TSN2350(28OCT) HAK"
schedule := ParseWithoutDef(lineText) // schedule := ParseWithoutDef(lineText)
Expect(schedule).NotTo(BeNil()) // Expect(schedule).NotTo(BeNil())
Expect(schedule.Index).To(Equal("L05")) // Expect(schedule.Index).To(Equal("L1:"))
Expect(schedule.Task).To(Equal("W/Z")) // Expect(schedule.Date).To(Equal("29OCT"))
Expect(len(schedule.FlightNumber)).To(Equal(1)) // Expect(len(schedule.FlightNumber)).To(Equal(1))
Expect(schedule.FlightNumber[0]).To(Equal("B5406")) // Expect(schedule.FlightNumber[0]).To(Equal("B2863"))
Expect(len(schedule.Waypoints)).To(Equal(2)) // Expect(len(schedule.Waypoints)).To(Equal(2))
Expect(schedule.Waypoints[0].Airport).To(Equal("TSN")) // Expect(schedule.Waypoints[0].Airport).To(Equal("TSN"))
Expect(schedule.Waypoints[0].DepartureTime).To(Equal("2355(30OCT)")) // Expect(schedule.Waypoints[0].DepartureTime).To(Equal("2350(28OCT)"))
Expect(schedule.Waypoints[1].Airport).To(Equal("PVG")) // Expect(schedule.Waypoints[1].Airport).To(Equal("HAK"))
}) // })
}) // })
Context("1)", func() { // Context("L05", func() {
It("1) B6727 ILS I(9) SYX/0800 1135/TSN", func() { // It("L05 W/Z B5406 (9) TSN/2355(30OCT) PVG", func() {
lineText := "1) B6727 ILS I(9) SYX/0800 1135/TSN" // lineText := "L05 W/Z B5406 (9) TSN/2355(30OCT) PVG"
schedule := ParseWithoutDef(lineText) // schedule := ParseWithoutDef(lineText)
Expect(schedule).NotTo(BeNil()) // Expect(schedule).NotTo(BeNil())
Expect(schedule.Index).To(Equal("1)")) // Expect(schedule.Index).To(Equal("L05"))
Expect(len(schedule.FlightNumber)).To(Equal(1)) // Expect(schedule.Task).To(Equal("W/Z"))
Expect(schedule.FlightNumber[0]).To(Equal("B6727")) // Expect(len(schedule.FlightNumber)).To(Equal(1))
Expect(len(schedule.Waypoints)).To(Equal(2)) // Expect(schedule.FlightNumber[0]).To(Equal("B5406"))
Expect(schedule.Waypoints[0].Airport).To(Equal("SYX")) // Expect(len(schedule.Waypoints)).To(Equal(2))
Expect(schedule.Waypoints[0].DepartureTime).To(Equal("0800")) // Expect(schedule.Waypoints[0].Airport).To(Equal("TSN"))
Expect(schedule.Waypoints[1].Airport).To(Equal("TSN")) // Expect(schedule.Waypoints[0].DepartureTime).To(Equal("2355(30OCT)"))
Expect(schedule.Waypoints[1].ArrivalTime).To(Equal("1135")) // Expect(schedule.Waypoints[1].Airport).To(Equal("PVG"))
}) // })
}) // })
Context("01", func() { // Context("1)", func() {
It("01 B3193 XIY0020(16APR) CGD", func() { // It("1) B6727 ILS I(9) SYX/0800 1135/TSN", func() {
lineText := "01 B3193 XIY0020(16APR) CGD" // lineText := "1) B6727 ILS I(9) SYX/0800 1135/TSN"
schedule := ParseWithoutDef(lineText) // schedule := ParseWithoutDef(lineText)
Expect(schedule).NotTo(BeNil()) // Expect(schedule).NotTo(BeNil())
Expect(schedule.Index).To(Equal("01")) // Expect(schedule.Index).To(Equal("1)"))
Expect(len(schedule.FlightNumber)).To(Equal(1)) // Expect(len(schedule.FlightNumber)).To(Equal(1))
Expect(schedule.FlightNumber[0]).To(Equal("B3193")) // Expect(schedule.FlightNumber[0]).To(Equal("B6727"))
Expect(len(schedule.Waypoints)).To(Equal(2)) // Expect(len(schedule.Waypoints)).To(Equal(2))
Expect(schedule.Waypoints[0].Airport).To(Equal("XIY")) // Expect(schedule.Waypoints[0].Airport).To(Equal("SYX"))
Expect(schedule.Waypoints[0].DepartureTime).To(Equal("0020(16APR)")) // Expect(schedule.Waypoints[0].DepartureTime).To(Equal("0800"))
Expect(schedule.Waypoints[1].Airport).To(Equal("CGD")) // 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"))
// })
// })
// })