109 lines
2.7 KiB
Go
109 lines
2.7 KiB
Go
package parser
|
|
|
|
import (
|
|
"github.com/stretchr/testify/assert"
|
|
"testing"
|
|
)
|
|
|
|
func TestBasicFlop(t *testing.T) {
|
|
ast := assert.New(t)
|
|
s := `ZCZC TMQ2526 141605
|
|
FF ZBTJZPZX
|
|
141604 ZBACZQZX
|
|
(ARR-JAE7433/A0132-RKSI-ZBTJ1604)
|
|
NNNN`
|
|
tele, err := Parse(s)
|
|
ast.Nil(err, "Should be no error")
|
|
ast.Equal(tele.Complete, true, "Should be complete telegram")
|
|
ast.Equal(4, len(tele.Fields), "get 4 lines")
|
|
ast.Equal("ZCZC TMQ2526 141605", tele.Fields[0])
|
|
ast.Equal(2526, tele.Sequence, "TMQ must be 2526")
|
|
ast.Equal(false, tele.Type == "PLN", "Not a plan")
|
|
ast.Equal("ARR", tele.Type, "Flop type is ARR")
|
|
}
|
|
|
|
func TestBasicPln(t *testing.T) {
|
|
ast := assert.New(t)
|
|
|
|
s := `ZCZC TMQ2886 142347
|
|
QU TSNZPCA
|
|
.
|
|
QU WUHZPCA WUHTZ8X TSNZPCA TSNTZCR FOCZPCA FOCTZMF XIYZPCA XIYKL8X
|
|
KWLZPCA KWLTF8X CANZPCA CANUOCZ CANKNCZ
|
|
.XMNUOMF 142346
|
|
PLN
|
|
15MAY
|
|
01) MF8138 B5162 ILS(8) TSN0010 0155WUH0245 0355FOC
|
|
02) MF8323 B5308 ILS(8) TSN0625 0810XIY0910 1050KWL
|
|
03) MF8324 B5308 ILS(8) KWL1135 1315XIY1405 1535TSN
|
|
04) MF8347 B5162 ILS(8) FOC0650 0815CAN
|
|
05) MF8348 B5162 ILS(8) CAN0920 1050FOC
|
|
SI:A/C CHG
|
|
=
|
|
NNNN`
|
|
tele, err := Parse(s)
|
|
ast.Nil(err, "Should be no error")
|
|
ast.Equal(tele.Complete, true, "Should be complete telegram")
|
|
ast.Equal(15, len(tele.Fields), "get 15 lines")
|
|
ast.Equal("ZCZC TMQ2886 142347", tele.Fields[0])
|
|
ast.Equal(2886, tele.Sequence, "TMQ must be 2886")
|
|
ast.Equal(true, tele.Type == "PLN", "This is a plan")
|
|
|
|
}
|
|
|
|
func TestGetValues(t *testing.T) {
|
|
ast := assert.New(t)
|
|
text := "ZBTJ1604"
|
|
values := getFields(DestinationRegex, text)
|
|
|
|
ast.Equal(2, len(values))
|
|
ast.Equal("ZBTJ", values["dest"])
|
|
ast.Equal("1604", values["time"])
|
|
}
|
|
|
|
func TestParseDestAndTime(t *testing.T) {
|
|
ast := assert.New(t)
|
|
text := `ZBTJ1604`
|
|
dest, destTime := getAirportAndTime(text)
|
|
ast.Equal("ZBTJ", dest)
|
|
ast.Equal(16, destTime.Hour())
|
|
ast.Equal(4, destTime.Minute())
|
|
|
|
text = `ZBTJ`
|
|
dest, _ = getAirportAndTime(text)
|
|
ast.Equal("ZBTJ", dest)
|
|
|
|
}
|
|
|
|
func TestGetFlopValues(t *testing.T) {
|
|
ast := assert.New(t)
|
|
text := "(ARR-JAE7433/A0132-RKSI-ZBTJ1604-ZBTJ)"
|
|
values := getSplitValues(text)
|
|
ast.Equal(5, len(values))
|
|
ast.Equal("ARR", values[0])
|
|
ast.Equal("JAE7433/A0132", values[1])
|
|
ast.Equal("RKSI", values[2])
|
|
ast.Equal("ZBTJ1604", values[3])
|
|
ast.Equal("ZBTJ", values[4])
|
|
|
|
values = getSplitValues("(DLA-JAE7433-NZAA0145-VTBS-DOF/091120)")
|
|
ast.Equal(5, len(values))
|
|
ast.Equal("JAE7433", values[1])
|
|
ast.Equal("NZAA0145", values[2])
|
|
ast.Equal("VTBS", values[3])
|
|
ast.Equal("DOF/091120", values[4])
|
|
}
|
|
|
|
func TestGetFlight(t *testing.T) {
|
|
ast := assert.New(t)
|
|
text := `JAE7433/A0132`
|
|
fn, rn := parseFlight(text)
|
|
ast.Equal("JAE7433", fn)
|
|
ast.Equal("A0132", rn)
|
|
|
|
text = "JAE1234"
|
|
fn, rn = parseFlight(text)
|
|
ast.Equal("JAE1234", fn)
|
|
ast.Equal("", rn)
|
|
}
|