Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014aUaQeLnwbb1zTpN7kHeat
268 lines
11 KiB
ABAP
268 lines
11 KiB
ABAP
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.
|