feat: Adicionado testes

This commit is contained in:
2025-10-30 22:01:43 -01:00
parent 82912bcbe8
commit d7e351909e
3 changed files with 112 additions and 21 deletions

View File

@@ -7,7 +7,7 @@ def is_blank(l: str) -> bool:
def parse(): def parse():
fp = open("dados.txt") fp = open("test_data.txt")
data = [l for l in fp.read().split("\n")] data = [l for l in fp.read().split("\n")]
chunks = boundaries(data) chunks = boundaries(data)
@@ -34,9 +34,8 @@ def boundaries(data: list[str]):
def parse_chunk(chunk_lines: list[str]): def parse_chunk(chunk_lines: list[str]):
header = None header = None
for (idx, l) in enumerate(chunk_lines): for (idx, l) in enumerate(chunk_lines):
print(l[-1]) if l[-1] == "7":
if l[-1] == " ": header = idx
header = idx-1
break break
parse_header(chunk_lines[:header]) parse_header(chunk_lines[:header])
@@ -60,6 +59,8 @@ def parse_header(hLines: list[str]):
aux["E"].append(line) aux["E"].append(line)
case "I": case "I":
aux["I"].append(line) aux["I"].append(line)
case "F":
aux["F"].append(line)
case _: case _:
raise NotImplemented raise NotImplemented
@@ -70,6 +71,19 @@ def parse_header(hLines: list[str]):
pprint(headerDict) pprint(headerDict)
def parse_mag(line: str):
magnitudes = []
base = 55
while base < 79:
print(base)
m = line[base:base+4]
mt = line[base+4]
if not is_blank(m):
magnitudes.append({"M": m, "T": mt})
base += 8
return magnitudes
def parse_type_1(data: list[str]): def parse_type_1(data: list[str]):
aux = data[0] aux = data[0]
y = int(aux[1:5]) y = int(aux[1:5])
@@ -96,30 +110,24 @@ def parse_type_1(data: list[str]):
return hypo return hypo
def parse_mag(line: str):
magnitudes = []
base = 55
while base < 80:
m = line[base:base+4]
mt = line[base+4]
if is_blank(m):
break
magnitudes.append({"M": m, "T": mt})
base += 8
return magnitudes
def parse_type_2(data: list[str]): def parse_type_2(data: list[str]):
return {} return {}
def parse_type_3(data: list[str]): def parse_type_3(data: list[str]):
return {} comments = []
for line in data:
comments.append(line[:-2].strip())
return {"Comments": comments}
def parse_type_5(data: list[str]): def parse_type_5(data: list[str]):
return {} return {}
def parse_type_6(data: list[str]): def parse_type_6(data: list[str]):
return {} waves = []
for l in data:
waves.append(l.strip().split(" ")[0])
return {"Wave": waves}
def parse_type_e(data: list[str]): def parse_type_e(data: list[str]):
aux = data[0] aux = data[0]
@@ -131,7 +139,9 @@ def parse_type_f(data: list[str]):
return {} return {}
def parse_type_i(data: list[str]): def parse_type_i(data: list[str]):
return {} aux = data[0]
dt = datetime.strptime(aux[12:26], "%y-%m-%d %H:%M")
return {"Action": aux[8:11], "Action Extra": {"Date": dt.isoformat(), "OP": aux[30:35].strip(), "Status": aux[42:57].strip(), "ID":int(aux[60:74])}}
FUNCS = {1: parse_type_1, 2: parse_type_2, 3: parse_type_3, 5: parse_type_5, 6: parse_type_6, "E": parse_type_e, "F": parse_type_f, "I": parse_type_i} FUNCS = {1: parse_type_1, 2: parse_type_2, 3: parse_type_3, 5: parse_type_5, 6: parse_type_6, "E": parse_type_e, "F": parse_type_f, "I": parse_type_i}

31
test_data.txt Normal file
View File

@@ -0,0 +1,31 @@
1996 6 7 1325 29.2 L 59.846 5.130 12.0F TES 12 .60 1.9LTES 2.2CTES 2.0LNAO1
GAP=177 2.78 4.5 12.80.000 0.2239E+02 0.6258E+03 -0.2817E+03E
1996 6 7 1325 30.5 L 59.763 5.396 29.2 NAO 2 1.0 2.0LNAO1
8.3 41.0 74.7 1 F
1996-06-07-1324-51S.TEST__009 6
ACTION:SPL 14-12-11 12:04 OP:jh STATUS: ID:19960607132529 L I
STAT COM NTLO IPHASE W HHMM SS.SSS PAR1 PAR2 AGA OPE AIN RES W DIS CAZ7
EGD HHZ NS IP 4 1325 35.950 C BER jh 120.0-1.131047.70 6
EGD HHZ NS END 1325 35.950 111.0 BER jh 0.0 47.70 6
EGD HHZ NS AMP 1325 35.950 11.1 33.3 BER jh 47.70 6
EGD HHN NS ES 1325 42.030 BER jh 70.0-.8901047.70 6
BER BHZ NS00 IP 1325 38.120 C kkk AUT -.9801061.00 11
BER BHZ NS00 END 1325 38.120 55.0 BER jh 4.8 61.00 11
BER BHN NS00 ES 1325 45.440 BER jh 70.0-.9901061.00 11
BER BHZ NS00 IAML A1325 46.710 31.7 0.20 BER jh 0.4 61.00 11
KMY BHZ NS10 IP 1325 40.260 C PPP Ajh 70.0 .3301070.90 175
KMY BHZ NS10 END 1325 40.260 62.0 BER jh 70.90 175
KMY BHN NS10 ES 1325 48.740 BER jh 70.0.3001070.90 175
KMY BHZ NS10 IAML 1325 48.920 83.6 0.20 BER jh 70.90 175
ASK SHZ NS EP 2 1325 39.590 D -1.031071.10 3
ASK SHZ NS END 1325 39.590 68.0 71.10 3
ASK SHZ NS ES 1325 48.070 -1.021071.10 3
ASK SHZ NS AMP 1325 48.070 333.3 2.20 71.10 3
ASK SHZ NS IAML 1325 50.900 111.0 0.30 71.10 3
NRA0 S Z Pn A1326 19.090 50.0-.05010368.0 72
NRA0 S Z END 1326 19.090 333.0 368.0 72
NRA0 S Z BAZ-P 1326 19.090 256.9 6.9 0. 368.0 72
NRA0 S Z Pg 1326 27.940 -.64010368.0 72
NRA0 S Z BAZ 1326 27.940 253.0 7.3 -3. 368.0 72
NRA0 S Z Lg 1327 10.540 -.89010368.0 72
NRA0 S Z BAZ 1327 10.540 266.6 4.1 9. 368.0 72

50
tests.py Normal file
View File

@@ -0,0 +1,50 @@
import pytest
import parser
def test_type_1():
test_data =[" 1996 6 7 1325 29.2 L 59.846 5.130 12.0F TES 12 .60 1.9LTES 2.2CTES 2.0LNAO1",
" 1996 6 7 1325 30.5 L 59.763 5.396 29.2 NAO 2 1.0 2.0LNAO1"]
expected = {"DateTime": "1996-06-07T13:25:29.200000", "Distance Indicator": "L", "Event ID": " ", 'Lat': 59.846, 'Long': 5.13,'Depth': 12.0, 'Agency': 'TES', 'Magnitudes': [{'M': ' 1.9', 'T': 'L'},{'M': ' 2.2', 'T': 'C'},{'M': ' 2.0', 'T': 'L'},{'M': ' 2.0', 'T': 'L'}]}
_ret = parser.parse_type_1(test_data)
for (k,v) in _ret.items():
assert _ret[k] == expected[k]
def test_type_3():
test_data = [" OP: CVUA-RM/RC 3",
" STATUS: OK SENTIDO 3",
" SENTIDO: II/III -Pico: S. Caetano 3",
" PUB: NAO 3",
" WEB: SIM 3",
" OBS: Por ordem do CT nao foi emitido novo comunicado 3",
" OBS: Sismo sobreposto 3",
" REGIAO: Pico,VZ14,SZ06,FE95 405 3"]
_ret = parser.parse_type_3(test_data)
assert len(_ret["Comments"]) == 8
def test_type_6():
test_data = [" 1996-06-03-2002-18S.TEST__012 6",
" 1996-06-03-1917-52S.TEST__002 6"]
expected = {"Wave": ["1996-06-03-2002-18S.TEST__012", "1996-06-03-1917-52S.TEST__002"]}
_ret = parser.parse_type_6(test_data)
for (k,v) in _ret.items():
assert _ret[k] == expected[k]
def test_type_i():
test_data = [" ACTION:SPL 08-10-02 10:19 OP:jh STATUS: ID:19960603195540 I"]
expected = {"Action": "SPL", "Action Extra": {"Date": '2008-10-02T10:19:00', "OP": "jh", "Status": "", "ID":19960603195540}}
_ret = parser.parse_type_i(test_data)
for (k,v) in _ret.items():
assert _ret[k] == expected[k]
def test_type_e():
test_data =[" GAP=348 2.88 999.9 999.9999.9 -0.1404E+08 -0.3810E+08 0.1205E+09E"]
expected = {"Gap": 348, "Origin": 2.88, "Error_lat": 999.9, "Error_long": 999.9, "Error_depth": 999.9, "Cov_xy": -14040000.0, "Cov_xz": -38100000.0, "Cov_yz": 120500000.0}
_ret = parser.parse_type_e(test_data)
for (k,v) in _ret.items():
assert _ret[k] == expected[k]