mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
/git/, put method get_length under test (#4224)
* /git/, put method get_length under test add unit tests for method get_length the method will probably be refactored sometime in the future, I think the bit manipulation can be replaced with some hex, div and bit-mask magic * fix tabs
This commit is contained in:
parent
20c714889f
commit
5e2d8de52a
|
@ -780,6 +780,13 @@ CLASS ZCL_ABAPGIT_GIT_PACK IMPLEMENTATION.
|
|||
|
||||
METHOD get_length.
|
||||
|
||||
* https://github.com/git/git/blob/master/Documentation/technical/pack-format.txt
|
||||
|
||||
* n-byte sizeN (as long as MSB is set, each 7-bit)
|
||||
* size0..sizeN form 4+7+7+..+7 bit integer, size0
|
||||
* is the least significant part, and sizeN is the
|
||||
* most significant part.
|
||||
|
||||
DATA: lv_x TYPE x,
|
||||
lv_length_bits TYPE string,
|
||||
lv_bitbyte TYPE zif_abapgit_definitions=>ty_bitbyte.
|
||||
|
|
|
@ -710,3 +710,85 @@ CLASS ltcl_tag IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_get_length DEFINITION DEFERRED.
|
||||
CLASS zcl_abapgit_git_pack DEFINITION LOCAL FRIENDS ltcl_get_length.
|
||||
|
||||
CLASS ltcl_get_length DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS:
|
||||
test
|
||||
IMPORTING
|
||||
iv_data TYPE xstring
|
||||
iv_expected TYPE i,
|
||||
length_0 FOR TESTING RAISING zcx_abapgit_exception,
|
||||
length_1 FOR TESTING RAISING zcx_abapgit_exception,
|
||||
length_15 FOR TESTING RAISING zcx_abapgit_exception,
|
||||
length_31 FOR TESTING RAISING zcx_abapgit_exception,
|
||||
length_22783 FOR TESTING RAISING zcx_abapgit_exception.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_get_length IMPLEMENTATION.
|
||||
|
||||
METHOD test.
|
||||
|
||||
DATA lv_length TYPE i.
|
||||
DATA lv_data TYPE xstring.
|
||||
|
||||
lv_data = iv_data.
|
||||
|
||||
zcl_abapgit_git_pack=>get_length(
|
||||
IMPORTING
|
||||
ev_length = lv_length
|
||||
CHANGING
|
||||
cv_data = lv_data ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = lv_length
|
||||
exp = iv_expected ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD length_0.
|
||||
|
||||
test(
|
||||
iv_data = '00'
|
||||
iv_expected = 0 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD length_1.
|
||||
|
||||
test(
|
||||
iv_data = '01'
|
||||
iv_expected = 1 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD length_15.
|
||||
* four least significant bits set
|
||||
test(
|
||||
iv_data = '0F'
|
||||
iv_expected = 15 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD length_31.
|
||||
|
||||
test(
|
||||
iv_data = '8F01'
|
||||
iv_expected = 31 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD length_22783.
|
||||
|
||||
test(
|
||||
iv_data = '8F8F0B'
|
||||
iv_expected = 22783 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
Loading…
Reference in New Issue
Block a user