refactoring

rename METHOD int_to_xstring, and remove parameter

change inputs for METHOD type_and_length and add unit tests
This commit is contained in:
larshp 2017-07-23 12:20:29 +00:00
parent 02bc202eb6
commit 5ff0cd9586
3 changed files with 57 additions and 26 deletions

View File

@ -114,6 +114,12 @@ CLASS lcl_git_pack DEFINITION FINAL FRIENDS ltcl_git_pack.
IMPORTING is_commit TYPE ty_commit IMPORTING is_commit TYPE ty_commit
RETURNING VALUE(rv_data) TYPE xstring. RETURNING VALUE(rv_data) TYPE xstring.
CLASS-METHODS type_and_length
IMPORTING iv_type TYPE lif_defs=>ty_type
iv_length TYPE i
RETURNING VALUE(rv_xstring) TYPE xstring
RAISING lcx_exception.
PRIVATE SECTION. PRIVATE SECTION.
CONSTANTS: c_pack_start TYPE x LENGTH 4 VALUE '5041434B', " PACK CONSTANTS: c_pack_start TYPE x LENGTH 4 VALUE '5041434B', " PACK
c_zlib TYPE x LENGTH 2 VALUE '789C', c_zlib TYPE x LENGTH 2 VALUE '789C',
@ -124,11 +130,6 @@ CLASS lcl_git_pack DEFINITION FINAL FRIENDS ltcl_git_pack.
CHANGING ct_objects TYPE lif_defs=>ty_objects_tt CHANGING ct_objects TYPE lif_defs=>ty_objects_tt
RAISING lcx_exception. RAISING lcx_exception.
CLASS-METHODS type_and_length
IMPORTING is_object TYPE lif_defs=>ty_object
RETURNING VALUE(rv_xstring) TYPE xstring
RAISING lcx_exception.
CLASS-METHODS delta CLASS-METHODS delta
IMPORTING is_object TYPE lif_defs=>ty_object IMPORTING is_object TYPE lif_defs=>ty_object
CHANGING ct_objects TYPE lif_defs=>ty_objects_tt CHANGING ct_objects TYPE lif_defs=>ty_objects_tt
@ -430,7 +431,7 @@ CLASS lcl_git_pack IMPLEMENTATION.
lv_x TYPE x LENGTH 1. lv_x TYPE x LENGTH 1.
CASE is_object-type. CASE iv_type.
WHEN lif_defs=>gc_type-commit. WHEN lif_defs=>gc_type-commit.
lv_type = '001'. lv_type = '001'.
WHEN lif_defs=>gc_type-tree. WHEN lif_defs=>gc_type-tree.
@ -443,7 +444,7 @@ CLASS lcl_git_pack IMPLEMENTATION.
lcx_exception=>raise( 'Unexpected object type while encoding pack' ). lcx_exception=>raise( 'Unexpected object type while encoding pack' ).
ENDCASE. ENDCASE.
lv_x4 = xstrlen( is_object-data ). lv_x4 = iv_length.
DO 32 TIMES. DO 32 TIMES.
GET BIT sy-index OF lv_x4 INTO lv_c. GET BIT sy-index OF lv_x4 INTO lv_c.
CONCATENATE lv_bits lv_c INTO lv_bits. CONCATENATE lv_bits lv_c INTO lv_bits.
@ -1025,22 +1026,20 @@ CLASS lcl_git_pack IMPLEMENTATION.
METHOD encode. METHOD encode.
DATA: lv_sha1 TYPE x LENGTH 20, DATA: lv_sha1 TYPE x LENGTH 20,
lv_adler32 TYPE lcl_hash=>ty_adler32, lv_adler32 TYPE lcl_hash=>ty_adler32,
lv_len TYPE i, lv_compressed TYPE xstring,
lv_compressed TYPE xstring, lv_xstring TYPE xstring,
lv_xstring TYPE xstring. lv_objects_total TYPE i,
DATA: lv_objects_total TYPE i. lv_objects_processed TYPE i.
DATA: lv_objects_processed TYPE i.
FIELD-SYMBOLS: <ls_object> LIKE LINE OF it_objects. FIELD-SYMBOLS: <ls_object> LIKE LINE OF it_objects.
rv_data = c_pack_start. rv_data = c_pack_start.
CONCATENATE rv_data c_version INTO rv_data IN BYTE MODE. CONCATENATE rv_data c_version INTO rv_data IN BYTE MODE.
lv_len = lines( it_objects ). lv_xstring = lcl_convert=>int_to_xstring4( lines( it_objects ) ).
lv_xstring = lcl_convert=>int_to_xstring( iv_i = lv_len
iv_length = 4 ).
CONCATENATE rv_data lv_xstring INTO rv_data IN BYTE MODE. CONCATENATE rv_data lv_xstring INTO rv_data IN BYTE MODE.
lv_objects_total = lines( it_objects ). lv_objects_total = lines( it_objects ).
@ -1053,7 +1052,9 @@ CLASS lcl_git_pack IMPLEMENTATION.
i_processed = lv_objects_processed i_processed = lv_objects_processed
i_total = lv_objects_total ). i_total = lv_objects_total ).
lv_xstring = type_and_length( <ls_object> ). lv_xstring = type_and_length(
iv_type = <ls_object>-type
iv_length = xstrlen( <ls_object>-data ) ).
CONCATENATE rv_data lv_xstring INTO rv_data IN BYTE MODE. CONCATENATE rv_data lv_xstring INTO rv_data IN BYTE MODE.
cl_abap_gzip=>compress_binary( cl_abap_gzip=>compress_binary(

View File

@ -62,6 +62,7 @@ ENDCLASS. "ltcl_convert DEFINITION
CLASS ltcl_convert IMPLEMENTATION. CLASS ltcl_convert IMPLEMENTATION.
METHOD convert_int. METHOD convert_int.
DATA: lv_xstring TYPE xstring, DATA: lv_xstring TYPE xstring,
lv_input TYPE i, lv_input TYPE i,
lv_result TYPE i. lv_result TYPE i.
@ -69,8 +70,7 @@ CLASS ltcl_convert IMPLEMENTATION.
DO 1000 TIMES. DO 1000 TIMES.
lv_input = sy-index. lv_input = sy-index.
lv_xstring = lcl_convert=>int_to_xstring( iv_i = lv_input lv_xstring = lcl_convert=>int_to_xstring4( lv_input ).
iv_length = 4 ).
lv_result = lcl_convert=>xstring_to_int( lv_xstring ). lv_result = lcl_convert=>xstring_to_int( lv_xstring ).
cl_abap_unit_assert=>assert_equals( cl_abap_unit_assert=>assert_equals(
@ -1096,7 +1096,11 @@ CLASS ltcl_git_pack DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FI
pack_multiple FOR TESTING pack_multiple FOR TESTING
RAISING lcx_exception, RAISING lcx_exception,
sort_tree1 FOR TESTING, sort_tree1 FOR TESTING,
sort_tree2 FOR TESTING. sort_tree2 FOR TESTING,
type_and_length01 FOR TESTING
RAISING lcx_exception,
type_and_length02 FOR TESTING
RAISING lcx_exception.
METHODS: METHODS:
object_blob object_blob
@ -1113,6 +1117,34 @@ ENDCLASS. "test DEFINITION
*----------------------------------------------------------------------* *----------------------------------------------------------------------*
CLASS ltcl_git_pack IMPLEMENTATION. CLASS ltcl_git_pack IMPLEMENTATION.
METHOD type_and_length01.
DATA: lv_result TYPE xstring.
lv_result = lcl_git_pack=>type_and_length(
iv_type = lif_defs=>gc_type-commit
iv_length = 100 ).
cl_abap_unit_assert=>assert_equals(
act = lv_result
exp = '9406' ).
ENDMETHOD.
METHOD type_and_length02.
DATA: lv_result TYPE xstring.
lv_result = lcl_git_pack=>type_and_length(
iv_type = lif_defs=>gc_type-blob
iv_length = 90000 ).
cl_abap_unit_assert=>assert_equals(
act = lv_result
exp = 'B0F92B' ).
ENDMETHOD.
METHOD sort_tree1. METHOD sort_tree1.
DATA: lt_tree TYPE lcl_git_pack=>ty_nodes_tt. DATA: lt_tree TYPE lcl_git_pack=>ty_nodes_tt.

View File

@ -133,9 +133,8 @@ CLASS lcl_convert DEFINITION FINAL.
RETURNING VALUE(rv_i) TYPE i RETURNING VALUE(rv_i) TYPE i
RAISING lcx_exception. RAISING lcx_exception.
CLASS-METHODS int_to_xstring CLASS-METHODS int_to_xstring4
IMPORTING iv_i TYPE i IMPORTING iv_i TYPE i
iv_length TYPE i
RETURNING VALUE(rv_xstring) TYPE xstring. RETURNING VALUE(rv_xstring) TYPE xstring.
CLASS-METHODS split_string CLASS-METHODS split_string
@ -151,13 +150,12 @@ ENDCLASS. "lcl_convert DEFINITION
*----------------------------------------------------------------------* *----------------------------------------------------------------------*
CLASS lcl_convert IMPLEMENTATION. CLASS lcl_convert IMPLEMENTATION.
METHOD int_to_xstring. METHOD int_to_xstring4.
* returns xstring of length 4 containing the integer value iv_i
DATA: lv_x TYPE x LENGTH 4. DATA: lv_x TYPE x LENGTH 4.
ASSERT iv_length = 4. " other cases not implemented
lv_x = iv_i. lv_x = iv_i.
rv_xstring = lv_x. rv_xstring = lv_x.