Fix coverage with several contract classes; table annotation and file path checks; clean task dir on write

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
This commit is contained in:
Kral
2026-10-03 08:44:35 +02:00
parent fb576b0954
commit 03ab36149e
388 changed files with 28620 additions and 339 deletions

View File

@@ -0,0 +1,267 @@
CLASS {{p}}t_print_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS a4_mono_price FOR TESTING.
METHODS a4_color_price FOR TESTING.
METHODS a3_a5_price FOR TESTING.
METHODS volume_discount_5 FOR TESTING.
METHODS volume_discount_10 FOR TESTING.
METHODS minimum_charge FOR TESTING.
METHODS copies_multiply FOR TESTING.
METHODS rejects_zero_pages FOR TESTING.
METHODS rejects_zero_copies FOR TESTING.
METHODS rejects_unknown_values FOR TESTING.
METHODS rejects_over_limit FOR TESTING.
METHODS first_error_wins FOR TESTING.
ENDCLASS.
CLASS {{p}}t_print_hidden IMPLEMENTATION.
METHOD a4_mono_price.
DATA lv_cents TYPE i.
DATA(lo_cut) = NEW {{p}}print_job_pricer( ).
TRY.
DATA(lv_price) = lo_cut->calculate_price( iv_pages = 100
iv_copies = 1
iv_paper = 'A4'
iv_color = 'M'
iv_dept = 'SALE' ).
lv_cents = lv_price * 100.
cl_abap_unit_assert=>assert_equals( exp = 500 act = lv_cents ).
CATCH cx_root.
cl_abap_unit_assert=>fail( msg = 'unexpected exception' ).
ENDTRY.
ENDMETHOD.
METHOD a4_color_price.
DATA lv_cents TYPE i.
DATA(lo_cut) = NEW {{p}}print_job_pricer( ).
TRY.
DATA(lv_price) = lo_cut->calculate_price( iv_pages = 100
iv_copies = 1
iv_paper = 'A4'
iv_color = 'C'
iv_dept = 'SALE' ).
lv_cents = lv_price * 100.
cl_abap_unit_assert=>assert_equals( exp = 2000 act = lv_cents ).
CATCH cx_root.
cl_abap_unit_assert=>fail( msg = 'unexpected exception' ).
ENDTRY.
ENDMETHOD.
METHOD a3_a5_price.
DATA lv_cents TYPE i.
DATA(lo_cut) = NEW {{p}}print_job_pricer( ).
TRY.
DATA(lv_price) = lo_cut->calculate_price( iv_pages = 100
iv_copies = 1
iv_paper = 'A3'
iv_color = 'M'
iv_dept = 'PROD' ).
lv_cents = lv_price * 100.
cl_abap_unit_assert=>assert_equals( exp = 900 act = lv_cents ).
CATCH cx_root.
cl_abap_unit_assert=>fail( msg = 'unexpected exception' ).
ENDTRY.
TRY.
DATA(lv_a5) = lo_cut->calculate_price( iv_pages = 100
iv_copies = 1
iv_paper = 'A5'
iv_color = 'M'
iv_dept = 'HR' ).
lv_cents = lv_a5 * 100.
cl_abap_unit_assert=>assert_equals( exp = 300 act = lv_cents ).
CATCH cx_root.
cl_abap_unit_assert=>fail( msg = 'unexpected exception' ).
ENDTRY.
ENDMETHOD.
METHOD volume_discount_5.
DATA lv_cents TYPE i.
DATA(lo_cut) = NEW {{p}}print_job_pricer( ).
TRY.
DATA(lv_price) = lo_cut->calculate_price( iv_pages = 600
iv_copies = 1
iv_paper = 'A4'
iv_color = 'M'
iv_dept = 'IT' ).
lv_cents = lv_price * 100.
cl_abap_unit_assert=>assert_equals( exp = 2850 act = lv_cents ).
CATCH cx_root.
cl_abap_unit_assert=>fail( msg = 'unexpected exception' ).
ENDTRY.
TRY.
DATA(lv_500) = lo_cut->calculate_price( iv_pages = 500
iv_copies = 1
iv_paper = 'A4'
iv_color = 'M'
iv_dept = 'IT' ).
lv_cents = lv_500 * 100.
cl_abap_unit_assert=>assert_equals( exp = 2375 act = lv_cents ).
CATCH cx_root.
cl_abap_unit_assert=>fail( msg = 'unexpected exception' ).
ENDTRY.
ENDMETHOD.
METHOD volume_discount_10.
DATA lv_cents TYPE i.
DATA(lo_cut) = NEW {{p}}print_job_pricer( ).
TRY.
DATA(lv_price) = lo_cut->calculate_price( iv_pages = 1000
iv_copies = 1
iv_paper = 'A4'
iv_color = 'M'
iv_dept = 'SALE' ).
lv_cents = lv_price * 100.
cl_abap_unit_assert=>assert_equals( exp = 4500 act = lv_cents ).
CATCH cx_root.
cl_abap_unit_assert=>fail( msg = 'unexpected exception' ).
ENDTRY.
ENDMETHOD.
METHOD minimum_charge.
DATA lv_cents TYPE i.
DATA(lo_cut) = NEW {{p}}print_job_pricer( ).
TRY.
DATA(lv_price) = lo_cut->calculate_price( iv_pages = 10
iv_copies = 1
iv_paper = 'A4'
iv_color = 'M'
iv_dept = 'SALE' ).
lv_cents = lv_price * 100.
cl_abap_unit_assert=>assert_equals( exp = 100 act = lv_cents ).
CATCH cx_root.
cl_abap_unit_assert=>fail( msg = 'unexpected exception' ).
ENDTRY.
ENDMETHOD.
METHOD copies_multiply.
DATA lv_cents TYPE i.
DATA(lo_cut) = NEW {{p}}print_job_pricer( ).
TRY.
DATA(lv_price) = lo_cut->calculate_price( iv_pages = 200
iv_copies = 2
iv_paper = 'A3'
iv_color = 'C'
iv_dept = 'PROD' ).
lv_cents = lv_price * 100.
cl_abap_unit_assert=>assert_equals( exp = 14400 act = lv_cents ).
CATCH cx_root.
cl_abap_unit_assert=>fail( msg = 'unexpected exception' ).
ENDTRY.
ENDMETHOD.
METHOD rejects_zero_pages.
DATA(lo_cut) = NEW {{p}}print_job_pricer( ).
TRY.
lo_cut->calculate_price( iv_pages = 0
iv_copies = 1
iv_paper = 'A4'
iv_color = 'M'
iv_dept = 'SALE' ).
cl_abap_unit_assert=>fail( msg = 'exception expected' ).
CATCH {{p}}cx_print_job_error INTO DATA(lo_error).
cl_abap_unit_assert=>assert_equals(
exp = {{p}}cx_print_job_error=>c_reason-pages
act = lo_error->mv_reason ).
ENDTRY.
ENDMETHOD.
METHOD rejects_zero_copies.
DATA(lo_cut) = NEW {{p}}print_job_pricer( ).
TRY.
lo_cut->calculate_price( iv_pages = 100
iv_copies = 0
iv_paper = 'A4'
iv_color = 'M'
iv_dept = 'SALE' ).
cl_abap_unit_assert=>fail( msg = 'exception expected' ).
CATCH {{p}}cx_print_job_error INTO DATA(lo_error).
cl_abap_unit_assert=>assert_equals(
exp = {{p}}cx_print_job_error=>c_reason-copies
act = lo_error->mv_reason ).
ENDTRY.
ENDMETHOD.
METHOD rejects_unknown_values.
DATA(lo_cut) = NEW {{p}}print_job_pricer( ).
TRY.
lo_cut->calculate_price( iv_pages = 100
iv_copies = 1
iv_paper = 'B5'
iv_color = 'M'
iv_dept = 'SALE' ).
cl_abap_unit_assert=>fail( msg = 'exception expected' ).
CATCH {{p}}cx_print_job_error INTO DATA(lo_paper).
cl_abap_unit_assert=>assert_equals(
exp = {{p}}cx_print_job_error=>c_reason-paper
act = lo_paper->mv_reason ).
ENDTRY.
TRY.
lo_cut->calculate_price( iv_pages = 100
iv_copies = 1
iv_paper = 'A4'
iv_color = 'X'
iv_dept = 'SALE' ).
cl_abap_unit_assert=>fail( msg = 'exception expected' ).
CATCH {{p}}cx_print_job_error INTO DATA(lo_color).
cl_abap_unit_assert=>assert_equals(
exp = {{p}}cx_print_job_error=>c_reason-color
act = lo_color->mv_reason ).
ENDTRY.
TRY.
lo_cut->calculate_price( iv_pages = 100
iv_copies = 1
iv_paper = 'A4'
iv_color = 'M'
iv_dept = 'XYZ' ).
cl_abap_unit_assert=>fail( msg = 'exception expected' ).
CATCH {{p}}cx_print_job_error INTO DATA(lo_dept).
cl_abap_unit_assert=>assert_equals(
exp = {{p}}cx_print_job_error=>c_reason-dept
act = lo_dept->mv_reason ).
ENDTRY.
ENDMETHOD.
METHOD rejects_over_limit.
DATA lv_cents TYPE i.
DATA(lo_cut) = NEW {{p}}print_job_pricer( ).
TRY.
lo_cut->calculate_price( iv_pages = 3000
iv_copies = 2
iv_paper = 'A4'
iv_color = 'M'
iv_dept = 'SALE' ).
cl_abap_unit_assert=>fail( msg = 'exception expected' ).
CATCH {{p}}cx_print_limit INTO DATA(lo_error).
cl_abap_unit_assert=>assert_equals( exp = 6000
act = lo_error->mv_pages ).
ENDTRY.
TRY.
DATA(lv_price) = lo_cut->calculate_price( iv_pages = 5000
iv_copies = 1
iv_paper = 'A4'
iv_color = 'M'
iv_dept = 'SALE' ).
lv_cents = lv_price * 100.
cl_abap_unit_assert=>assert_equals( exp = 22500 act = lv_cents ).
CATCH cx_root.
cl_abap_unit_assert=>fail( msg = 'unexpected exception' ).
ENDTRY.
ENDMETHOD.
METHOD first_error_wins.
DATA(lo_cut) = NEW {{p}}print_job_pricer( ).
TRY.
lo_cut->calculate_price( iv_pages = 0
iv_copies = 0
iv_paper = 'B5'
iv_color = 'X'
iv_dept = 'XYZ' ).
cl_abap_unit_assert=>fail( msg = 'exception expected' ).
CATCH {{p}}cx_print_job_error INTO DATA(lo_error).
cl_abap_unit_assert=>assert_equals(
exp = {{p}}cx_print_job_error=>c_reason-pages
act = lo_error->mv_reason ).
ENDTRY.
ENDMETHOD.
ENDCLASS.