fix value error when parsing course & speed

This commit is contained in:
Rossen Georgiev 2016-03-17 21:22:55 +00:00
parent 0ea9f1dede
commit 202dc8fa0e
2 changed files with 36 additions and 9 deletions

View File

@ -134,21 +134,23 @@ def parse_comment(body, parsed):
def parse_data_extentions(body):
parsed = {}
match = re.findall(r"^([0-9 \.]{3})/([0-9 \.]{3})", body)
match = re.findall(r"^([0-9 .]{3})/([0-9 .]{3})", body)
if match:
cse, spd = match[0]
body = body[7:]
parsed.update({
'course': int(cse) if cse.strip(' .') != '' else 0,
'speed': int(spd)*1.852 if spd.strip(' .') != '' else 0,
})
parsed.update({'course': int(cse) if cse.isdigit() and 1 <= int(cse) <= 360 else 0})
if spd.isdigit():
parsed.update({'speed': int(spd)*1.852})
match = re.findall(r"^/([0-9]{3})/([0-9]{3})", body)
match = re.findall(r"^/([0-9 .]{3})/([0-9 .]{3})", body)
if match:
brg, nrq = match[0]
body = body[8:]
parsed.update({'bearing': int(brg), 'nrq': int(nrq)})
if brg.isdigit():
parsed.update({'bearing': int(brg)})
if nrq.isdigit():
parsed.update({'nrq': int(nrq)})
else:
match = re.findall(r"^(PHG(\d[\x30-\x7e]\d\d[0-9A-Z]?))", body)
if match:

View File

@ -263,7 +263,6 @@ class DataExtentionsTC(unittest.TestCase):
self.assertEqual(remaining, '/text')
self.assertEqual(parsed, {
'course': 0,
'speed': 0,
})
body = ".../.../text"
@ -272,7 +271,33 @@ class DataExtentionsTC(unittest.TestCase):
self.assertEqual(remaining, '/text')
self.assertEqual(parsed, {
'course': 0,
'speed': 0,
})
body = "22./33 /text"
remaining, parsed = parse_data_extentions(body)
self.assertEqual(remaining, '/text')
self.assertEqual(parsed, {
'course': 0,
})
def test_empty_bearing_nrq(self):
body = "111/100/ /...text"
remaining, parsed = parse_data_extentions(body)
self.assertEqual(remaining, 'text')
self.assertEqual(parsed, {
'course': 111,
'speed': 100*1.852,
})
body = "111/100/2 /33.text"
remaining, parsed = parse_data_extentions(body)
self.assertEqual(remaining, 'text')
self.assertEqual(parsed, {
'course': 111,
'speed': 100*1.852,
})
def test_course_speed_bearing_nrq(self):