Fix #1011 exception ZCX_EXCEL is not caught (#1016)

* Fix #1011 exception ZCX_EXCEL is not caught

* fix uncaught exception in test class

* activate uncaught_exception check

Co-authored-by: sandraros <34005250+sandraros@users.noreply.github.com>
This commit is contained in:
Gregor Wolf 2022-04-23 13:33:56 +02:00 committed by GitHub
parent 46e234cd94
commit 7b7984373c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 85 additions and 38 deletions

View File

@ -36,7 +36,7 @@
"prefer_raise_exception_new": true, "prefer_raise_exception_new": true,
"select_add_order_by": false, "select_add_order_by": false,
"select_performance": false, "select_performance": false,
"uncaught_exception": false, "uncaught_exception": true,
"unsecure_fae": false, "unsecure_fae": false,
"use_class_based_exceptions": false, "use_class_based_exceptions": false,
"call_transaction_authority_check": true, "call_transaction_authority_check": true,

View File

@ -54,7 +54,8 @@ CLASS zcl_excel_reader_huge_file DEFINITION
RETURNING RETURNING
VALUE(es_cell) TYPE t_cell VALUE(es_cell) TYPE t_cell
RAISING RAISING
lcx_not_found . lcx_not_found
zcx_excel.
METHODS read_shared_strings METHODS read_shared_strings
IMPORTING IMPORTING
!io_reader TYPE REF TO if_sxml_reader !io_reader TYPE REF TO if_sxml_reader
@ -64,7 +65,9 @@ CLASS zcl_excel_reader_huge_file DEFINITION
IMPORTING IMPORTING
!iv_coord TYPE string !iv_coord TYPE string
RETURNING RETURNING
VALUE(es_coord) TYPE t_cell_coord . VALUE(es_coord) TYPE t_cell_coord
RAISING
zcx_excel.
METHODS put_cell_to_worksheet METHODS put_cell_to_worksheet
IMPORTING IMPORTING
!io_worksheet TYPE REF TO zcl_excel_worksheet !io_worksheet TYPE REF TO zcl_excel_worksheet

View File

@ -40,18 +40,27 @@ CLASS lcl_test IMPLEMENTATION.
* *
METHOD test_number. METHOD test_number.
DATA lo_reader TYPE REF TO if_sxml_reader. DATA: lo_reader TYPE REF TO if_sxml_reader,
lo_ex TYPE REF TO lcx_not_found,
lv_text TYPE string.
lo_reader = get_reader( lo_reader = get_reader(
`<c r="A1" t="n"><v>17</v></c>` `<c r="A1" t="n"><v>17</v></c>`
). ).
TRY.
out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
assert_value_equals( `17` ). assert_value_equals( `17` ).
assert_datatype_equals( `n` ). assert_datatype_equals( `n` ).
CATCH lcx_not_found INTO lo_ex.
lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger
cl_abap_unit_assert=>fail( lv_text ).
ENDTRY.
ENDMETHOD. "test_shared_string ENDMETHOD. "test_shared_string
* *
METHOD test_shared_string. METHOD test_shared_string.
DATA lo_reader TYPE REF TO if_sxml_reader. DATA: lo_reader TYPE REF TO if_sxml_reader,
lo_ex TYPE REF TO lcx_not_found,
lv_text TYPE string.
DATA: ls_shared_string TYPE zcl_excel_reader_huge_file=>t_shared_string. DATA: ls_shared_string TYPE zcl_excel_reader_huge_file=>t_shared_string.
ls_shared_string-value = `Test1`. ls_shared_string-value = `Test1`.
APPEND ls_shared_string TO out->shared_strings. APPEND ls_shared_string TO out->shared_strings.
@ -60,13 +69,17 @@ CLASS lcl_test IMPLEMENTATION.
lo_reader = get_reader( lo_reader = get_reader(
`<c r="A1" t="s"><v>1</v></c>` `<c r="A1" t="s"><v>1</v></c>`
). ).
TRY.
out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
assert_value_equals( `Test2` ). assert_value_equals( `Test2` ).
assert_datatype_equals( `s` ). assert_datatype_equals( `s` ).
CATCH lcx_not_found INTO lo_ex.
lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger
cl_abap_unit_assert=>fail( lv_text ).
ENDTRY.
ENDMETHOD. "test_shared_string ENDMETHOD. "test_shared_string
* *
METHOD test_shared_string_missing. METHOD test_shared_string_missing.
DATA: lo_reader TYPE REF TO if_sxml_reader, DATA: lo_reader TYPE REF TO if_sxml_reader,
lo_ex TYPE REF TO lcx_not_found, lo_ex TYPE REF TO lcx_not_found,
lv_text TYPE string. lv_text TYPE string.
@ -87,43 +100,65 @@ CLASS lcl_test IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
* *
METHOD test_inline_string. METHOD test_inline_string.
DATA lo_reader TYPE REF TO if_sxml_reader. DATA: lo_reader TYPE REF TO if_sxml_reader,
lo_ex TYPE REF TO lcx_not_found,
lv_text TYPE string.
lo_reader = get_reader( lo_reader = get_reader(
`<c r="A1" t="inlineStr"><is><t>Alpha</t></is></c>` `<c r="A1" t="inlineStr"><is><t>Alpha</t></is></c>`
). ).
TRY.
out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
assert_value_equals( `Alpha` ). assert_value_equals( `Alpha` ).
assert_datatype_equals( `inlineStr` ). assert_datatype_equals( `inlineStr` ).
CATCH lcx_not_found INTO lo_ex.
lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger
cl_abap_unit_assert=>fail( lv_text ).
ENDTRY.
ENDMETHOD. "test_inline_string ENDMETHOD. "test_inline_string
* *
METHOD test_boolean. METHOD test_boolean.
DATA lo_reader TYPE REF TO if_sxml_reader. DATA: lo_reader TYPE REF TO if_sxml_reader,
lo_ex TYPE REF TO lcx_not_found,
lv_text TYPE string.
lo_reader = get_reader( lo_reader = get_reader(
`<c r="A1" t="b"><v>1</v></c>` `<c r="A1" t="b"><v>1</v></c>`
). ).
TRY.
out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
assert_value_equals( `1` ). assert_value_equals( `1` ).
assert_datatype_equals( `b` ). assert_datatype_equals( `b` ).
CATCH lcx_not_found INTO lo_ex.
lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger
cl_abap_unit_assert=>fail( lv_text ).
ENDTRY.
ENDMETHOD. "test_boolean ENDMETHOD. "test_boolean
* *
METHOD test_formula. METHOD test_formula.
DATA lo_reader TYPE REF TO if_sxml_reader. DATA: lo_reader TYPE REF TO if_sxml_reader,
lo_ex TYPE REF TO lcx_not_found,
lv_text TYPE string.
lo_reader = get_reader( lo_reader = get_reader(
`<c r="A1" t="n"><f>A2*A2</f></c>` `<c r="A1" t="n"><f>A2*A2</f></c>`
). ).
TRY.
out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
assert_formula_equals( `A2*A2` ). assert_formula_equals( `A2*A2` ).
assert_datatype_equals( `n` ). assert_datatype_equals( `n` ).
CATCH lcx_not_found INTO lo_ex.
lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger
cl_abap_unit_assert=>fail( lv_text ).
ENDTRY.
ENDMETHOD. "test_formula ENDMETHOD. "test_formula
* *
METHOD test_empty_cells. METHOD test_empty_cells.
* There is no need to store an empty cell in the ABAP worksheet structure * There is no need to store an empty cell in the ABAP worksheet structure
DATA: lo_reader TYPE REF TO if_sxml_reader,
DATA: lo_reader TYPE REF TO if_sxml_reader. lo_ex TYPE REF TO lcx_not_found,
lv_text TYPE string.
DATA: ls_shared_string TYPE zcl_excel_reader_huge_file=>t_shared_string. DATA: ls_shared_string TYPE zcl_excel_reader_huge_file=>t_shared_string.
ls_shared_string-value = ``. ls_shared_string-value = ``.
APPEND ls_shared_string TO out->shared_strings. APPEND ls_shared_string TO out->shared_strings.
@ -135,18 +170,23 @@ CLASS lcl_test IMPLEMENTATION.
`<c r="A3" t="s"><v>1</v></c>` `<c r="A3" t="s"><v>1</v></c>`
). ).
TRY.
out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
assert_value_equals( iv_row = 1 iv_col = 1 iv_value = `` ). assert_value_equals( iv_row = 1 iv_col = 1 iv_value = `` ).
assert_value_equals( iv_row = 2 iv_col = 1 iv_value = `` ). assert_value_equals( iv_row = 2 iv_col = 1 iv_value = `` ).
assert_value_equals( iv_row = 3 iv_col = 1 iv_value = `t` ). assert_value_equals( iv_row = 3 iv_col = 1 iv_value = `t` ).
CATCH lcx_not_found INTO lo_ex.
lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger
cl_abap_unit_assert=>fail( lv_text ).
ENDTRY.
ENDMETHOD. ENDMETHOD.
* *
METHOD test_style. METHOD test_style.
DATA: DATA: lo_reader TYPE REF TO if_sxml_reader,
lo_reader TYPE REF TO if_sxml_reader, lo_ex TYPE REF TO lcx_not_found,
lv_text TYPE string,
lo_style TYPE REF TO zcl_excel_style, lo_style TYPE REF TO zcl_excel_style,
lv_guid TYPE zexcel_cell_style. lv_guid TYPE zexcel_cell_style.
CREATE OBJECT lo_style. CREATE OBJECT lo_style.
@ -156,9 +196,13 @@ CLASS lcl_test IMPLEMENTATION.
lo_reader = get_reader( lo_reader = get_reader(
`<c r="A1" s="0"><v>18</v></c>` `<c r="A1" s="0"><v>18</v></c>`
). ).
TRY.
out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ). out->read_worksheet_data( io_reader = lo_reader io_worksheet = worksheet ).
assert_style_equals( lv_guid ). assert_style_equals( lv_guid ).
CATCH lcx_not_found INTO lo_ex.
lv_text = lo_ex->get_text( ). " >>> May inspect the message in the debugger
cl_abap_unit_assert=>fail( lv_text ).
ENDTRY.
ENDMETHOD. "test_style ENDMETHOD. "test_style