Files
abap-llm/tasks_gen/train/G1933/hidden/pyro_hidden.clas.abap
2026-10-05 22:08:59 +02:00

215 lines
8.6 KiB
ABAP

CLASS {{p}}pyro_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PUBLIC SECTION.
INTERFACES {{p}}if_pyro_order.
PRIVATE SECTION.
DATA mo_cut TYPE REF TO {{p}}if_pyro_order.
METHODS setup.
METHODS reason_values FOR TESTING.
METHODS reason_length FOR TESTING.
METHODS zone_length FOR TESTING.
METHODS amount_type FOR TESTING.
METHODS order_structure FOR TESTING.
METHODS reason_structure FOR TESTING.
METHODS limit_values FOR TESTING.
METHODS distance_values FOR TESTING.
METHODS check_order_call FOR TESTING.
METHODS calc_fee_call FOR TESTING.
ENDCLASS.
CLASS {{p}}pyro_hidden IMPLEMENTATION.
METHOD setup.
mo_cut = NEW {{p}}pyro_hidden( ).
ENDMETHOD.
METHOD {{p}}if_pyro_order~check_order.
rv_reason = {{p}}if_pyro_order=>c_reason-ok.
ENDMETHOD.
METHOD {{p}}if_pyro_order~calc_fee.
rv_fee = 0.
ENDMETHOD.
METHOD reason_values.
DATA lv_exp TYPE {{p}}if_pyro_order=>ty_reason.
lv_exp = 'OK'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp
act = {{p}}if_pyro_order=>c_reason-ok ).
lv_exp = 'CALIBRE'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp
act = {{p}}if_pyro_order=>c_reason-calibre ).
lv_exp = 'ZONE'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp
act = {{p}}if_pyro_order=>c_reason-zone ).
lv_exp = 'WIND'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp
act = {{p}}if_pyro_order=>c_reason-wind ).
lv_exp = 'TIME'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp
act = {{p}}if_pyro_order=>c_reason-time ).
lv_exp = 'DISTANCE'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp
act = {{p}}if_pyro_order=>c_reason-distance ).
ENDMETHOD.
METHOD reason_length.
DATA lv_reason TYPE {{p}}if_pyro_order=>ty_reason.
DATA lv_exp TYPE {{p}}if_pyro_order=>ty_reason.
DATA lv_long TYPE c LENGTH 13.
DATA lv_kind TYPE c LENGTH 1.
DATA lv_len TYPE i.
DATA(lo_descr) = cl_abap_typedescr=>describe_by_data( lv_reason ).
lv_kind = 'C'.
cl_abap_unit_assert=>assert_equals( exp = lv_kind act = lo_descr->type_kind ).
lv_long = 'ABCDEFGHIJKLM'.
lv_reason = lv_long.
lv_exp = 'ABCDEFGHIJKL'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_reason ).
lv_len = 12.
cl_abap_unit_assert=>assert_equals( exp = lv_len act = strlen( lv_reason ) ).
ENDMETHOD.
METHOD zone_length.
DATA lv_zone TYPE {{p}}if_pyro_order=>ty_zone.
DATA lv_exp TYPE {{p}}if_pyro_order=>ty_zone.
DATA lv_long TYPE c LENGTH 2.
DATA lv_kind TYPE c LENGTH 1.
DATA lv_len TYPE i.
DATA(lo_descr) = cl_abap_typedescr=>describe_by_data( lv_zone ).
lv_kind = 'C'.
cl_abap_unit_assert=>assert_equals( exp = lv_kind act = lo_descr->type_kind ).
lv_long = 'AB'.
lv_zone = lv_long.
lv_exp = 'A'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_zone ).
lv_len = 1.
cl_abap_unit_assert=>assert_equals( exp = lv_len act = strlen( lv_zone ) ).
ENDMETHOD.
METHOD amount_type.
DATA lv_amount TYPE {{p}}if_pyro_order=>ty_amount.
DATA lv_exp TYPE {{p}}if_pyro_order=>ty_amount.
DATA lv_kind TYPE c LENGTH 1.
DATA lv_dec TYPE i.
DATA lv_len TYPE i.
DATA(lo_descr) = cl_abap_typedescr=>describe_by_data( lv_amount ).
lv_kind = 'P'.
cl_abap_unit_assert=>assert_equals( exp = lv_kind act = lo_descr->type_kind ).
lv_dec = 2.
cl_abap_unit_assert=>assert_equals( exp = lv_dec act = lo_descr->decimals ).
lv_len = 8.
cl_abap_unit_assert=>assert_equals( exp = lv_len act = lo_descr->length ).
lv_amount = '1234.56'.
lv_exp = '1234.56'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_amount ).
ENDMETHOD.
METHOD order_structure.
DATA ls_order TYPE {{p}}if_pyro_order=>ty_order.
DATA lv_count TYPE i.
DATA lv_kind TYPE c LENGTH 1.
DATA lv_name TYPE c LENGTH 30.
DATA lv_exp_name TYPE c LENGTH 30.
DATA(lo_struct) = CAST cl_abap_structdescr(
cl_abap_typedescr=>describe_by_data( ls_order ) ).
DATA(lt_comp) = lo_struct->get_components( ).
lv_count = 6.
cl_abap_unit_assert=>assert_equals( exp = lv_count act = lines( lt_comp ) ).
lv_name = lt_comp[ 1 ]-name.
lv_exp_name = 'CALIBRE_MM'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp_name act = lv_name ).
lv_kind = 'I'.
DATA(lo_elem) = cl_abap_typedescr=>describe_by_data( ls_order-calibre_mm ).
cl_abap_unit_assert=>assert_equals( exp = lv_kind act = lo_elem->type_kind ).
lo_elem = cl_abap_typedescr=>describe_by_data( ls_order-wind_kmh ).
cl_abap_unit_assert=>assert_equals( exp = lv_kind act = lo_elem->type_kind ).
lo_elem = cl_abap_typedescr=>describe_by_data( ls_order-start_hour ).
cl_abap_unit_assert=>assert_equals( exp = lv_kind act = lo_elem->type_kind ).
lo_elem = cl_abap_typedescr=>describe_by_data( ls_order-crowd_m ).
cl_abap_unit_assert=>assert_equals( exp = lv_kind act = lo_elem->type_kind ).
lo_elem = cl_abap_typedescr=>describe_by_data( ls_order-duration_min ).
cl_abap_unit_assert=>assert_equals( exp = lv_kind act = lo_elem->type_kind ).
DATA lv_zone_kind TYPE c LENGTH 1.
lv_zone_kind = 'C'.
lo_elem = cl_abap_typedescr=>describe_by_data( ls_order-zone_code ).
cl_abap_unit_assert=>assert_equals( exp = lv_zone_kind act = lo_elem->type_kind ).
ENDMETHOD.
METHOD reason_structure.
DATA(ls_reason) = {{p}}if_pyro_order=>c_reason.
DATA lv_count TYPE i.
DATA(lo_struct) = CAST cl_abap_structdescr(
cl_abap_typedescr=>describe_by_data( ls_reason ) ).
DATA(lt_comp) = lo_struct->get_components( ).
lv_count = 6.
cl_abap_unit_assert=>assert_equals( exp = lv_count act = lines( lt_comp ) ).
ENDMETHOD.
METHOD limit_values.
DATA lv_exp TYPE i.
lv_exp = 30.
cl_abap_unit_assert=>assert_equals( exp = lv_exp
act = {{p}}if_pyro_order=>c_limit-max_wind_kmh ).
lv_exp = 18.
cl_abap_unit_assert=>assert_equals( exp = lv_exp
act = {{p}}if_pyro_order=>c_limit-min_start_hour ).
lv_exp = 23.
cl_abap_unit_assert=>assert_equals( exp = lv_exp
act = {{p}}if_pyro_order=>c_limit-max_start_hour ).
lv_exp = 10.
cl_abap_unit_assert=>assert_equals( exp = lv_exp
act = {{p}}if_pyro_order=>c_limit-free_minutes ).
lv_exp = 5000.
cl_abap_unit_assert=>assert_equals( exp = lv_exp
act = {{p}}if_pyro_order=>c_limit-max_fee_euro ).
ENDMETHOD.
METHOD distance_values.
DATA lv_exp TYPE i.
lv_exp = 30.
cl_abap_unit_assert=>assert_equals( exp = lv_exp
act = {{p}}if_pyro_order=>c_distance-calibre_50 ).
lv_exp = 45.
cl_abap_unit_assert=>assert_equals( exp = lv_exp
act = {{p}}if_pyro_order=>c_distance-calibre_75 ).
lv_exp = 60.
cl_abap_unit_assert=>assert_equals( exp = lv_exp
act = {{p}}if_pyro_order=>c_distance-calibre_100 ).
lv_exp = 90.
cl_abap_unit_assert=>assert_equals( exp = lv_exp
act = {{p}}if_pyro_order=>c_distance-calibre_150 ).
lv_exp = 120.
cl_abap_unit_assert=>assert_equals( exp = lv_exp
act = {{p}}if_pyro_order=>c_distance-calibre_200 ).
ENDMETHOD.
METHOD check_order_call.
DATA ls_order TYPE {{p}}if_pyro_order=>ty_order.
DATA lv_exp TYPE {{p}}if_pyro_order=>ty_reason.
ls_order = VALUE #( calibre_mm = 100
zone_code = 'A'
wind_kmh = 10
start_hour = 20
crowd_m = 60
duration_min = 15 ).
DATA(lv_reason) = mo_cut->check_order( ls_order ).
lv_exp = 'OK'.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_reason ).
ENDMETHOD.
METHOD calc_fee_call.
DATA ls_order TYPE {{p}}if_pyro_order=>ty_order.
DATA lv_exp TYPE {{p}}if_pyro_order=>ty_amount.
ls_order = VALUE #( calibre_mm = 100
zone_code = 'A'
wind_kmh = 10
start_hour = 20
crowd_m = 60
duration_min = 15 ).
DATA(lv_fee) = mo_cut->calc_fee( ls_order ).
lv_exp = 0.
cl_abap_unit_assert=>assert_equals( exp = lv_exp act = lv_fee ).
ENDMETHOD.
ENDCLASS.