mirror of
https://github.com/abap2UI5/abap2UI5.git
synced 2025-04-29 02:58:20 +08:00
unit test (#211)
* fixes * examples * unit test * unit tests * abaplint fix * unit test * fix downport * abaplint fix
This commit is contained in:
parent
f37a67e64e
commit
65ff5e1ca2
|
@ -76,7 +76,7 @@ CLASS z2ui5_cl_app_demo_03 IMPLEMENTATION.
|
|||
icon = '{ICON}'
|
||||
info = '{INFO}'
|
||||
press = client->_event( 'TEST' )
|
||||
type = `Navigation`
|
||||
" type = `Navigation`
|
||||
selected = `{SELECTED}`
|
||||
).
|
||||
|
||||
|
|
|
@ -35,44 +35,6 @@ CLASS z2ui5_cl_app_demo_47 IMPLEMENTATION.
|
|||
time = sy-uzeit.
|
||||
dec1 = -1 / 3.
|
||||
|
||||
* /ui2/cl_json=>serialize(
|
||||
* EXPORTING
|
||||
* data = time
|
||||
** compress =
|
||||
** name =
|
||||
** pretty_name =
|
||||
** type_descr =
|
||||
** assoc_arrays =
|
||||
** ts_as_iso8601 =
|
||||
** expand_includes =
|
||||
** assoc_arrays_opt =
|
||||
** numc_as_string =
|
||||
** name_mappings =
|
||||
** conversion_exits =
|
||||
** format_output =
|
||||
** hex_as_base64 =
|
||||
* RECEIVING
|
||||
* r_json = data(lv_json)
|
||||
* ).
|
||||
*
|
||||
* data(lv_test) = conv string( lv_json ).
|
||||
* lv_test = lv_test+1.
|
||||
* lv_test = shift_right( val = lv_test sub = `"` ).
|
||||
*
|
||||
* /ui2/cl_json=>deserialize(
|
||||
* EXPORTING
|
||||
* json = lv_test
|
||||
** jsonx =
|
||||
** pretty_name =
|
||||
** assoc_arrays =
|
||||
** assoc_arrays_opt =
|
||||
** name_mappings =
|
||||
* conversion_exits = abap_true
|
||||
** hex_as_base64 =
|
||||
* CHANGING
|
||||
* data = time2
|
||||
* ).
|
||||
|
||||
ENDIF.
|
||||
|
||||
CASE client->get( )-event.
|
||||
|
|
102
src/00/z2ui5_cl_app_demo_48.clas.abap
Normal file
102
src/00/z2ui5_cl_app_demo_48.clas.abap
Normal file
|
@ -0,0 +1,102 @@
|
|||
CLASS z2ui5_cl_app_demo_48 DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES z2ui5_if_app.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_row,
|
||||
title TYPE string,
|
||||
value TYPE string,
|
||||
descr TYPE string,
|
||||
icon TYPE string,
|
||||
info TYPE string,
|
||||
highlight type string,
|
||||
wrapCharLimit type i,
|
||||
selected TYPE abap_bool,
|
||||
checkbox TYPE abap_bool,
|
||||
END OF ty_row.
|
||||
|
||||
DATA t_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY.
|
||||
DATA check_initialized TYPE abap_bool.
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_app_demo_48 IMPLEMENTATION.
|
||||
|
||||
METHOD z2ui5_if_app~main.
|
||||
|
||||
IF check_initialized = abap_false.
|
||||
check_initialized = abap_true.
|
||||
|
||||
t_tab = VALUE #(
|
||||
( title = 'Peter' info = 'Information' descr = 'this is a description1 1234567890 1234567890' icon = 'sap-icon://badge' highlight = 'Information' wrapCharLimit = '100' )
|
||||
( title = 'Peter1' info = 'Success' descr = 'this is a description2 1234567890 1234567890' icon = 'sap-icon://favorite' highlight = 'Success' wrapCharLimit = '10')
|
||||
( title = 'Peter2' info = 'Warning' descr = 'this is a description3 1234567890 1234567890' icon = 'sap-icon://employee' highlight = 'Warning' wrapCharLimit = '100')
|
||||
( title = 'Peter3' info = 'Error' descr = 'this is a description4 1234567890 1234567890' icon = 'sap-icon://accept' highlight = 'Error' wrapCharLimit = '10' )
|
||||
( title = 'Peter4' info = 'None' descr = 'this is a description5 1234567890 1234567890' icon = 'sap-icon://activities' highlight = 'None' wrapCharLimit = '10')
|
||||
( title = 'Peter5' info = 'Information' descr = 'this is a description6 1234567890 1234567890' icon = 'sap-icon://account' highlight = 'Information' wrapCharLimit = '100' )
|
||||
).
|
||||
|
||||
ENDIF.
|
||||
|
||||
CASE client->get( )-event.
|
||||
WHEN 'TEST'.
|
||||
" DATA(lt_sel1) = t_tab.
|
||||
client->popup_message_box( `Test` ).
|
||||
|
||||
WHEN 'SELCHANGE'.
|
||||
DATA(lt_sel) = t_tab.
|
||||
DELETE lt_sel WHERE selected = abap_false.
|
||||
client->popup_message_box( `go to details for item ` && lt_sel[ 1 ]-title ).
|
||||
|
||||
|
||||
WHEN 'BACK'.
|
||||
client->nav_app_leave( client->get_app( client->get( )-id_prev_app_stack ) ).
|
||||
ENDCASE.
|
||||
|
||||
DATA(page) = z2ui5_cl_xml_view=>factory( )->shell(
|
||||
)->page(
|
||||
title = 'abap2UI5 - List'
|
||||
navbuttonpress = client->_event( 'BACK' )
|
||||
shownavbutton = abap_true
|
||||
)->header_content(
|
||||
)->link(
|
||||
text = 'Source_Code' target = '_blank'
|
||||
href = z2ui5_cl_xml_view=>hlp_get_source_code_url( app = me get = client->get( ) )
|
||||
)->get_parent( ).
|
||||
|
||||
page->list(
|
||||
headertext = 'List Ouput'
|
||||
items = client->_bind( t_tab )
|
||||
mode = `SingleSelectMaster`
|
||||
selectionchange = client->_event( 'SELCHANGE' )
|
||||
)->_generic(
|
||||
name = `StandardListItem`
|
||||
t_prop = VALUE #(
|
||||
( n = `title` v = '{TITLE}' )
|
||||
( n = `description` v = '{DESCR}' )
|
||||
( n = `icon` v = '{ICON}' )
|
||||
( n = `iconInset` v = 'false' )
|
||||
( n = `highlight` v = '{HIGHLIGHT}' )
|
||||
( n = `info` v = '{INFO}' )
|
||||
( n = `infoState` v = '{HIGHLIGHT}' )
|
||||
( n = `infoStateInverted` v = 'true' )
|
||||
( n = 'type' v = `Detail` )
|
||||
( n = 'wrapping' v = `true` )
|
||||
( n = 'wrapCharLimit' v = `{WRAPCHARLIMIT}` )
|
||||
( n = 'selected' v = `{SELECTED}` )
|
||||
( n = 'detailPress' v = client->_event( 'TEST' ) )
|
||||
|
||||
) ).
|
||||
client->set_next( VALUE #( xml_main = page->get_root( )->xml_get( ) ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
16
src/00/z2ui5_cl_app_demo_48.clas.xml
Normal file
16
src/00/z2ui5_cl_app_demo_48.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_APP_DEMO_48</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>tab - list test</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -6,6 +6,7 @@ CLASS z2ui5_lcl_utility DEFINITION INHERITING FROM cx_no_check.
|
|||
BEGIN OF ty_attri,
|
||||
name TYPE string,
|
||||
type_kind TYPE string,
|
||||
type TYPE string,
|
||||
bind_type TYPE string,
|
||||
data_stringify TYPE string,
|
||||
gen_type_kind TYPE string,
|
||||
|
@ -282,7 +283,21 @@ CLASS z2ui5_lcl_utility IMPLEMENTATION.
|
|||
ENDLOOP.
|
||||
|
||||
LOOP AT lt_attri INTO ls_attri.
|
||||
APPEND CORRESPONDING #( ls_attri ) TO result.
|
||||
|
||||
DATA(ls_attri2) = VALUE ty_attri( ).
|
||||
ls_attri2 = CORRESPONDING #( ls_attri ).
|
||||
|
||||
FIELD-SYMBOLS <any> TYPE any.
|
||||
UNASSIGN <any>.
|
||||
DATA(lv_assign) = `IO_APP->` && ls_attri-name.
|
||||
ASSIGN (lv_assign) TO <any>.
|
||||
DATA(lo_descr) = cl_abap_datadescr=>describe_by_data( <any> ).
|
||||
CASE lo_descr->kind.
|
||||
WHEN lo_descr->kind_elem.
|
||||
ls_attri2-type = CAST cl_abap_elemdescr( lo_descr )->get_relative_name( ).
|
||||
ENDCASE.
|
||||
|
||||
APPEND ls_attri2 TO result.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -346,17 +361,15 @@ CLASS z2ui5_lcl_utility IMPLEMENTATION.
|
|||
|
||||
CLEAR t_result.
|
||||
|
||||
DATA lr_row TYPE REF TO data.
|
||||
CREATE DATA lr_row LIKE LINE OF t_result.
|
||||
ASSIGN lr_row->* TO FIELD-SYMBOL(<row>).
|
||||
|
||||
DATA(lo_descr) = cl_abap_datadescr=>describe_by_data( <row> ).
|
||||
DATA(lo_struc) = CAST cl_abap_structdescr( lo_descr ).
|
||||
DATA(lo_tab) = CAST cl_abap_tabledescr( cl_abap_datadescr=>describe_by_data( t_result ) ).
|
||||
DATA(lo_struc) = CAST cl_abap_structdescr( lo_tab->get_table_line_type( ) ).
|
||||
DATA(lt_components) = lo_struc->get_components( ).
|
||||
|
||||
LOOP AT <lt_from> INTO DATA(lr_from).
|
||||
|
||||
CLEAR <row>.
|
||||
DATA lr_row TYPE REF TO data.
|
||||
CREATE DATA lr_row LIKE LINE OF t_result.
|
||||
ASSIGN lr_row->* TO FIELD-SYMBOL(<row>).
|
||||
|
||||
ASSIGN lr_from->* TO FIELD-SYMBOL(<row_ui5>).
|
||||
raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||
|
@ -1337,22 +1350,29 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION.
|
|||
EXPORTING ir_tab_from = lo_model->get_attribute( lr_attri->name )->mr_actual
|
||||
IMPORTING t_result = <attribute> ).
|
||||
|
||||
WHEN 'D' OR 'T' OR 'C'.
|
||||
WHEN OTHERS.
|
||||
|
||||
DATA(lo_attri) = lo_model->get_attribute( lr_attri->name ).
|
||||
FIELD-SYMBOLS <val> TYPE any.
|
||||
ASSIGN lo_attri->mr_actual->* TO <val>.
|
||||
/ui2/cl_json=>deserialize(
|
||||
EXPORTING
|
||||
json = `"` && <val> && `"`
|
||||
CHANGING
|
||||
data = <attribute>
|
||||
).
|
||||
|
||||
WHEN OTHERS.
|
||||
lo_attri = lo_model->get_attribute( lr_attri->name ).
|
||||
ASSIGN lo_attri->mr_actual->* TO <val>.
|
||||
<attribute> = <val>.
|
||||
|
||||
CASE lr_attri->type_kind.
|
||||
WHEN 'D' OR 'T'.
|
||||
/ui2/cl_json=>deserialize(
|
||||
EXPORTING
|
||||
json = `"` && <val> && `"`
|
||||
CHANGING
|
||||
data = <attribute> ).
|
||||
WHEN 'C'.
|
||||
CASE lr_attri->type.
|
||||
WHEN `ABAP_BOOL` OR `ABAP_BOOLEAN` OR `XSDBOOLEAN`.
|
||||
<attribute> = xsdbool( <val> = `true` ).
|
||||
WHEN OTHERS.
|
||||
<attribute> = <val>.
|
||||
ENDCASE.
|
||||
WHEN OTHERS.
|
||||
<attribute> = <val>.
|
||||
ENDCASE.
|
||||
ENDCASE.
|
||||
ENDLOOP.
|
||||
|
||||
|
@ -1467,12 +1487,8 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION.
|
|||
|
||||
IF check_gen_data = abap_true.
|
||||
TRY.
|
||||
|
||||
DATA lr_ref2 TYPE REF TO data.
|
||||
GET REFERENCE OF <attribute> INTO lr_ref2.
|
||||
|
||||
FIELD-SYMBOLS <field> TYPE any.
|
||||
ASSIGN lr_ref2->* TO <field>.
|
||||
ASSIGN lr_ref->* TO <field>.
|
||||
lr_ref = CAST data( <field> ).
|
||||
IF lr_attri->gen_type IS INITIAL.
|
||||
FIELD-SYMBOLS <field2> TYPE any.
|
||||
|
@ -1570,8 +1586,9 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION.
|
|||
CONTINUE.
|
||||
ENDIF.
|
||||
|
||||
DATA(lo_actual) = COND #( WHEN lr_attri->bind_type = cs_bind_type-one_way THEN r_view_model
|
||||
ELSE lo_update ).
|
||||
DATA(lo_actual) = COND #( WHEN lr_attri->bind_type = cs_bind_type-one_way
|
||||
THEN r_view_model
|
||||
ELSE lo_update ).
|
||||
|
||||
FIELD-SYMBOLS <attribute> TYPE any.
|
||||
DATA(lv_name) = c_prefix && to_upper( lr_attri->name ).
|
||||
|
@ -1586,33 +1603,29 @@ CLASS z2ui5_lcl_fw_handler IMPLEMENTATION.
|
|||
|
||||
CASE lr_attri->type_kind.
|
||||
|
||||
" WHEN `g` OR `D` OR `T` OR `C`.
|
||||
" lo_actual->add_attribute( n = lr_attri->name
|
||||
" v = z2ui5_lcl_utility=>get_abap_2_json( <attribute> )
|
||||
" apos_active = abap_false ).
|
||||
|
||||
" WHEN `P`.
|
||||
" lo_actual->add_attribute( n = lr_attri->name
|
||||
" v = /ui2/cl_json=>serialize( <attribute> )
|
||||
" apos_active = abap_false ).
|
||||
|
||||
" WHEN `I`.
|
||||
" lo_actual->add_attribute( n = lr_attri->name
|
||||
" " v = <attribute>
|
||||
" v = CONV string( <attribute> )
|
||||
" apos_active = abap_false ).
|
||||
|
||||
WHEN `h`.
|
||||
lo_actual->add_attribute( n = lr_attri->name
|
||||
v = z2ui5_lcl_utility=>trans_any_2_json( <attribute> )
|
||||
apos_active = abap_false ).
|
||||
|
||||
WHEN OTHERS.
|
||||
lo_actual->add_attribute(
|
||||
n = lr_attri->name
|
||||
v = /ui2/cl_json=>serialize( <attribute> )
|
||||
apos_active = abap_false ).
|
||||
|
||||
CASE lr_attri->type.
|
||||
|
||||
WHEN `ABAP_BOOL` OR `ABAP_BOOLEAN` OR `XSDBOOLEAN`.
|
||||
|
||||
lo_actual->add_attribute(
|
||||
n = lr_attri->name
|
||||
v = SWITCH #( <attribute> WHEN abap_true THEN `true` ELSE `false` )
|
||||
apos_active = abap_false ).
|
||||
|
||||
WHEN OTHERS.
|
||||
|
||||
lo_actual->add_attribute(
|
||||
n = lr_attri->name
|
||||
v = /ui2/cl_json=>serialize( <attribute> )
|
||||
apos_active = abap_false ).
|
||||
ENDCASE.
|
||||
ENDCASE.
|
||||
ENDLOOP.
|
||||
|
||||
|
|
|
@ -10,9 +10,41 @@ CLASS ltcl_unit_01_json DEFINITION FINAL FOR TESTING
|
|||
METHODS test_json_struc FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_json_trans FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_json_trans_gen FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_utility FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_util_uuid_session FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_util_attri_by_ref FOR TESTING RAISING cx_static_check.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_unit_04_deep_data DEFINITION FINAL FOR TESTING
|
||||
DURATION SHORT
|
||||
RISK LEVEL HARMLESS.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES z2ui5_if_app.
|
||||
|
||||
DATA check_initialized TYPE abap_bool.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_row,
|
||||
title TYPE string,
|
||||
value TYPE string,
|
||||
descr TYPE string,
|
||||
icon TYPE string,
|
||||
info TYPE string,
|
||||
selected TYPE abap_bool,
|
||||
checkbox TYPE abap_bool,
|
||||
END OF ty_row.
|
||||
|
||||
CLASS-DATA t_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY.
|
||||
|
||||
CLASS-DATA sv_status TYPE string.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS test_app_deep_data FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_app_deep_data_change FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_app_all FOR TESTING RAISING cx_static_check.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS ltcl_unit_01_json IMPLEMENTATION.
|
||||
|
||||
|
@ -137,7 +169,27 @@ CLASS ltcl_unit_01_json IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_utility.
|
||||
METHOD test_util_attri_by_ref.
|
||||
|
||||
DATA(lo_app) = NEW ltcl_unit_04_deep_data( ).
|
||||
|
||||
DATA(lt_attri) = z2ui5_lcl_utility=>get_t_attri_by_ref( lo_app ).
|
||||
|
||||
DATA(lt_test) = VALUE z2ui5_lcl_utility=>ty_t_attri(
|
||||
( name = `Z2UI5_IF_APP~ID` type_kind = `g` type = `STRING` bind_type = `` data_stringify = `` gen_type_kind = `` gen_type = `` gen_kind = `` )
|
||||
( name = `CHECK_INITIALIZED` type_kind = `C` type = `ABAP_BOOL` bind_type = `` data_stringify = `` gen_type_kind = `` gen_type = `` gen_kind = `` )
|
||||
( name = `SV_STATUS` type_kind = `g` type = `STRING` bind_type = `` data_stringify = `` gen_type_kind = `` gen_type = `` gen_kind = `` )
|
||||
( name = `T_TAB` type_kind = `h` type = `` bind_type = `` data_stringify = `` gen_type_kind = `` gen_type = `` gen_kind = `` )
|
||||
).
|
||||
|
||||
IF lt_test <> lt_attri.
|
||||
cl_abap_unit_assert=>fail( msg = 'utility - get t_attri table wrong' quit = 5 ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD test_util_uuid_session.
|
||||
|
||||
DATA(lv_one) = z2ui5_lcl_utility=>get_uuid_session( ).
|
||||
DATA(lv_two) = z2ui5_lcl_utility=>get_uuid_session( ).
|
||||
|
@ -860,37 +912,6 @@ CLASS ltcl_unit_03_app_ajax IMPLEMENTATION.
|
|||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_unit_04_deep_data DEFINITION FINAL FOR TESTING
|
||||
DURATION SHORT
|
||||
RISK LEVEL HARMLESS.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES z2ui5_if_app.
|
||||
|
||||
DATA check_initialized TYPE abap_bool.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_row,
|
||||
title TYPE string,
|
||||
value TYPE string,
|
||||
descr TYPE string,
|
||||
icon TYPE string,
|
||||
info TYPE string,
|
||||
selected TYPE abap_bool,
|
||||
checkbox TYPE abap_bool,
|
||||
END OF ty_row.
|
||||
|
||||
CLASS-DATA t_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY.
|
||||
|
||||
CLASS-DATA sv_status TYPE string.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS test_app_deep_data FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_app_deep_data_change FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_app_all FOR TESTING RAISING cx_static_check.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltcl_unit_04_deep_data IMPLEMENTATION.
|
||||
|
||||
|
||||
|
@ -1107,4 +1128,5 @@ CLASS ltcl_unit_04_deep_data IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
ENDCLASS.
|
||||
|
|
Loading…
Reference in New Issue
Block a user