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"},