Pipeline controller: plan 2 (hard +, error +50 %), backlog throttle, 2 trajectory workers, stop rules, summaries every 50; budget reserve
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
267
tasks_gen/train/G1035/hidden/t120_hidden.clas.abap
Normal file
267
tasks_gen/train/G1035/hidden/t120_hidden.clas.abap
Normal file
@@ -0,0 +1,267 @@
|
||||
CLASS {{p}}t120_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
|
||||
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
||||
PRIVATE SECTION.
|
||||
DATA mo_cut TYPE REF TO {{p}}photo_pricer.
|
||||
|
||||
METHODS setup.
|
||||
METHODS studio_quote FOR TESTING.
|
||||
METHODS outdoor_quote FOR TESTING.
|
||||
METHODS studio_ignores_distance FOR TESTING.
|
||||
METHODS rounds_up_minutes FOR TESTING.
|
||||
METHODS free_persons FOR TESTING.
|
||||
METHODS crew_fee_large_group FOR TESTING.
|
||||
METHODS photo_rate_at_50 FOR TESTING.
|
||||
METHODS rejects_unknown_session FOR TESTING.
|
||||
METHODS rejects_bad_minutes FOR TESTING.
|
||||
METHODS rejects_bad_persons FOR TESTING.
|
||||
METHODS rejects_bad_photos FOR TESTING.
|
||||
METHODS rejects_outdoor_no_dist FOR TESTING.
|
||||
|
||||
METHODS build_request
|
||||
IMPORTING iv_session TYPE {{p}}photo_pricer=>ty_session
|
||||
iv_minutes TYPE i
|
||||
iv_persons TYPE i
|
||||
iv_photos TYPE i
|
||||
iv_distance_km TYPE i
|
||||
RETURNING VALUE(rs_request) TYPE {{p}}photo_pricer=>ty_request.
|
||||
|
||||
METHODS assert_amount
|
||||
IMPORTING iv_expected TYPE i
|
||||
iv_act TYPE {{p}}photo_pricer=>ty_amount
|
||||
iv_msg TYPE string.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS {{p}}t120_hidden IMPLEMENTATION.
|
||||
METHOD setup.
|
||||
mo_cut = NEW {{p}}photo_pricer( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD build_request.
|
||||
rs_request = VALUE #( session = iv_session
|
||||
minutes = iv_minutes
|
||||
persons = iv_persons
|
||||
photos = iv_photos
|
||||
distance_km = iv_distance_km ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD assert_amount.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = CONV {{p}}photo_pricer=>ty_amount( iv_expected )
|
||||
act = iv_act
|
||||
msg = iv_msg ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD studio_quote.
|
||||
DATA(ls_request) = build_request( iv_session = {{p}}photo_pricer=>c_session-studio
|
||||
iv_minutes = 90
|
||||
iv_persons = 3
|
||||
iv_photos = 10
|
||||
iv_distance_km = 0 ).
|
||||
DATA(ls_quote) = mo_cut->calculate( ls_request ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = {{p}}photo_pricer=>c_reason-ok
|
||||
act = ls_quote-reason ).
|
||||
assert_amount( iv_expected = 120 iv_act = ls_quote-time_fee iv_msg = `time fee` ).
|
||||
assert_amount( iv_expected = 10 iv_act = ls_quote-person_fee iv_msg = `person fee` ).
|
||||
assert_amount( iv_expected = 50 iv_act = ls_quote-photo_fee iv_msg = `photo fee` ).
|
||||
assert_amount( iv_expected = 0 iv_act = ls_quote-travel_fee iv_msg = `travel fee` ).
|
||||
assert_amount( iv_expected = 0 iv_act = ls_quote-crew_fee iv_msg = `crew fee` ).
|
||||
assert_amount( iv_expected = 180 iv_act = ls_quote-total iv_msg = `total` ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD outdoor_quote.
|
||||
DATA(ls_request) = build_request( iv_session = {{p}}photo_pricer=>c_session-outdoor
|
||||
iv_minutes = 45
|
||||
iv_persons = 10
|
||||
iv_photos = 50
|
||||
iv_distance_km = 20 ).
|
||||
DATA(ls_quote) = mo_cut->calculate( ls_request ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = {{p}}photo_pricer=>c_reason-ok
|
||||
act = ls_quote-reason ).
|
||||
assert_amount( iv_expected = 60 iv_act = ls_quote-time_fee iv_msg = `time fee` ).
|
||||
assert_amount( iv_expected = 80 iv_act = ls_quote-person_fee iv_msg = `person fee` ).
|
||||
assert_amount( iv_expected = 200 iv_act = ls_quote-photo_fee iv_msg = `photo fee` ).
|
||||
assert_amount( iv_expected = 55 iv_act = ls_quote-travel_fee iv_msg = `travel fee` ).
|
||||
assert_amount( iv_expected = 40 iv_act = ls_quote-crew_fee iv_msg = `crew fee` ).
|
||||
assert_amount( iv_expected = 435 iv_act = ls_quote-total iv_msg = `total` ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD studio_ignores_distance.
|
||||
DATA(ls_request) = build_request( iv_session = {{p}}photo_pricer=>c_session-studio
|
||||
iv_minutes = 30
|
||||
iv_persons = 1
|
||||
iv_photos = 0
|
||||
iv_distance_km = 25 ).
|
||||
DATA(ls_quote) = mo_cut->calculate( ls_request ).
|
||||
assert_amount( iv_expected = 0 iv_act = ls_quote-travel_fee iv_msg = `travel fee` ).
|
||||
assert_amount( iv_expected = 40 iv_act = ls_quote-total iv_msg = `total` ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rounds_up_minutes.
|
||||
DATA(ls_request) = build_request( iv_session = {{p}}photo_pricer=>c_session-studio
|
||||
iv_minutes = 31
|
||||
iv_persons = 1
|
||||
iv_photos = 0
|
||||
iv_distance_km = 0 ).
|
||||
DATA(ls_quote) = mo_cut->calculate( ls_request ).
|
||||
assert_amount( iv_expected = 60 iv_act = ls_quote-time_fee iv_msg = `31 minutes` ).
|
||||
|
||||
ls_request = build_request( iv_session = {{p}}photo_pricer=>c_session-studio
|
||||
iv_minutes = 480
|
||||
iv_persons = 1
|
||||
iv_photos = 0
|
||||
iv_distance_km = 0 ).
|
||||
ls_quote = mo_cut->calculate( ls_request ).
|
||||
assert_amount( iv_expected = 640 iv_act = ls_quote-time_fee iv_msg = `480 minutes` ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD free_persons.
|
||||
DATA(ls_request) = build_request( iv_session = {{p}}photo_pricer=>c_session-studio
|
||||
iv_minutes = 30
|
||||
iv_persons = 2
|
||||
iv_photos = 0
|
||||
iv_distance_km = 0 ).
|
||||
DATA(ls_quote) = mo_cut->calculate( ls_request ).
|
||||
assert_amount( iv_expected = 0 iv_act = ls_quote-person_fee iv_msg = `two persons` ).
|
||||
|
||||
ls_request = build_request( iv_session = {{p}}photo_pricer=>c_session-studio
|
||||
iv_minutes = 30
|
||||
iv_persons = 5
|
||||
iv_photos = 0
|
||||
iv_distance_km = 0 ).
|
||||
ls_quote = mo_cut->calculate( ls_request ).
|
||||
assert_amount( iv_expected = 30 iv_act = ls_quote-person_fee iv_msg = `five persons` ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD crew_fee_large_group.
|
||||
DATA(ls_request) = build_request( iv_session = {{p}}photo_pricer=>c_session-studio
|
||||
iv_minutes = 30
|
||||
iv_persons = 8
|
||||
iv_photos = 0
|
||||
iv_distance_km = 0 ).
|
||||
DATA(ls_quote) = mo_cut->calculate( ls_request ).
|
||||
assert_amount( iv_expected = 0 iv_act = ls_quote-crew_fee iv_msg = `eight persons` ).
|
||||
|
||||
ls_request = build_request( iv_session = {{p}}photo_pricer=>c_session-studio
|
||||
iv_minutes = 30
|
||||
iv_persons = 9
|
||||
iv_photos = 0
|
||||
iv_distance_km = 0 ).
|
||||
ls_quote = mo_cut->calculate( ls_request ).
|
||||
assert_amount( iv_expected = 70 iv_act = ls_quote-person_fee iv_msg = `nine persons` ).
|
||||
assert_amount( iv_expected = 40 iv_act = ls_quote-crew_fee iv_msg = `crew fee` ).
|
||||
assert_amount( iv_expected = 150 iv_act = ls_quote-total iv_msg = `total` ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD photo_rate_at_50.
|
||||
DATA(ls_request) = build_request( iv_session = {{p}}photo_pricer=>c_session-studio
|
||||
iv_minutes = 30
|
||||
iv_persons = 1
|
||||
iv_photos = 49
|
||||
iv_distance_km = 0 ).
|
||||
DATA(ls_quote) = mo_cut->calculate( ls_request ).
|
||||
assert_amount( iv_expected = 245 iv_act = ls_quote-photo_fee iv_msg = `49 photos` ).
|
||||
|
||||
ls_request = build_request( iv_session = {{p}}photo_pricer=>c_session-studio
|
||||
iv_minutes = 30
|
||||
iv_persons = 1
|
||||
iv_photos = 50
|
||||
iv_distance_km = 0 ).
|
||||
ls_quote = mo_cut->calculate( ls_request ).
|
||||
assert_amount( iv_expected = 200 iv_act = ls_quote-photo_fee iv_msg = `50 photos` ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rejects_unknown_session.
|
||||
DATA(ls_request) = build_request( iv_session = 'WEDDING'
|
||||
iv_minutes = 5
|
||||
iv_persons = 2
|
||||
iv_photos = 0
|
||||
iv_distance_km = 0 ).
|
||||
DATA(ls_quote) = mo_cut->calculate( ls_request ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = {{p}}photo_pricer=>c_reason-session
|
||||
act = ls_quote-reason ).
|
||||
assert_amount( iv_expected = 0 iv_act = ls_quote-total iv_msg = `total` ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rejects_bad_minutes.
|
||||
DATA(ls_request) = build_request( iv_session = {{p}}photo_pricer=>c_session-studio
|
||||
iv_minutes = 29
|
||||
iv_persons = 2
|
||||
iv_photos = 0
|
||||
iv_distance_km = 0 ).
|
||||
DATA(ls_quote) = mo_cut->calculate( ls_request ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = {{p}}photo_pricer=>c_reason-minutes
|
||||
act = ls_quote-reason ).
|
||||
assert_amount( iv_expected = 0 iv_act = ls_quote-total iv_msg = `total` ).
|
||||
|
||||
ls_request = build_request( iv_session = {{p}}photo_pricer=>c_session-studio
|
||||
iv_minutes = 481
|
||||
iv_persons = 2
|
||||
iv_photos = 0
|
||||
iv_distance_km = 0 ).
|
||||
ls_quote = mo_cut->calculate( ls_request ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = {{p}}photo_pricer=>c_reason-minutes
|
||||
act = ls_quote-reason ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rejects_bad_persons.
|
||||
DATA(ls_request) = build_request( iv_session = {{p}}photo_pricer=>c_session-studio
|
||||
iv_minutes = 60
|
||||
iv_persons = 0
|
||||
iv_photos = 0
|
||||
iv_distance_km = 0 ).
|
||||
DATA(ls_quote) = mo_cut->calculate( ls_request ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = {{p}}photo_pricer=>c_reason-persons
|
||||
act = ls_quote-reason ).
|
||||
|
||||
ls_request = build_request( iv_session = {{p}}photo_pricer=>c_session-studio
|
||||
iv_minutes = 60
|
||||
iv_persons = 21
|
||||
iv_photos = 0
|
||||
iv_distance_km = 0 ).
|
||||
ls_quote = mo_cut->calculate( ls_request ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = {{p}}photo_pricer=>c_reason-persons
|
||||
act = ls_quote-reason ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rejects_bad_photos.
|
||||
DATA(ls_request) = build_request( iv_session = {{p}}photo_pricer=>c_session-studio
|
||||
iv_minutes = 60
|
||||
iv_persons = 2
|
||||
iv_photos = 201
|
||||
iv_distance_km = 0 ).
|
||||
DATA(ls_quote) = mo_cut->calculate( ls_request ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = {{p}}photo_pricer=>c_reason-photos
|
||||
act = ls_quote-reason ).
|
||||
|
||||
ls_request = build_request( iv_session = {{p}}photo_pricer=>c_session-studio
|
||||
iv_minutes = 60
|
||||
iv_persons = 2
|
||||
iv_photos = -1
|
||||
iv_distance_km = 0 ).
|
||||
ls_quote = mo_cut->calculate( ls_request ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = {{p}}photo_pricer=>c_reason-photos
|
||||
act = ls_quote-reason ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rejects_outdoor_no_dist.
|
||||
DATA(ls_request) = build_request( iv_session = {{p}}photo_pricer=>c_session-outdoor
|
||||
iv_minutes = 60
|
||||
iv_persons = 2
|
||||
iv_photos = 0
|
||||
iv_distance_km = 0 ).
|
||||
DATA(ls_quote) = mo_cut->calculate( ls_request ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = {{p}}photo_pricer=>c_reason-distance
|
||||
act = ls_quote-reason ).
|
||||
|
||||
ls_request = build_request( iv_session = {{p}}photo_pricer=>c_session-outdoor
|
||||
iv_minutes = 60
|
||||
iv_persons = 2
|
||||
iv_photos = 0
|
||||
iv_distance_km = 1 ).
|
||||
ls_quote = mo_cut->calculate( ls_request ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = {{p}}photo_pricer=>c_reason-ok
|
||||
act = ls_quote-reason ).
|
||||
assert_amount( iv_expected = 17 iv_act = ls_quote-travel_fee iv_msg = `travel fee` ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
Reference in New Issue
Block a user