diff --git a/aerofiles/igc/reader.py b/aerofiles/igc/reader.py index cd2b2d7..c884c60 100644 --- a/aerofiles/igc/reader.py +++ b/aerofiles/igc/reader.py @@ -167,10 +167,6 @@ def next(self): yield (record_type, None, e) def parse_line(self, record_type, line): - - if len(line) > 76: - raise LineLengthError - decoder = self.get_decoder_method(record_type) return decoder(line) @@ -691,17 +687,9 @@ def decode_longitude(lon_string): return longitude -class InvalidIGCFileError(Exception): - pass - - class MissingRecordsError(Exception): pass class MissingExtensionsError(Exception): pass - - -class LineLengthError(Exception): - pass diff --git a/tests/igc/test_reader.py b/tests/igc/test_reader.py index 88dc373..2f41f0d 100644 --- a/tests/igc/test_reader.py +++ b/tests/igc/test_reader.py @@ -1,6 +1,10 @@ +# This Python file uses the following encoding: utf-8 + import datetime import os +import pytest + from aerofiles.igc.reader import Reader from aerofiles.igc.reader import LowLevelReader @@ -32,6 +36,26 @@ def test_decode_B_record(): assert LowLevelReader.decode_B_record(line) == expected_result +def test_decode_invalid_B_record(): + """Test whether decoding invalid B record raise Error""" + + invalid_b_records = [ + 'B1053175438931N0ÿÿÿøÈÐÀÀÜÐáÀÄÈàÔÀÄÈÌØÀÀÜÀÀ', + 'BÿÿÿøÄÀÈÌÄàÐäÐàààÁ8ÀÄÔÀäÈÌå��ÀÄàÔäÀ', + 'B1140ÿÿÿøÌÈÔÐÌÌààÑ8ÀÈÐÈÌàÌÕÀÀääÈÀÀäÔ', + 'B1309044931600N0153ÿÿÿøÐÀÄÍÀÄÔÌØÀÄÔÜØÀÀäÀ', + 'B10470349ÿÿÿøÌÔäØÕ8ÀÄÔÄÈàÜÙÀÄàÐÐÀÄäÀÜÀÀØÀ', + 'B11052249474ÿÿÿøÀÉ8ÀÄÔÀÜÜäÕÀÄÌÐÌÀÄÐÀÈÀÀÔÀ', + 'B12ÿÿÿøÐØÀÌÐäÐÈØäÝ8ÀÄÔÄÜÌÐÑÀÄØÐàÀÄÜÐÀÀÀÜÀÀÀ4)ÄÈ', + 'B1124185148269N9833N00553309EA0084800873000068000000', + 'B1245085122369N00614242EÿÿÿùÀÄÜØÄÀÄàÐäÀÀØÀ', + ] + + for b_record in invalid_b_records: + with pytest.raises(ValueError): + LowLevelReader.decode_B_record(b_record) + + def test_decode_C_record1(): line = 'C150701213841160701000102 500K Tri\r\n' expected_result = {