143 lines
7.1 KiB
ABAP
143 lines
7.1 KiB
ABAP
CLASS {{p}}t31_hidden DEFINITION PUBLIC FINAL CREATE PUBLIC
|
|
FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
|
PRIVATE SECTION.
|
|
DATA mo_cut TYPE REF TO {{p}}league_table.
|
|
|
|
METHODS setup.
|
|
METHODS basic_league
|
|
RETURNING VALUE(rt_matches) TYPE {{p}}league_table=>tt_match.
|
|
|
|
METHODS empty_input_is_empty FOR TESTING.
|
|
METHODS ignores_invalid_matches FOR TESTING.
|
|
METHODS counts_played_and_points FOR TESTING.
|
|
METHODS accumulates_goals FOR TESTING.
|
|
METHODS sorts_by_points FOR TESTING.
|
|
METHODS sorts_by_goal_diff FOR TESTING.
|
|
METHODS sorts_by_goals_for FOR TESTING.
|
|
METHODS sorts_by_team_name FOR TESTING.
|
|
METHODS ties_share_rank FOR TESTING.
|
|
METHODS rank_jumps_after_tie FOR TESTING.
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS {{p}}t31_hidden IMPLEMENTATION.
|
|
METHOD setup.
|
|
mo_cut = NEW {{p}}league_table( ).
|
|
ENDMETHOD.
|
|
|
|
METHOD basic_league.
|
|
rt_matches = VALUE #(
|
|
( home_team = 'A' away_team = 'B' home_goals = 2 away_goals = 0 )
|
|
( home_team = 'A' away_team = 'C' home_goals = 1 away_goals = 1 )
|
|
( home_team = 'B' away_team = 'C' home_goals = 3 away_goals = 1 )
|
|
( home_team = 'C' away_team = 'D' home_goals = 2 away_goals = 2 )
|
|
( home_team = 'D' away_team = 'A' home_goals = 0 away_goals = 3 ) ).
|
|
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 ignores_invalid_matches.
|
|
DATA(lt_matches) = VALUE {{p}}league_table=>tt_match(
|
|
( home_team = '' away_team = 'B' home_goals = 1 away_goals = 0 )
|
|
( home_team = 'A' away_team = '' home_goals = 1 away_goals = 0 )
|
|
( home_team = 'A' away_team = 'A' home_goals = 1 away_goals = 0 )
|
|
( home_team = 'A' away_team = 'B' home_goals = -1 away_goals = 0 )
|
|
( home_team = 'A' away_team = 'B' home_goals = 0 away_goals = -2 ) ).
|
|
DATA(lt_table) = mo_cut->evaluate( lt_matches ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lines( lt_table ) ).
|
|
ENDMETHOD.
|
|
|
|
METHOD counts_played_and_points.
|
|
DATA(lt_table) = mo_cut->evaluate( basic_league( ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 4 act = lines( lt_table ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'A' act = lt_table[ 1 ]-team ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 3 act = lt_table[ 1 ]-played ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = lt_table[ 1 ]-won ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_table[ 1 ]-drawn ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 0 act = lt_table[ 1 ]-lost ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 7 act = lt_table[ 1 ]-points ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_table[ 1 ]-rank ).
|
|
ENDMETHOD.
|
|
|
|
METHOD accumulates_goals.
|
|
DATA(lt_table) = mo_cut->evaluate( basic_league( ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 6 act = lt_table[ 1 ]-goals_for ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_table[ 1 ]-goals_against ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 5 act = lt_table[ 1 ]-goal_diff ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = lt_table[ 4 ]-goals_for ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 5 act = lt_table[ 4 ]-goals_against ).
|
|
cl_abap_unit_assert=>assert_equals( exp = -3 act = lt_table[ 4 ]-goal_diff ).
|
|
ENDMETHOD.
|
|
|
|
METHOD sorts_by_points.
|
|
DATA(lt_table) = mo_cut->evaluate( basic_league( ) ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'A' act = lt_table[ 1 ]-team ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'B' act = lt_table[ 2 ]-team ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'C' act = lt_table[ 3 ]-team ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'D' act = lt_table[ 4 ]-team ).
|
|
ENDMETHOD.
|
|
|
|
METHOD sorts_by_goal_diff.
|
|
DATA(lt_matches) = VALUE {{p}}league_table=>tt_match(
|
|
( home_team = 'P' away_team = 'R' home_goals = 3 away_goals = 0 )
|
|
( home_team = 'Q' away_team = 'S' home_goals = 1 away_goals = 0 ) ).
|
|
DATA(lt_table) = mo_cut->evaluate( lt_matches ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'P' act = lt_table[ 1 ]-team ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'Q' act = lt_table[ 2 ]-team ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'S' act = lt_table[ 3 ]-team ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'R' act = lt_table[ 4 ]-team ).
|
|
ENDMETHOD.
|
|
|
|
METHOD sorts_by_goals_for.
|
|
DATA(lt_matches) = VALUE {{p}}league_table=>tt_match(
|
|
( home_team = 'P' away_team = 'R' home_goals = 2 away_goals = 0 )
|
|
( home_team = 'Q' away_team = 'S' home_goals = 3 away_goals = 1 ) ).
|
|
DATA(lt_table) = mo_cut->evaluate( lt_matches ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'Q' act = lt_table[ 1 ]-team ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'P' act = lt_table[ 2 ]-team ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'S' act = lt_table[ 3 ]-team ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'R' act = lt_table[ 4 ]-team ).
|
|
ENDMETHOD.
|
|
|
|
METHOD sorts_by_team_name.
|
|
DATA(lt_matches) = VALUE {{p}}league_table=>tt_match(
|
|
( home_team = 'ZEBRA' away_team = 'Y' home_goals = 1 away_goals = 0 )
|
|
( home_team = 'ALPHA' away_team = 'X' home_goals = 1 away_goals = 0 ) ).
|
|
DATA(lt_table) = mo_cut->evaluate( lt_matches ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'ALPHA' act = lt_table[ 1 ]-team ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'ZEBRA' act = lt_table[ 2 ]-team ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'X' act = lt_table[ 3 ]-team ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'Y' act = lt_table[ 4 ]-team ).
|
|
ENDMETHOD.
|
|
|
|
METHOD ties_share_rank.
|
|
DATA(lt_matches) = VALUE {{p}}league_table=>tt_match(
|
|
( home_team = 'E' away_team = 'F' home_goals = 1 away_goals = 1 )
|
|
( home_team = 'G' away_team = 'H' home_goals = 1 away_goals = 1 ) ).
|
|
DATA(lt_table) = mo_cut->evaluate( lt_matches ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 4 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 ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_table[ 3 ]-rank ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_table[ 4 ]-rank ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_table[ 1 ]-points ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_table[ 1 ]-drawn ).
|
|
ENDMETHOD.
|
|
|
|
METHOD rank_jumps_after_tie.
|
|
DATA(lt_matches) = VALUE {{p}}league_table=>tt_match(
|
|
( home_team = 'A' away_team = 'B' home_goals = 1 away_goals = 0 )
|
|
( home_team = 'C' away_team = 'D' home_goals = 1 away_goals = 1 ) ).
|
|
DATA(lt_table) = mo_cut->evaluate( lt_matches ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'A' act = lt_table[ 1 ]-team ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 1 act = lt_table[ 1 ]-rank ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = lt_table[ 2 ]-rank ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 2 act = lt_table[ 3 ]-rank ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 4 act = lt_table[ 4 ]-rank ).
|
|
cl_abap_unit_assert=>assert_equals( exp = 'B' act = lt_table[ 4 ]-team ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|