diff --git a/package.json b/package.json
index 54e44a91d..a4ea3a815 100644
--- a/package.json
+++ b/package.json
@@ -26,10 +26,10 @@
]
},
"devDependencies": {
- "@abaplint/cli": "^2.95.26",
+ "@abaplint/cli": "^2.95.31",
"@abaplint/database-sqlite": "^2.5.4",
- "@abaplint/runtime": "^2.5.8",
- "@abaplint/transpiler-cli": "^2.5.8",
+ "@abaplint/runtime": "^2.5.18",
+ "@abaplint/transpiler-cli": "^2.5.18",
"abapmerge": "^0.15.0",
"c8": "^7.13.0",
"eslint": "^8.35.0"
diff --git a/src/git/zlib/zcl_abapgit_zlib.clas.testclasses.abap b/src/git/zlib/zcl_abapgit_zlib.clas.testclasses.abap
index 237604502..26316d9fa 100644
--- a/src/git/zlib/zcl_abapgit_zlib.clas.testclasses.abap
+++ b/src/git/zlib/zcl_abapgit_zlib.clas.testclasses.abap
@@ -6,6 +6,8 @@ CLASS ltcl_zlib DEFINITION FOR TESTING
PRIVATE SECTION.
METHODS:
fixed FOR TESTING RAISING cx_dynamic_check,
+ dynamic_simple FOR TESTING RAISING cx_dynamic_check zcx_abapgit_exception,
+ dynamic_another FOR TESTING RAISING cx_dynamic_check zcx_abapgit_exception,
dynamic FOR TESTING RAISING cx_dynamic_check zcx_abapgit_exception,
not_compressed FOR TESTING RAISING cx_dynamic_check.
@@ -48,6 +50,49 @@ CLASS ltcl_zlib IMPLEMENTATION.
ENDMETHOD.
+ METHOD dynamic_simple.
+
+ DATA: ls_data TYPE zcl_abapgit_zlib=>ty_decompress,
+ lv_compressed TYPE xstring,
+ lv_decoded TYPE xstring.
+
+
+ lv_compressed = |05804109000008C4AA184EC1C7E0C08FF5C70EA43E470B1A0B045D|.
+
+ lv_decoded = zcl_abapgit_convert=>string_to_xstring_utf8( |hello world| ).
+
+ ls_data = zcl_abapgit_zlib=>decompress( lv_compressed ).
+
+ cl_abap_unit_assert=>assert_not_initial( ls_data-raw ).
+ cl_abap_unit_assert=>assert_equals( act = ls_data-raw
+ exp = lv_decoded ).
+
+ ENDMETHOD.
+
+ METHOD dynamic_another.
+
+ DATA: ls_data TYPE zcl_abapgit_zlib=>ty_decompress,
+ lv_compressed TYPE xstring,
+ lv_decoded TYPE xstring.
+
+
+ lv_compressed = |25CCD10903310C04D156B680904AD284628963C1929D93D4FF| &&
+ |19F23DBCF9ACDB1CDCD90E5D73DD4816C4AD5E182BD24659F50D516EE6605CB0| &&
+ |C913D3F400183B7D29CA7C1FCC18546A47A10B53BE670FABFFDAE0728540267F| &&
+ |2DEF07|.
+
+ lv_decoded = zcl_abapgit_convert=>string_to_xstring_utf8(
+ |Lorem ipsum dolor sit amet, consectetur adipiscing elit, | &&
+ |sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.| ).
+
+ ls_data = zcl_abapgit_zlib=>decompress( lv_compressed ).
+
+ cl_abap_unit_assert=>assert_not_initial( ls_data-raw ).
+ cl_abap_unit_assert=>assert_equals( act = ls_data-raw
+ exp = lv_decoded ).
+
+ ENDMETHOD.
+
METHOD dynamic.
DATA: ls_data TYPE zcl_abapgit_zlib=>ty_decompress,
diff --git a/src/git/zlib/zcl_abapgit_zlib_huffman.clas.abap b/src/git/zlib/zcl_abapgit_zlib_huffman.clas.abap
index 02423204f..2ca9a8d07 100644
--- a/src/git/zlib/zcl_abapgit_zlib_huffman.clas.abap
+++ b/src/git/zlib/zcl_abapgit_zlib_huffman.clas.abap
@@ -3,20 +3,26 @@ CLASS zcl_abapgit_zlib_huffman DEFINITION
CREATE PUBLIC .
PUBLIC SECTION.
- TYPES: ty_lengths TYPE STANDARD TABLE OF i WITH DEFAULT KEY.
- CONSTANTS: c_maxbits TYPE i VALUE 15.
+ TYPES:
+ ty_lengths TYPE STANDARD TABLE OF i WITH DEFAULT KEY .
- METHODS:
- constructor
- IMPORTING it_lengths TYPE ty_lengths,
- get_count
- IMPORTING iv_index TYPE i
- RETURNING VALUE(rv_value) TYPE i,
- get_symbol
- IMPORTING iv_index TYPE i
- RETURNING VALUE(rv_value) TYPE i.
+ CONSTANTS c_maxbits TYPE i VALUE 15 ##NO_TEXT.
+ METHODS constructor
+ IMPORTING
+ !it_lengths TYPE ty_lengths .
+ METHODS get_count
+ IMPORTING
+ !iv_index TYPE i
+ RETURNING
+ VALUE(rv_value) TYPE i .
+ METHODS get_symbol
+ IMPORTING
+ !iv_index TYPE i
+ RETURNING
+ VALUE(rv_value) TYPE i .
+ PROTECTED SECTION.
PRIVATE SECTION.
DATA: mt_count TYPE STANDARD TABLE OF i WITH DEFAULT KEY,
diff --git a/src/git/zlib/zcl_abapgit_zlib_huffman.clas.testclasses.abap b/src/git/zlib/zcl_abapgit_zlib_huffman.clas.testclasses.abap
new file mode 100644
index 000000000..fa660827a
--- /dev/null
+++ b/src/git/zlib/zcl_abapgit_zlib_huffman.clas.testclasses.abap
@@ -0,0 +1,53 @@
+CLASS ltcl_test DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL.
+
+ PRIVATE SECTION.
+ METHODS create1 FOR TESTING RAISING cx_static_check.
+ METHODS create2 FOR TESTING RAISING cx_static_check.
+ENDCLASS.
+
+
+CLASS ltcl_test IMPLEMENTATION.
+
+ METHOD create1.
+
+ DATA lo_huffman TYPE REF TO zcl_abapgit_zlib_huffman.
+ DATA lt_lengths TYPE zcl_abapgit_zlib_huffman=>ty_lengths.
+
+
+ DO 10 TIMES.
+ APPEND 8 TO lt_lengths.
+ ENDDO.
+
+ CREATE OBJECT lo_huffman
+ EXPORTING
+ it_lengths = lt_lengths.
+
+ ENDMETHOD.
+
+ METHOD create2.
+
+ DATA lo_huffman TYPE REF TO zcl_abapgit_zlib_huffman.
+ DATA lt_lengths TYPE zcl_abapgit_zlib_huffman=>ty_lengths.
+
+
+ DO 144 TIMES.
+ APPEND 8 TO lt_lengths.
+ ENDDO.
+ DO 112 TIMES.
+ APPEND 9 TO lt_lengths.
+ ENDDO.
+ DO 24 TIMES.
+ APPEND 7 TO lt_lengths.
+ ENDDO.
+ DO 8 TIMES.
+ APPEND 8 TO lt_lengths.
+ ENDDO.
+
+ CREATE OBJECT lo_huffman
+ EXPORTING
+ it_lengths = lt_lengths.
+
+
+ ENDMETHOD.
+
+ENDCLASS.
diff --git a/src/git/zlib/zcl_abapgit_zlib_huffman.clas.xml b/src/git/zlib/zcl_abapgit_zlib_huffman.clas.xml
index 418be03dc..18f40ac7a 100644
--- a/src/git/zlib/zcl_abapgit_zlib_huffman.clas.xml
+++ b/src/git/zlib/zcl_abapgit_zlib_huffman.clas.xml
@@ -10,6 +10,7 @@
X
X
X
+ X
diff --git a/test/abap_transpile.json b/test/abap_transpile.json
index e4d6d5c5b..556d60d2e 100644
--- a/test/abap_transpile.json
+++ b/test/abap_transpile.json
@@ -73,12 +73,11 @@
"keywords": ["return", "in", "class"],
"extraSetup": "../test/setup.mjs",
"skip": [
- {"object": "ZCX_ABAPGIT_EXCEPTION", "class": "ltcl_get_t100_longtext", "method": "test01", "note": "implement function module DOCU_GET, open-abap"},
- {"object": "ZCX_ABAPGIT_EXCEPTION", "class": "ltcl_split_text", "method": "test_set_msg_z", "note": "some bug in fm TEXT_SPLIT in open-abaƄ"},
+ {"object": "ZCX_ABAPGIT_EXCEPTION", "class": "ltcl_get_t100_longtext", "method": "test01", "note": "uses MSAG from database"},
+ {"object": "ZCX_ABAPGIT_EXCEPTION", "class": "ltcl_split_text", "method": "test_set_msg_z", "note": "some bug in fm TEXT_SPLIT in open-abap"},
{"object": "ZCX_ABAPGIT_EXCEPTION", "class": "ltcl_t100", "method": "text6", "note": "uses MSAG from database"},
{"object": "ZCX_ABAPGIT_EXCEPTION", "class": "ltcl_t100", "method": "text7", "note": "uses MSAG from database"},
{"object": "ZCX_ABAPGIT_EXCEPTION", "class": "ltcl_t100", "method": "text8", "note": "uses MSAG from database"},
- {"object": "ZCX_ABAPGIT_EXCEPTION", "class": "ltcl_longtext", "method": "empty_longtext", "note": "implement function module DOCU_GET, open-abap"},
{"object": "ZCL_ABAPGIT_XML_PRETTY", "class": "ltcl_test", "method": "pretty1", "note": "open-abap does not add the byte order mark"},
{"object": "ZCL_ABAPGIT_XML_PRETTY", "class": "ltcl_test", "method": "pretty2", "note": "open-abap does not add the byte order mark"},
@@ -87,17 +86,12 @@
{"object": "ZCL_ABAPGIT_XML_PRETTY", "class": "ltcl_test", "method": "malformatted", "note": "infinite loop"},
{"object": "ZCL_ABAPGIT_XML_PRETTY", "class": "ltcl_test", "method": "dont_ignore_error", "note": "infinite loop"},
- {"object": "ZCL_ABAPGIT_ZLIB", "class": "ltcl_zlib", "method": "dynamic"},
- {"object": "ZCL_ABAPGIT_ZLIB", "class": "ltcl_zlib", "method": "fixed"},
-
- {"object": "ZCL_ABAPGIT_SERIALIZE", "class": "ltcl_determine_max_threads", "method": "determine_max_threads", "note": "TypeError: abap.FunctionModules.FUNCTION_EXISTS is not a function"},
{"object": "ZCL_ABAPGIT_SERIALIZE", "class": "ltcl_serialize", "method": "test", "note": "Void type: KO100"},
{"object": "ZCL_ABAPGIT_SERIALIZE", "class": "ltcl_serialize", "method": "unsupported", "note": "Void type: KO100"},
{"object": "ZCL_ABAPGIT_SERIALIZE", "class": "ltcl_serialize", "method": "ignored", "note": "Void type: KO100"},
{"object": "ZCL_ABAPGIT_SERIALIZE", "class": "ltcl_i18n", "method": "test", "note": "Void type: DD02V"},
{"object": "ZCL_ABAPGIT_FILE_STATUS", "class": "ltcl_calculate_status", "method": "complete", "note": "??"},
- {"object": "ZCL_ABAPGIT_FILE_STATUS", "class": "ltcl_calculate_status", "method": "only_local2", "note": "? sy-subrc = 4 vs 8 ?"},
{"object": "ZCL_ABAPGIT_PERSIST_PACKAGES", "class": "ltcl_packages", "method": "test_package", "note": "ZABAPGIT table not existing, error cx_sy_dynamic_osql_semantics"},