Stage 2 summary at 50 accepted trajectories

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Kral
2026-10-05 18:02:52 +02:00
parent 332fb4601d
commit 5bcd1bf9cd
1230 changed files with 77563 additions and 33 deletions

View File

@@ -0,0 +1,142 @@
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.