mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
String map improvements (#3696)
* string map freeze and UT * linter * linter Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
b34f5c36b5
commit
c6b4cb1a70
|
@ -9,54 +9,58 @@ CLASS zcl_abapgit_string_map DEFINITION
|
||||||
BEGIN OF ty_entry,
|
BEGIN OF ty_entry,
|
||||||
k TYPE string,
|
k TYPE string,
|
||||||
v TYPE string,
|
v TYPE string,
|
||||||
END OF ty_entry,
|
END OF ty_entry.
|
||||||
tty_entries TYPE STANDARD TABLE OF ty_entry WITH KEY k,
|
TYPES:
|
||||||
|
tty_entries TYPE STANDARD TABLE OF ty_entry WITH KEY k.
|
||||||
|
TYPES:
|
||||||
tts_entries TYPE SORTED TABLE OF ty_entry WITH UNIQUE KEY k.
|
tts_entries TYPE SORTED TABLE OF ty_entry WITH UNIQUE KEY k.
|
||||||
|
|
||||||
CLASS-METHODS create
|
CLASS-METHODS create
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(ro_instance) TYPE REF TO zcl_abapgit_string_map.
|
VALUE(ro_instance) TYPE REF TO zcl_abapgit_string_map.
|
||||||
|
|
||||||
METHODS get
|
METHODS get
|
||||||
IMPORTING
|
IMPORTING
|
||||||
iv_key TYPE string
|
iv_key TYPE string
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_val) TYPE string.
|
VALUE(rv_val) TYPE string.
|
||||||
|
|
||||||
METHODS has
|
METHODS has
|
||||||
IMPORTING
|
IMPORTING
|
||||||
iv_key TYPE string
|
iv_key TYPE string
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_has) TYPE abap_bool.
|
VALUE(rv_has) TYPE abap_bool.
|
||||||
|
|
||||||
METHODS set
|
METHODS set
|
||||||
IMPORTING
|
IMPORTING
|
||||||
iv_key TYPE string
|
iv_key TYPE string
|
||||||
iv_val TYPE string OPTIONAL.
|
iv_val TYPE string OPTIONAL
|
||||||
|
RETURNING
|
||||||
|
VALUE(ro_map) TYPE REF TO zcl_abapgit_string_map
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
METHODS size
|
METHODS size
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_size) TYPE i.
|
VALUE(rv_size) TYPE i.
|
||||||
|
|
||||||
METHODS is_empty
|
METHODS is_empty
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_yes) TYPE abap_bool.
|
VALUE(rv_yes) TYPE abap_bool.
|
||||||
|
|
||||||
METHODS delete
|
METHODS delete
|
||||||
IMPORTING
|
IMPORTING
|
||||||
iv_key TYPE string.
|
iv_key TYPE string
|
||||||
|
RAISING
|
||||||
METHODS clear.
|
zcx_abapgit_exception.
|
||||||
|
METHODS clear
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
METHODS to_abap
|
METHODS to_abap
|
||||||
CHANGING
|
CHANGING
|
||||||
!cs_container TYPE any
|
!cs_container TYPE any
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception.
|
zcx_abapgit_exception.
|
||||||
|
METHODS freeze.
|
||||||
|
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
DATA mt_entries TYPE tts_entries.
|
DATA mt_entries TYPE tts_entries.
|
||||||
|
DATA mv_read_only TYPE abap_bool.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
@ -66,6 +70,9 @@ CLASS ZCL_ABAPGIT_STRING_MAP IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD clear.
|
METHOD clear.
|
||||||
|
IF mv_read_only = abap_true.
|
||||||
|
zcx_abapgit_exception=>raise( 'Cannot clear. This string map is immutable' ).
|
||||||
|
ENDIF.
|
||||||
CLEAR mt_entries.
|
CLEAR mt_entries.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -77,11 +84,20 @@ CLASS ZCL_ABAPGIT_STRING_MAP IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD delete.
|
METHOD delete.
|
||||||
|
|
||||||
|
IF mv_read_only = abap_true.
|
||||||
|
zcx_abapgit_exception=>raise( 'Cannot delete. This string map is immutable' ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
DELETE mt_entries WHERE k = iv_key.
|
DELETE mt_entries WHERE k = iv_key.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD freeze.
|
||||||
|
mv_read_only = abap_true.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD get.
|
METHOD get.
|
||||||
|
|
||||||
FIELD-SYMBOLS <ls_entry> LIKE LINE OF mt_entries.
|
FIELD-SYMBOLS <ls_entry> LIKE LINE OF mt_entries.
|
||||||
|
@ -111,6 +127,10 @@ CLASS ZCL_ABAPGIT_STRING_MAP IMPLEMENTATION.
|
||||||
DATA ls_entry LIKE LINE OF mt_entries.
|
DATA ls_entry LIKE LINE OF mt_entries.
|
||||||
FIELD-SYMBOLS <ls_entry> LIKE LINE OF mt_entries.
|
FIELD-SYMBOLS <ls_entry> LIKE LINE OF mt_entries.
|
||||||
|
|
||||||
|
IF mv_read_only = abap_true.
|
||||||
|
zcx_abapgit_exception=>raise( 'Cannot set. This string map is immutable' ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
READ TABLE mt_entries ASSIGNING <ls_entry> WITH KEY k = iv_key.
|
READ TABLE mt_entries ASSIGNING <ls_entry> WITH KEY k = iv_key.
|
||||||
IF sy-subrc IS INITIAL.
|
IF sy-subrc IS INITIAL.
|
||||||
<ls_entry>-v = iv_val.
|
<ls_entry>-v = iv_val.
|
||||||
|
@ -120,6 +140,8 @@ CLASS ZCL_ABAPGIT_STRING_MAP IMPLEMENTATION.
|
||||||
INSERT ls_entry INTO TABLE mt_entries.
|
INSERT ls_entry INTO TABLE mt_entries.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
ro_map = me.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
|
94
src/utils/zcl_abapgit_string_map.clas.testclasses.abap
Normal file
94
src/utils/zcl_abapgit_string_map.clas.testclasses.abap
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
CLASS ltcl_sm_test DEFINITION
|
||||||
|
FINAL
|
||||||
|
FOR TESTING
|
||||||
|
DURATION SHORT
|
||||||
|
RISK LEVEL HARMLESS.
|
||||||
|
PRIVATE SECTION.
|
||||||
|
METHODS simple FOR TESTING RAISING zcx_abapgit_exception.
|
||||||
|
METHODS freeze FOR TESTING RAISING zcx_abapgit_exception.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
CLASS ltcl_sm_test IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD simple.
|
||||||
|
|
||||||
|
DATA lo_cut TYPE REF TO zcl_abapgit_string_map.
|
||||||
|
|
||||||
|
lo_cut = zcl_abapgit_string_map=>create( ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lo_cut->is_empty( )
|
||||||
|
exp = abap_true ).
|
||||||
|
|
||||||
|
lo_cut->set(
|
||||||
|
iv_key = 'A'
|
||||||
|
iv_val = '1' ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lo_cut->is_empty( )
|
||||||
|
exp = abap_false ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lo_cut->has( 'A' )
|
||||||
|
exp = abap_true ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lo_cut->get( 'A' )
|
||||||
|
exp = '1' ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lo_cut->has( 'B' )
|
||||||
|
exp = abap_false ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lo_cut->get( 'B' )
|
||||||
|
exp = '' ).
|
||||||
|
|
||||||
|
lo_cut->delete( 'A' ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lo_cut->is_empty( )
|
||||||
|
exp = abap_true ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lo_cut->has( 'A' )
|
||||||
|
exp = abap_false ).
|
||||||
|
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = lo_cut->get( 'A' )
|
||||||
|
exp = '' ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD freeze.
|
||||||
|
|
||||||
|
DATA lo_cut TYPE REF TO zcl_abapgit_string_map.
|
||||||
|
|
||||||
|
lo_cut = zcl_abapgit_string_map=>create( ).
|
||||||
|
lo_cut->set(
|
||||||
|
iv_key = 'A'
|
||||||
|
iv_val = '1' )->freeze( ).
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
lo_cut->set(
|
||||||
|
iv_key = 'B'
|
||||||
|
iv_val = '2' ).
|
||||||
|
cl_abap_unit_assert=>fail( ).
|
||||||
|
CATCH zcx_abapgit_exception.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
lo_cut->delete( 'A' ).
|
||||||
|
cl_abap_unit_assert=>fail( ).
|
||||||
|
CATCH zcx_abapgit_exception.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
lo_cut->clear( ).
|
||||||
|
cl_abap_unit_assert=>fail( ).
|
||||||
|
CATCH zcx_abapgit_exception.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
|
@ -10,6 +10,7 @@
|
||||||
<CLSCCINCL>X</CLSCCINCL>
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
<FIXPT>X</FIXPT>
|
<FIXPT>X</FIXPT>
|
||||||
<UNICODE>X</UNICODE>
|
<UNICODE>X</UNICODE>
|
||||||
|
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||||
</VSEOCLASS>
|
</VSEOCLASS>
|
||||||
</asx:values>
|
</asx:values>
|
||||||
</asx:abap>
|
</asx:abap>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user