"!
Unit-Tests für Demonstrationsklasse für BRF+ Anwendung
"! (c) Ralf Wenzel, Heuristika Unternehmensberatung, Hamburg
"! Diese Unit-Tests zeigen einige Beispiele für die Anwendung
"! der Demonstrationsklasse für die BRF+ Anwendung
CLASS ltc_fc_simple_test DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PRIVATE SECTION.
TYPES:
"! Struktur der Eingabedaten in das BRF+-Regelwerk
"! Diese Typen finden Verwendung in Methodenschnittstellen,
"! daher müssen sie hier definiert werden.
__import_parameters TYPE s_carr_id.
TYPES:
"! Struktur vom BRF+ Regelwerk erzeugten Ausgabedaten
"! Diese Typen finden Verwendung in Methodenschnittstellen,
"! daher müssen sie hier definiert werden.
__brf_result TYPE text255.
DATA brf_prototyp TYPE REF TO yif_brf_prototyp.
DATA brf_result TYPE ycl_brf_prototyp=>_brfresult.
METHODS setup.
METHODS is_carrid_lh FOR TESTING.
METHODS is_carrid_not_lh FOR TESTING.
METHODS teardown.
**********************************************************************
* Hilfsmethoden (zur Verbesserung der Lesbarkeit des Codings)
**********************************************************************
"! Die Ergebnisdaten des BRF+ Regelwerks
"! erhalten wir als Referenz, die wir
"! in ein konventionelles Datenobjekt
"! konvertieren müssen.
"! @parameter i_data | BRF+ Ergebnis als Referenz
"! @parameter r_struc | Struktur der BRF+ Ergebnisdaten
CLASS-METHODS convert_data_simple
IMPORTING i_data TYPE any
RETURNING VALUE(r_struc) TYPE __brf_result.
"! Erzeugung einer Referenz auf die Eingabedaten
"! - die dereferenzierten Eingabedaten werden
"! in der Klasse ohnehin nicht gebraucht
"! @parameter i_import_parameters | BRF+ Eingabedaten
"! @parameter r_import_parameters | Referenz auf BRF+ Eingabedaten
CLASS-METHODS get_reference_of
IMPORTING i_import_parameters TYPE __import_parameters
RETURNING VALUE(r_import_parameters) TYPE REF TO data.
ENDCLASS.
CLASS ltc_fc_simple_test IMPLEMENTATION.
METHOD setup.
brf_prototyp = NEW ycl_brf_prototyp( ).
ENDMETHOD.
METHOD is_carrid_lh.
FIELD-SYMBOLS TYPE any. "IF_FDT_TYPES=>ELEMENT_TEXT.
DATA do_carrid TYPE s_carr_id VALUE 'LH'.
DATA do_carrid_ref TYPE REF TO data.
GET REFERENCE OF do_carrid INTO do_carrid_ref.
TRY.
" Wir erzeugen eine Referenz der Eingabedaten,
" weil die dereferenzierten Eingabedaten
" in der Klasse ohnehin nicht gebraucht werden
" und die Schnittstelle damit universeller wird.
"
" Diese Referenz, den Namen der Eingabedaten
" sowie den Namen der BRF+ Funktion übergeben wir
brf_prototyp->set_prerequisites( VALUE #( function_name = 'FC_SIMPLE'
importdata_name = 'DO_CARRID'
brf_import_parameters = do_carrid_ref
)
).
brf_prototyp->start_rules( ).
CATCH cx_fdt INTO DATA(exc).
MESSAGE exc->get_text( ) TYPE 'E'.
ENDTRY.
" Entgegennehmen des Ergebnisses
" der BRF+ Regelbearbeitung
brf_result = brf_prototyp->get_brf_result( ).
ASSIGN brf_result->* TO .
cl_aunit_assert=>assert_equals(
exp = 'Das ist eine deutsche Fluggesellschaft'
act = convert_data_simple( )
msg = 'Falsches Ergebnis aus BRF+'
level = cl_aunit_assert=>critical
quit = cl_aunit_assert=>method
).
ENDMETHOD.
METHOD is_carrid_not_lh.
FIELD-SYMBOLS TYPE any.
DATA do_carrid TYPE s_carr_id VALUE 'AF'.
DATA do_carrid_ref TYPE REF TO data.
GET REFERENCE OF do_carrid INTO do_carrid_ref.
TRY.
" Wir erzeugen eine Referenz der Eingabedaten,
" weil die dereferenzierten Eingabedaten
" in der Klasse ohnehin nicht gebraucht werden
" und die Schnittstelle damit universeller wird.
"
" Diese Referenz, den Namen der Eingabedaten
" sowie den Namen der BRF+ Funktion übergeben wir
brf_prototyp->set_prerequisites( VALUE #( function_name = 'FC_SIMPLE'
importdata_name = 'DO_CARRID'
brf_import_parameters = do_carrid_ref
)
).
brf_prototyp->start_rules( ).
CATCH cx_fdt INTO DATA(exc).
MESSAGE exc->get_text( ) TYPE 'E'.
ENDTRY.
" Entgegennehmen des Ergebnisses
" der BRF+ Regelbearbeitung
brf_result = brf_prototyp->get_brf_result( ).
ASSIGN brf_result->* TO .
cl_aunit_assert=>assert_equals(
exp = 'Das ist KEINE deutsche Fluggesellschaft'
act = convert_data_simple( )
msg = 'Falsches Ergebnis aus BRF+'
level = cl_aunit_assert=>critical
quit = cl_aunit_assert=>method
).
ENDMETHOD.
METHOD teardown.
CLEAR brf_prototyp.
CLEAR brf_result.
ENDMETHOD.
**********************************************************************
* Hilfsmethoden (zur Verbesserung der Lesbarkeit des Codings)
**********************************************************************
METHOD convert_data_simple.
FIELD-SYMBOLS TYPE any.
FIELD-SYMBOLS TYPE any.
ASSIGN i_data TO .
ASSIGN r_struc TO .
IF IS NOT ASSIGNED
OR IS NOT ASSIGNED.
RETURN.
ENDIF.
= .
ENDMETHOD.
METHOD get_reference_of.
GET REFERENCE OF i_import_parameters INTO r_import_parameters.
ENDMETHOD.
ENDCLASS.