abapGit/src/objects/rules/zcl_abapgit_field_rules.clas.testclasses.abap
Marc Bernard d9a2fc8fdf
Fix unit test in 702 - Part 3 (#7084)
Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-11-29 13:01:06 +01:00

271 lines
6.8 KiB
ABAP

CLASS ltcl_field_rules DEFINITION FOR TESTING RISK LEVEL HARMLESS
DURATION SHORT FINAL.
PRIVATE SECTION.
CONSTANTS:
c_package TYPE devclass VALUE '$TMP',
c_table TYPE tabname VALUE 'ZTEST'.
TYPES:
BEGIN OF ty_test,
key TYPE i,
user TYPE sy-uname,
date TYPE d,
time TYPE t,
ts TYPE timestamp,
tl TYPE timestampl,
END OF ty_test.
DATA mo_cut TYPE REF TO zcl_abapgit_field_rules.
METHODS:
setup,
fill_value
IMPORTING
iv_rule TYPE zif_abapgit_field_rules=>ty_fill_rule
iv_exp TYPE string
iv_len TYPE i OPTIONAL,
fill1 FOR TESTING,
fill2 FOR TESTING,
fill3 FOR TESTING,
fill4 FOR TESTING,
fill5 FOR TESTING,
fill6 FOR TESTING,
fill7 FOR TESTING,
get_rules
RETURNING
VALUE(ri_rules) TYPE REF TO zif_abapgit_field_rules,
apply_clear_logic FOR TESTING,
apply_fill_logic FOR TESTING.
ENDCLASS.
CLASS zcl_abapgit_field_rules DEFINITION LOCAL FRIENDS ltcl_field_rules.
CLASS ltcl_field_rules IMPLEMENTATION.
METHOD setup.
CREATE OBJECT mo_cut.
ENDMETHOD.
METHOD fill_value.
DATA lv_act TYPE string.
mo_cut->fill_value(
EXPORTING
iv_rule = iv_rule
iv_package = c_package
CHANGING
cv_value = lv_act ).
IF iv_len IS NOT INITIAL.
lv_act = lv_act(iv_len).
ENDIF.
cl_abap_unit_assert=>assert_equals(
act = lv_act
exp = iv_exp ).
ENDMETHOD.
METHOD fill1.
fill_value(
iv_rule = zif_abapgit_field_rules=>c_fill_rule-date
iv_exp = |{ sy-datum }| ).
ENDMETHOD.
METHOD fill2.
fill_value(
iv_rule = zif_abapgit_field_rules=>c_fill_rule-time
iv_len = 2
iv_exp = |{ sy-uzeit(2) }| ). " avoid comparing minutes
ENDMETHOD.
METHOD fill3.
DATA lv_timestamp TYPE timestamp.
GET TIME STAMP FIELD lv_timestamp.
fill_value(
iv_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp
iv_len = 10
iv_exp = |{ lv_timestamp DIV 10000 }| ). " avoid comparing minutes
ENDMETHOD.
METHOD fill4.
fill_value(
iv_rule = zif_abapgit_field_rules=>c_fill_rule-user
iv_exp = |{ sy-uname }| ).
ENDMETHOD.
METHOD fill5.
fill_value(
iv_rule = zif_abapgit_field_rules=>c_fill_rule-client
iv_exp = |{ sy-mandt }| ).
ENDMETHOD.
METHOD fill6.
fill_value(
iv_rule = zif_abapgit_field_rules=>c_fill_rule-package
iv_exp = |{ c_package }| ).
ENDMETHOD.
METHOD fill7.
fill_value(
iv_rule = 'XY'
iv_exp = '' ).
ENDMETHOD.
METHOD get_rules.
ri_rules = zcl_abapgit_field_rules=>create( )->add(
iv_table = c_table
iv_field = 'USER'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-user
)->add(
iv_table = c_table
iv_field = 'DATE'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-date
)->add(
iv_table = c_table
iv_field = 'TIME'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-time
)->add(
iv_table = c_table
iv_field = 'TS'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp
)->add(
iv_table = c_table
iv_field = 'TL'
iv_fill_rule = zif_abapgit_field_rules=>c_fill_rule-timestamp ).
ENDMETHOD.
METHOD apply_clear_logic.
DATA:
li_rules TYPE REF TO zif_abapgit_field_rules,
ls_act TYPE ty_test,
lt_act TYPE STANDARD TABLE OF ty_test.
ls_act-key = 1.
ls_act-user = 'MARC'.
ls_act-date = '19720101'.
ls_act-time = '123456'.
ls_act-ts = '19720101123456'.
ls_act-tl = '19720101123456.123456'.
INSERT ls_act INTO TABLE lt_act.
ls_act-key = 2.
ls_act-user = 'FRANK'.
ls_act-date = '20230101'.
ls_act-time = '000001'.
INSERT ls_act INTO TABLE lt_act.
li_rules = get_rules( ).
li_rules->apply_clear_logic(
EXPORTING
iv_table = c_table
CHANGING
ct_data = lt_act ).
cl_abap_unit_assert=>assert_equals(
act = lines( lt_act )
exp = 2 ).
READ TABLE lt_act INTO ls_act INDEX 1.
cl_abap_unit_assert=>assert_not_initial( ls_act-key ).
cl_abap_unit_assert=>assert_initial( ls_act-user ).
cl_abap_unit_assert=>assert_initial( ls_act-date ).
cl_abap_unit_assert=>assert_initial( ls_act-time ).
cl_abap_unit_assert=>assert_initial( ls_act-ts ).
cl_abap_unit_assert=>assert_initial( ls_act-tl ).
READ TABLE lt_act INTO ls_act INDEX 2.
cl_abap_unit_assert=>assert_not_initial( ls_act-key ).
cl_abap_unit_assert=>assert_initial( ls_act-user ).
cl_abap_unit_assert=>assert_initial( ls_act-date ).
cl_abap_unit_assert=>assert_initial( ls_act-time ).
cl_abap_unit_assert=>assert_initial( ls_act-ts ).
cl_abap_unit_assert=>assert_initial( ls_act-tl ).
ENDMETHOD.
METHOD apply_fill_logic.
DATA:
li_rules TYPE REF TO zif_abapgit_field_rules,
ls_act TYPE ty_test,
lt_act TYPE STANDARD TABLE OF ty_test,
lv_ts TYPE string,
lv_timestamp TYPE timestamp.
GET TIME STAMP FIELD lv_timestamp.
ls_act-key = 1.
INSERT ls_act INTO TABLE lt_act.
ls_act-key = 2.
ls_act-user = 'XYZ'.
ls_act-date = ''.
ls_act-time = '123456'.
INSERT ls_act INTO TABLE lt_act.
li_rules = get_rules( ).
li_rules->apply_fill_logic(
EXPORTING
iv_table = c_table
iv_package = c_package
CHANGING
ct_data = lt_act ).
cl_abap_unit_assert=>assert_equals(
act = lines( lt_act )
exp = 2 ).
READ TABLE lt_act INTO ls_act INDEX 1.
cl_abap_unit_assert=>assert_equals(
act = ls_act-key
exp = 1 ).
cl_abap_unit_assert=>assert_equals(
act = ls_act-user
exp = sy-uname ).
cl_abap_unit_assert=>assert_equals(
act = ls_act-date
exp = sy-datum ).
cl_abap_unit_assert=>assert_equals(
act = ls_act-time(4)
exp = sy-uzeit(4) ). " avoid comparing seconds
lv_ts = ls_act-ts.
lv_ts = lv_ts(10).
cl_abap_unit_assert=>assert_equals(
act = lv_ts
exp = |{ lv_timestamp DIV 10000 }| ). " avoid comparing second
lv_ts = ls_act-tl.
lv_ts = lv_ts(10).
cl_abap_unit_assert=>assert_equals(
act = lv_ts
exp = |{ lv_timestamp DIV 10000 }| ). " avoid comparing seconds
READ TABLE lt_act INTO ls_act INDEX 2.
cl_abap_unit_assert=>assert_equals(
act = ls_act-key
exp = 2 ).
cl_abap_unit_assert=>assert_equals(
act = ls_act-user
exp = sy-uname ).
cl_abap_unit_assert=>assert_equals(
act = ls_act-date
exp = sy-datum ).
cl_abap_unit_assert=>assert_equals(
act = ls_act-time(4)
exp = sy-uzeit(4) ). " avoid comparing seconds
ENDMETHOD.
ENDCLASS.