Files
abap-llm/tasks_gen/eval/G0108/hidden/t16_hidden.clas.abap

117 lines
5.0 KiB
ABAP

CLASS {{p}}t16_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
PRIVATE SECTION.
CLASS-DATA go_env TYPE REF TO if_cds_test_environment.
CLASS-METHODS class_setup.
CLASS-METHODS class_teardown.
METHODS setup.
METHODS assert_amount
IMPORTING iv_exp TYPE decfloat34
iv_act TYPE decfloat34.
METHODS billable_min_rounds_up FOR TESTING.
METHODS billable_min_exact FOR TESTING.
METHODS rate_national FOR TESTING.
METHODS rate_international FOR TESTING.
METHODS rate_other FOR TESTING.
METHODS charge_other FOR TESTING.
METHODS charge_no_discount FOR TESTING.
METHODS charge_long_discount FOR TESTING.
METHODS charge_rounding FOR TESTING.
METHODS charge_boundary FOR TESTING.
METHODS row_count FOR TESTING.
ENDCLASS.
CLASS {{p}}t16_hidden IMPLEMENTATION.
METHOD class_setup.
go_env = cl_cds_test_environment=>create( i_for_entity = '{{P}}I_CALL_CHARGE' ).
ENDMETHOD.
METHOD class_teardown.
go_env->destroy( ).
ENDMETHOD.
METHOD setup.
DATA lt_calls TYPE STANDARD TABLE OF {{p}}calls WITH EMPTY KEY.
go_env->clear_doubles( ).
lt_calls = VALUE #(
( call_id = 'C1' customer = 'ACME' call_date = '20240110' start_time = '100000' duration_sec = 125 dest_type = 'N' )
( call_id = 'C2' customer = 'BETA' call_date = '20240110' start_time = '220000' duration_sec = 3600 dest_type = 'I' )
( call_id = 'C3' customer = 'GAMMA' call_date = '20240110' start_time = '073000' duration_sec = 30 dest_type = 'N' )
( call_id = 'C4' customer = 'DELTA' call_date = '20240110' start_time = '120000' duration_sec = 120 dest_type = 'X' )
( call_id = 'C5' customer = 'EPSILON' call_date = '20240110' start_time = '120000' duration_sec = 1800 dest_type = 'N' )
( call_id = 'C6' customer = 'ZETA' call_date = '20240110' start_time = '120000' duration_sec = 1801 dest_type = 'N' )
).
go_env->insert_test_data( lt_calls ).
ENDMETHOD.
METHOD assert_amount.
DATA lv_diff TYPE decfloat34.
lv_diff = abs( iv_exp - iv_act ).
cl_abap_unit_assert=>assert_equals(
exp = abap_true
act = xsdbool( lv_diff < CONV decfloat34( '0.005' ) ) ).
ENDMETHOD.
METHOD billable_min_rounds_up.
SELECT SINGLE billable_min FROM {{p}}i_call_charge WHERE call_id = 'C1' INTO @DATA(lv_min1).
cl_abap_unit_assert=>assert_equals( exp = 3 act = lv_min1 ).
SELECT SINGLE billable_min FROM {{p}}i_call_charge WHERE call_id = 'C2' INTO @DATA(lv_min2).
cl_abap_unit_assert=>assert_equals( exp = 60 act = lv_min2 ).
SELECT SINGLE billable_min FROM {{p}}i_call_charge WHERE call_id = 'C3' INTO @DATA(lv_min3).
cl_abap_unit_assert=>assert_equals( exp = 1 act = lv_min3 ).
SELECT SINGLE billable_min FROM {{p}}i_call_charge WHERE call_id = 'C4' INTO @DATA(lv_min4).
cl_abap_unit_assert=>assert_equals( exp = 2 act = lv_min4 ).
ENDMETHOD.
METHOD billable_min_exact.
SELECT SINGLE billable_min FROM {{p}}i_call_charge WHERE call_id = 'C5' INTO @DATA(lv_min).
cl_abap_unit_assert=>assert_equals( exp = 30 act = lv_min ).
ENDMETHOD.
METHOD rate_national.
SELECT SINGLE rate FROM {{p}}i_call_charge WHERE call_id = 'C1' INTO @DATA(lv_rate).
assert_amount( iv_exp = CONV decfloat34( '0.09' ) iv_act = CONV decfloat34( lv_rate ) ).
ENDMETHOD.
METHOD rate_international.
SELECT SINGLE rate FROM {{p}}i_call_charge WHERE call_id = 'C2' INTO @DATA(lv_rate).
assert_amount( iv_exp = CONV decfloat34( '0.25' ) iv_act = CONV decfloat34( lv_rate ) ).
ENDMETHOD.
METHOD rate_other.
SELECT SINGLE rate FROM {{p}}i_call_charge WHERE call_id = 'C4' INTO @DATA(lv_rate).
assert_amount( iv_exp = CONV decfloat34( '0.15' ) iv_act = CONV decfloat34( lv_rate ) ).
ENDMETHOD.
METHOD charge_other.
SELECT SINGLE charge FROM {{p}}i_call_charge WHERE call_id = 'C4' INTO @DATA(lv_charge).
assert_amount( iv_exp = CONV decfloat34( '0.30' ) iv_act = CONV decfloat34( lv_charge ) ).
ENDMETHOD.
METHOD charge_no_discount.
SELECT SINGLE charge FROM {{p}}i_call_charge WHERE call_id = 'C1' INTO @DATA(lv_charge).
assert_amount( iv_exp = CONV decfloat34( '0.27' ) iv_act = CONV decfloat34( lv_charge ) ).
ENDMETHOD.
METHOD charge_long_discount.
SELECT SINGLE charge FROM {{p}}i_call_charge WHERE call_id = 'C2' INTO @DATA(lv_charge).
assert_amount( iv_exp = CONV decfloat34( '13.50' ) iv_act = CONV decfloat34( lv_charge ) ).
ENDMETHOD.
METHOD charge_rounding.
SELECT SINGLE charge FROM {{p}}i_call_charge WHERE call_id = 'C6' INTO @DATA(lv_charge).
assert_amount( iv_exp = CONV decfloat34( '2.51' ) iv_act = CONV decfloat34( lv_charge ) ).
ENDMETHOD.
METHOD charge_boundary.
SELECT SINGLE charge FROM {{p}}i_call_charge WHERE call_id = 'C5' INTO @DATA(lv_charge).
assert_amount( iv_exp = CONV decfloat34( '2.70' ) iv_act = CONV decfloat34( lv_charge ) ).
ENDMETHOD.
METHOD row_count.
SELECT COUNT(*) FROM {{p}}i_call_charge INTO @DATA(lv_rows).
cl_abap_unit_assert=>assert_equals( exp = 6 act = lv_rows ).
ENDMETHOD.
ENDCLASS.