xastir/tests/objects_tests.at
Tom Russo c855693903 Add a unit tests for object/item formatters with overlay symbol
One of the main reasons I got off on this whole refactor business for
objects/items was as a consequence of #239, where it was reported that
Xastir was not properly formatting compressed posits if the station
had a symbol with numeric overlay.

My first test confirming that bug was to try creating an object with
a numeric overlay and it didn't work, either.

This commit actually adds unit tests for exactly that issue.

There are now two tests of object/item formatters in objects_utils.c when
asked to format a packet with a numeric overlay, in both compressed and
uncompressed form.

The "5" for the overlay should be replaced by an 'f' in the compressed
packet, and these new test verifies that that happens.

There are also two new tests of construct_object_item_data_row and
Create_object_item_tx_string (in objects.c) for the same two cases: an
object with a numeric overlay, compressed and uncompressed.

The object_util.c tests check the low-level string formatters.

The objects.c tests check the high-level code that actually does the
creation of objects from dialog box values (that is, when *passed*
dialog box values --- the functions don't read the dialogs
themselves).  Since the high-level functions call the low level
functions, and it's actually the low-level functions that handle the
formatting, this is sort of overkill, but overkill is good when we're
talking about unit tests.

All that refactor inspired by one simple issue, and the unit tests
didn't even verify that the issue was addressed (largely because the
issue was fixed long before the refactor started, and memory is
short).  Better late than never.
2025-11-28 22:18:41 -07:00

269 lines
13 KiB
Text

# Autotest tests for objects.c Functions
# Tests for standalone utility functions from objects.c
AT_BANNER([Object Functions])
AT_BANNER([construct_object_item_data_row() tests])
AT_SETUP([construct_object_item_data_row: returns null given no inputs])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_null_everything], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good simple object])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_simple_object], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good simple object with numeric overlay])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_simple_object_numeric_overlay], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good simple object with numeric overlay, compressed])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_simple_object_numeric_overlay_compressed], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good simple object truncating overlong name])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_simple_object_name_too_long], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good simple item])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_simple_item], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good simple killed object])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_simple_killed_object], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good simple killed item])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_simple_killed_item], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good simple object with speed,course])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_simple_object_course_speed], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good simple item with speed,course])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_simple_item_course_speed], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good simple object with speed,course,alt])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_simple_object_course_speed_alt], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good simple item with speed,course,alt])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_simple_item_course_speed_alt], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good simple object with speed,course,alt,long comment])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_simple_object_course_speed_alt_comment], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good simple item with speed,course,alt, long])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_simple_item_course_speed_alt_comment], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_BANNER([construct_object_item_data_row() tests for area objects/items])
AT_SETUP([construct_object_item_data_row: returns good area object with minimal data input])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_area_object_basic], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good area item with minimal data input])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_area_item_basic], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good area object with course and speed incorrectly specified])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_area_object_speed], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good area item with course and speed incorrectly specified])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_area_item_speed], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good area object with offsets data input])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_area_object_offsets], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good area item with offsets data input])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_area_item_offsets], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good area object with offsets data input, filled circle])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_area_object_offsets_filled], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good area item with offsets data input filled circle])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_area_item_offsets_filled], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good line area object with corridor data input])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_area_object_line_corridor], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good line area item with corridor data input])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_area_item_line_corridor], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good area object with offsets and altitude data input])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_area_object_offsets_alt], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good area item with offsets and altitude data input])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_area_item_offsets_alt], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_BANNER([construct_object_item_data_row() tests for signposts])
AT_SETUP([construct_object_item_data_row: returns good signpost with text])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_area_object_signpost_basic], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good signpost with text])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_area_item_signpost_basic], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good signpost with text and course/speed])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_area_object_signpost_speed], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good signpost with text and course/speed])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_area_item_signpost_speed], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_BANNER([construct_object_item_data_row() tests for omni-df objects])
AT_SETUP([construct_object_item_data_row: returns good omni-df object])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_object_df_omni], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good omni-df item ])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_item_df_omni], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_BANNER([construct_object_item_data_row() tests for beam-df objects])
AT_SETUP([construct_object_item_data_row: returns good omni-df object])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_object_df_beam], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good beam-df item ])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_item_df_beam], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_BANNER([construct_object_item_data_row() tests for probability ring objects])
AT_SETUP([construct_object_item_data_row: returns good probability ring object with no radii])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_object_prob_circles_noring], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good probability ring item with no radii ])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_item_prob_circles_noring], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_BANNER([construct_object_item_data_row() tests for probability ring objects])
AT_SETUP([construct_object_item_data_row: returns good probability ring object with only min radius])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_object_prob_circles_minring], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good probability ring item with only min radius ])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_item_prob_circles_minring], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good probability ring object with only max radius])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_object_prob_circles_maxring], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good probability ring item with only max radius ])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_item_prob_circles_maxring], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good probability ring object with min and max radius])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_object_prob_circles_minmax], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP
AT_SETUP([construct_object_item_data_row: returns good probability ring item with min and max radius ])
AT_KEYWORDS([objects construct_object_item_data_row])
AT_CHECK(["$abs_top_builddir/tests/test_objects" constructor_item_prob_circles_minmax], [0], [PASS: construct_object_item_data_row
])
AT_CLEANUP