Skip to content

Add test cases for uncovered policy function branches #1161

@hmgaudecker

Description

@hmgaudecker

Context

After setting up proper coverage configuration (excluding stdlib, test infrastructure, auto-generated files, and defensive parameter validation), policy code coverage is at 97.2% line / 90.2% branch. The remaining gaps are real policy logic that needs test cases.

Uncovered policy functions by category

Historical date ranges (no test cases for these periods)

These functions have start_date/end_date outside the date range exercised by current tests:

Function File Date range
betrag_versicherter_m_bis_03_1999 sozialversicherung/kranken/beitrag/beitrag.py —1999-03-31
betrag_arbeitgeber_m_bis_03_1999 sozialversicherung/kranken/beitrag/beitrag.py —1999-03-31
betrag_selbstständig_m_ohne_ermäßigtem_beitragssatz sozialversicherung/kranken/beitrag/beitrag.py 2005-07-01 — 2008-12-31
beitragssatz_arbeitnehmer_voller_zusatzbeitrag_ab_07_2005_bis_2008 sozialversicherung/kranken/beitrag/beitragssatz.py 2005-07-01 — 2008-12-31
einkommen_m_bis_03_1999 sozialversicherung/kranken/beitrag/einkommen.py —1999-03-31
betrag_versicherter_m_bis_03_1999 sozialversicherung/arbeitslosen/beitrag/beitrag.py —1999-03-31
betrag_arbeitgeber_m_bis_03_1999 sozialversicherung/arbeitslosen/beitrag/beitrag.py —1999-03-31
betrag_versicherter_m_bis_03_1999 sozialversicherung/pflege/beitrag/beitrag.py —1999-03-31
betrag_arbeitgeber_m_bis_03_1999 sozialversicherung/pflege/beitrag/beitrag.py —1999-03-31
betrag_versicherter_m_bis_03_1999 sozialversicherung/rente/beitrag/beitrag.py —1999-03-31
betrag_arbeitgeber_m_ohne_arbeitgeberpauschale sozialversicherung/rente/beitrag/beitrag.py —1999-03-31
zu_versteuerndes_einkommen_y_sn_mit_dmark_rundungsregel einkommensteuer/zu_versteuerndes_einkommen.py —2001-12-31
zu_versteuerndes_einkommen_y_sn_mit_grober_54er_rundungsregel einkommensteuer/zu_versteuerndes_einkommen.py 2002-01-01 — 2003-12-31
anspruchshöhe_m_wthh_bis_2000 wohngeld/wohngeld.py —2000-12-31
altersfreibetrag_y_bis_2004 einkommensteuer/abzüge/alter.py —2004-12-31
betrag_y_sn_kindergeld_kinderfreibetrag_parallel einkommensteuer/einkommensteuer.py —1996-12-31
gesamtbetrag_der_einkünfte_y_mit_kapitaleinkünften einkommensteuer/einkünfte/einkünfte.py —2008-12-31
betrag_y_sn_mit_sparerfreibetrag_und_werbungskostenpauschbetrag einkommensteuer/einkünfte/aus_kapitalvermögen/aus_kapitalvermögen.py —2008-12-31
alleinerziehend_betrag_y_pauschal einkommensteuer/abzüge/alleinerziehend.py —2014-12-31
freibetrag_m_bis_2015 wohngeld/einkommen.py —2015-12-31
kapitaleinkommen_brutto_m_ohne_freibetrag grundsicherung/im_alter/einkommen.py —2015-12-31
vorsorgeaufwendungen_regime_bis_2004_y_sn einkommensteuer/abzüge/vorsorge.py —2019-12-31
betrag_m_eg_bis_2022 grundsicherung/im_alter/im_alter.py —2022-12-31
kindersatz_m_nach_regelbedarfsstufen_mit_sofortzuschlag arbeitslosengeld_2/regelbedarf.py 2022-07-01 — 2022-12-31
differenz_kindergeld_kindbedarf_m arbeitslosengeld_2/kindergeldübertrag.py 2005-01-01 — 2022-12-31
grundsätzlich_anspruchsberechtigt_ohne_maximales_vorjahreseinkommen elterngeld/elterngeld.py —2010-12-31

Future date ranges (not yet testable with current date)

Function File Date range
vorsorge_gesetzliche_krankenversicherungsbeiträge_y lohnsteuer/einkommen.py 2026-01-01 —
vorsorgepauschale_ohne_arbeitslosenversicherungsbeiträge_y lohnsteuer/einkommen.py 2026-01-01 —
betrag_y_ab_01_2026 einkünfte/aus_nichtselbstständiger_arbeit/... 2026-01-01 —

Conditional branches needing specific test data

These functions are active in the test date range but have branches that need specific input scenarios:

Function File Missing condition
zugangsfaktor rente/altersrente/altersrente.py Early retirement (age < Altersgrenze), late retirement (age > Regelaltersgrenze), various eligibility combinations
bruttorente_basisbetrag_m rente/altersrente/altersrente.py Person not receiving pension (bezieht_rente = False)
altersfreibetrag_y_ab_2005 einkommensteuer/abzüge/alter.py Person above altersentlastungsbetrag_altersgrenze
betrag_m_eg_ab_2023 grundsicherung/im_alter/im_alter.py Wealth/family composition edge cases
betrag_m_nach_wohnort / betrag_m_einheitlich rente/erwerbsminderung/erwerbsminderung.py Not eligible for Erwerbsminderungsrente
mean_entgeltpunkte_zuschlag rente/grundrente/grundrente.py Different Entgeltpunkte threshold cases
neue_entgeltpunkte_nach_wohnort rente/entgeltpunkte.py East Germany income scaling (wohnort_ost)
einkommen_m_ab_04_1999 kranken/beitrag/einkommen.py Not regulär_beschäftigt (self-employed)
berechtigte_wohnfläche bürgergeld/regelbedarf.py Property ownership (wohneigentum)
einkommen_m_wthh wohngeld/einkommen.py Minimum income lookup edge case
einkommen_y_bis_2025 lohnsteuer/einkommen.py privat_versichert = True

Notes

  • Current coverage: 97.2% line, 90.2% branch (policy code only)
  • All structurally uncoverable lines are already excluded (parameter validation, JAX-only branches, pass bodies, test infrastructure)
  • The 2026 functions will become testable after 2026-01-01 or by adding test cases with policy_date_str="2026-01-01"

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions