Initial commit
This commit is contained in:
commit
5303986377
20 changed files with 3195 additions and 0 deletions
66
tests/test_export_formats.py
Normal file
66
tests/test_export_formats.py
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
"""Tests for the CSV and KVN export renderers added for the ODMS service."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import csv
|
||||
import io
|
||||
|
||||
from odm import GP_FIELDS, OmmRecord, as_celestrak_csv, as_omm_kvn
|
||||
|
||||
|
||||
def _record() -> OmmRecord:
|
||||
omm = {
|
||||
"OBJECT_NAME": "ISS (ZARYA)",
|
||||
"OBJECT_ID": "1998-067A",
|
||||
"EPOCH": "2026-05-13T22:14:00",
|
||||
"MEAN_MOTION": 15.498,
|
||||
"ECCENTRICITY": 0.000284,
|
||||
"INCLINATION": 51.64,
|
||||
"RA_OF_ASC_NODE": 20.23,
|
||||
"ARG_OF_PERICENTER": 74.12,
|
||||
"MEAN_ANOMALY": 10.2,
|
||||
"EPHEMERIS_TYPE": 0,
|
||||
"CLASSIFICATION_TYPE": "U",
|
||||
"NORAD_CAT_ID": "25544",
|
||||
"ELEMENT_SET_NO": 999,
|
||||
"REV_AT_EPOCH": 100,
|
||||
"BSTAR": 0.00012345,
|
||||
"MEAN_MOTION_DOT": 7.2e-05,
|
||||
"MEAN_MOTION_DDOT": 0.0,
|
||||
}
|
||||
return OmmRecord(omm=omm, object_name="ISS (ZARYA)", object_id="1998-067A", originator="YKSA")
|
||||
|
||||
|
||||
def test_celestrak_csv_header_matches_gp_field_order():
|
||||
text = as_celestrak_csv([_record()])
|
||||
rows = list(csv.reader(io.StringIO(text)))
|
||||
assert tuple(rows[0]) == GP_FIELDS
|
||||
# One data row, NORAD in the right column.
|
||||
assert rows[1][GP_FIELDS.index("NORAD_CAT_ID")] == "25544"
|
||||
assert rows[1][GP_FIELDS.index("OBJECT_NAME")] == "ISS (ZARYA)"
|
||||
|
||||
|
||||
def test_celestrak_csv_multiple_records():
|
||||
text = as_celestrak_csv([_record(), _record()])
|
||||
rows = list(csv.reader(io.StringIO(text)))
|
||||
assert len(rows) == 3 # header + 2
|
||||
|
||||
|
||||
def test_omm_kvn_has_version_and_key_value_lines():
|
||||
text = as_omm_kvn([_record()], originator="YKSA")
|
||||
assert text.startswith("CCSDS_OMM_VERS = 3.0")
|
||||
kv = dict(
|
||||
line.split(" = ", 1)
|
||||
for line in text.splitlines()
|
||||
if " = " in line
|
||||
)
|
||||
assert kv["ORIGINATOR"] == "YKSA"
|
||||
assert kv["NORAD_CAT_ID"] == "25544"
|
||||
assert kv["MEAN_ELEMENT_THEORY"] == "SGP4"
|
||||
assert kv["INCLINATION"] == "51.64"
|
||||
|
||||
|
||||
def test_omm_kvn_separates_records_with_blank_line():
|
||||
text = as_omm_kvn([_record(), _record()])
|
||||
assert text.count("CCSDS_OMM_VERS = 3.0") == 2
|
||||
assert "\n\n" in text
|
||||
Loading…
Add table
Add a link
Reference in a new issue