CLASS ltc_league_table DEFINITION FINAL FOR TESTING DURATION SHORT RISK LEVEL HARMLESS. PRIVATE SECTION. DATA mo_cut TYPE REF TO {{p}}league_table. METHODS setup. METHODS empty_input_is_empty FOR TESTING. METHODS counts_points FOR TESTING. METHODS ignores_invalid_match FOR TESTING. METHODS ranks_ties_equal FOR TESTING. ENDCLASS. CLASS ltc_league_table IMPLEMENTATION. METHOD setup. mo_cut = NEW {{p}}league_table( ). ENDMETHOD. METHOD empty_input_is_empty. DATA(lt_table) = mo_cut->evaluate( VALUE {{p}}league_table=>tt_match( ) ). cl_abap_unit_assert=>assert_equals( exp = 0 act = lines( lt_table ) ). ENDMETHOD. METHOD counts_points. DATA(lt_table) = mo_cut->evaluate( VALUE {{p}}league_table=>tt_match( ( home_team = 'A' away_team = 'B' home_goals = 2 away_goals = 0 ) ( home_team = 'B' away_team = 'A' home_goals = 2 away_goals = 2 ) ) ). cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_table ) ). cl_abap_unit_assert=>assert_equals( exp = 'A' act = lt_table[ 1 ]-team ). cl_abap_unit_assert=>assert_equals( exp = 4 act = lt_table[ 1 ]-points ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_table[ 2 ]-points ). ENDMETHOD. METHOD ignores_invalid_match. DATA(lt_table) = mo_cut->evaluate( VALUE {{p}}league_table=>tt_match( ( home_team = 'A' away_team = 'A' home_goals = 1 away_goals = 0 ) ) ). cl_abap_unit_assert=>assert_equals( exp = 0 act = lines( lt_table ) ). ENDMETHOD. METHOD ranks_ties_equal. DATA(lt_table) = mo_cut->evaluate( VALUE {{p}}league_table=>tt_match( ( home_team = 'A' away_team = 'B' home_goals = 1 away_goals = 1 ) ) ). cl_abap_unit_assert=>assert_equals( exp = 2 act = lines( lt_table ) ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_table[ 1 ]-rank ). cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_table[ 2 ]-rank ). ENDMETHOD. ENDCLASS.