Files
Tirsvad 7459711243 Implement census analysis: read, count, summarise, write and CLI
Closes #11
Closes #12
Closes #13
Closes #14
Closes #15

Task: MIL-002#4
Task: MIL-002#5
Task: MIL-002#6
Task: MIL-002#7
Task: MIL-002#8
2026-10-13 15:37:51 +08:00

48 lines
1.5 KiB
Python

"""Tests for the squirrel.constants module."""
import ast
import pathlib
import sys
from squirrel import constants
def test_fur_colors_are_gray_cinnamon_black_in_order() -> None:
assert constants.FUR_COLORS == ("Gray", "Cinnamon", "Black")
def test_summary_columns_are_fur_color_and_count() -> None:
assert constants.SUMMARY_COLUMNS == ("Fur Color", "Count")
def test_default_input_path_has_census_file_name() -> None:
assert constants.DEFAULT_INPUT_PATH.name == (
"2018_Central_Park_Squirrel_Census_-_Squirrel_Data.csv"
)
assert constants.DEFAULT_INPUT_PATH.parent == pathlib.Path("data")
def test_default_output_path_has_summary_file_name() -> None:
assert constants.DEFAULT_OUTPUT_PATH == pathlib.Path("squirrel_count.csv")
def test_file_encoding_and_column_name_values() -> None:
assert constants.FILE_ENCODING == "utf-8"
assert constants.FUR_COLOR_COLUMN == "Primary Fur Color"
def test_exit_input_missing_is_2() -> None:
assert constants.EXIT_INPUT_MISSING == 2
def test_module_imports_only_standard_library() -> None:
source = pathlib.Path(constants.__file__).read_text(encoding="utf-8")
imported: set[str] = set()
for node in ast.walk(ast.parse(source)):
if isinstance(node, ast.Import):
imported.update(alias.name.split(".")[0] for alias in node.names)
elif isinstance(node, ast.ImportFrom) and node.module is not None:
imported.add(node.module.split(".")[0])
assert imported <= sys.stdlib_module_names