mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-02 13:03:01 +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.
|
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,
|
DATA: lv_x TYPE x,
|
||||||
lv_length_bits TYPE string,
|
lv_length_bits TYPE string,
|
||||||
lv_bitbyte TYPE zif_abapgit_definitions=>ty_bitbyte.
|
lv_bitbyte TYPE zif_abapgit_definitions=>ty_bitbyte.
|
||||||
|
|
|
@ -710,3 +710,85 @@ CLASS ltcl_tag IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
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