package Ġcom . github . al berto pe am . gom oku . domain Ċ Ċ import Ġorg . hamcrest . Core Matchers . equalTo Ċ import Ġorg . hamcrest . Matcher Assert . assertThat Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ Ċ class ĠG om oku Rules Test Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġboard : ĠMock Board ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsut : ĠG om oku Rules ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġboard Ġ= ĠMock Board () ĊĠĠĠĠĠĠĠ Ġsut Ġ= ĠG om oku Rules () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġempty ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġboard Ġis Ġempty Ġthen Ġis Ġnot Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġassert No Winner () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġone Ġpiece ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġboard Ġis Ġnot Ġempty Ġbut Ġnot Ġwin Ġthen Ġis Ġnot Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 0 , Ġ 0 ), ĠPlayer . WHITE ) ĊĊĠĠĠĠĠĠĠ Ġassert No Winner () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġhorizontal ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfive Ġin Ġrow Ġin Ġthe Ġfirst Ġrow Ġfor Ġsame Ġplayer Ġthen Ġis Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ( 0 .. 4 ). forEach Ġ{ Ġboard . place ( Position ( 0 , Ġit ), ĠPlayer . WHITE ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert Winner ( Player . WHITE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfive Ġnot Ġconsecutive Ġin Ġthe Ġfirst Ġrow Ġfor Ġdifferent Ġplayers Ġthen Ġis Ġnot Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ ĠarrayOf ( 0 , 2 , 4 , 6 , 8 ). forEach Ġ{ Ġboard . place ( Position ( 0 , Ġit ), ĠPlayer . WHITE ) Ġ} ĊĠĠĠĠĠĠĠ ĠarrayOf ( 1 , 3 , 5 , 7 , 9 ). forEach Ġ{ Ġboard . place ( Position ( 0 , Ġit ), ĠPlayer . BLACK ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert No Winner () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġtwo Ġin Ġa Ġrow Ġin Ġthe Ġfirst Ġrow Ġand Ġthree Ġin Ġa Ġrow Ġin Ġthe Ġsecond Ġrow Ġthen Ġis Ġnot Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ( 0 .. 1 ). forEach Ġ{ Ġboard . place ( Position ( 0 , Ġit ), ĠPlayer . BLACK ) Ġ} ĊĠĠĠĠĠĠĠ Ġ( 0 .. 2 ). forEach Ġ{ Ġboard . place ( Position ( 1 , Ġit ), ĠPlayer . BLACK ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert No Winner () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfour Ġin Ġrow Ġin Ġthe Ġfirst Ġrow Ġfor Ġsame Ġplayer Ġthen Ġis Ġnot Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ( 4 .. 7 ). forEach Ġ{ Ġboard . place ( Position ( 0 , Ġit ), ĠPlayer . WHITE ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert No Winner () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfive Ġin Ġrow Ġbut Ġnot Ġconsecutive Ġin Ġthe Ġfirst Ġrow Ġfor Ġsame Ġplayer Ġthen Ġis Ġnot Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ( 0 .. 3 ). forEach Ġ{ Ġboard . place ( Position ( 0 , Ġit ), ĠPlayer . WHITE ) Ġ} ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 0 , Ġ 4 ), ĠPlayer . BLACK ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 0 , Ġ 5 ), ĠPlayer . WHITE ) ĊĊĠĠĠĠĠĠĠ Ġassert No Winner () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfive Ġin Ġrow Ġfor Ġsame Ġplayer Ġwith Ġan Ġempty Ġin Ġthe Ġmiddle Ġthen Ġis Ġnot Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ( 0 .. 3 ). forEach Ġ{ Ġboard . place ( Position ( 0 , Ġit ), ĠPlayer . WHITE ) Ġ} ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 0 , Ġ 5 ), ĠPlayer . WHITE ) ĊĊĠĠĠĠĠĠĠ Ġassert No Winner () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfive Ġin Ġrow Ġin Ġany Ġrow Ġfor Ġsame Ġplayer Ġthen Ġis Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ( 0 .. board . rows ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboard Ġ= ĠMock Board () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 .. 5 ). forEach Ġ{ Ġboard . place ( Position ( 0 , Ġit ), ĠPlayer . WHITE ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Winner ( Player . WHITE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġsix Ġin Ġrow Ġin Ġany Ġrow Ġfor Ġsame Ġplayer Ġthen Ġis Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ( 0 .. 6 ). forEach Ġ{ Ġboard . place ( Position ( 0 , Ġit ), ĠPlayer . WHITE ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert Winner ( Player . WHITE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġvertical ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfive Ġin Ġa Ġcol Ġin Ġthe Ġfirst Ġcolumn Ġthen Ġis Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ( 0 .. 4 ). forEach Ġ{ Ġboard . place ( Position ( it , Ġ 0 ), ĠPlayer . BLACK ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert Winner ( Player . BLACK ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfive Ġin Ġa Ġcol Ġat Ġthe Ġend Ġof Ġthe Ġfirst Ġcolumn Ġthen Ġis Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ( board . rows - 1 Ġdown To Ġboard . rows - 5 ). forEach Ġ{ Ġboard . place ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPosition ( it , Ġboard . columns - 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlayer . BLACK ĊĠĠĠĠĠĠĠ Ġ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert Winner ( Player . BLACK ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfive Ġin Ġa Ġcol Ġin Ġthe Ġfirst Ġcolumn Ġfor Ġwhite Ġthen Ġis Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ( 0 .. 4 ). forEach Ġ{ Ġboard . place ( Position ( it , Ġ 0 ), ĠPlayer . WHITE ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert Winner ( Player . WHITE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġtwo Ġin Ġa Ġcol Ġin Ġthe Ġfirst Ġcolumn Ġand Ġthree Ġin Ġa Ġcol Ġin Ġthe Ġsecond Ġcolumn Ġthen Ġis Ġnot Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ( 0 .. 1 ). forEach Ġ{ Ġboard . place ( Position ( it , Ġ 0 ), ĠPlayer . BLACK ) Ġ} ĊĠĠĠĠĠĠĠ Ġ( 0 .. 2 ). forEach Ġ{ Ġboard . place ( Position ( it , Ġ 1 ), ĠPlayer . BLACK ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert No Winner () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfive Ġnot Ġconsecutive Ġin Ġthe Ġfirst Ġcolumn Ġfor Ġdifferent Ġplayers Ġthen Ġis Ġnot Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ ĠarrayOf ( 0 , 2 , 4 , 6 , 8 ). forEach Ġ{ Ġboard . place ( Position ( it , Ġ 0 ), ĠPlayer . WHITE ) Ġ} ĊĠĠĠĠĠĠĠ ĠarrayOf ( 1 , 3 , 5 , 7 , 9 ). forEach Ġ{ Ġboard . place ( Position ( it , Ġ 0 ), ĠPlayer . BLACK ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert No Winner () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfour Ġin Ġa Ġcolumn Ġin Ġthe Ġfirst Ġcolumn Ġfor Ġsame Ġplayer Ġthen Ġis Ġnot Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ( 4 .. 7 ). forEach Ġ{ Ġboard . place ( Position ( it , Ġ 0 ), ĠPlayer . WHITE ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert No Winner () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfour Ġin Ġa Ġcolumn Ġin Ġthe Ġlast Ġcolumn Ġfor Ġsame Ġplayer Ġthen Ġis Ġnot Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ( board . rows - 1 Ġdown To Ġboard . rows - 4 ). forEach Ġ{ Ġboard . place ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPosition ( it , Ġboard . columns - 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlayer . BLACK ĊĠĠĠĠĠĠĠ Ġ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert No Winner () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfive Ġin Ġcolumn Ġbut Ġnot Ġconsecutive Ġin Ġthe Ġfirst Ġcolumn Ġfor Ġsame Ġplayer Ġthen Ġis Ġnot Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ( 0 .. 3 ). forEach Ġ{ Ġboard . place ( Position ( it , Ġ 0 ), ĠPlayer . WHITE ) Ġ} ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 4 , Ġ 0 ), ĠPlayer . BLACK ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 5 , Ġ 0 ), ĠPlayer . WHITE ) ĊĊĠĠĠĠĠĠĠ Ġassert No Winner () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfive Ġin Ġcolumn Ġfor Ġsame Ġplayer Ġwith Ġan Ġempty Ġin Ġthe Ġmiddle Ġthen Ġis Ġnot Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ( 0 .. 3 ). forEach Ġ{ Ġboard . place ( Position ( it , Ġ 0 ), ĠPlayer . WHITE ) Ġ} ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 5 , Ġ 0 ), ĠPlayer . WHITE ) ĊĊĠĠĠĠĠĠĠ Ġassert No Winner () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfive Ġin Ġcolumn Ġin Ġany Ġrow Ġfor Ġsame Ġplayer Ġthen Ġis Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ( 0 .. board . rows ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboard Ġ= ĠMock Board () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 .. 5 ). forEach Ġ{ Ġboard . place ( Position ( it , Ġ 0 ), ĠPlayer . WHITE ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert Winner ( Player . WHITE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġsix Ġin Ġcolumn Ġin Ġany Ġrow Ġfor Ġsame Ġplayer Ġthen Ġis Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ( 0 .. 6 ). forEach Ġ{ Ġboard . place ( Position ( it , Ġ 0 ), ĠPlayer . WHITE ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert Winner ( Player . WHITE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġdiagonal ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfive Ġin Ġdiagonal Ġbeginning Ġin Ġfirst Ġrow Ġand Ġcolumn Ġfor Ġsame Ġplayer Ġthen Ġis Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 0 , Ġ 0 ), ĠPlayer . WHITE ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 1 , Ġ 1 ), ĠPlayer . WHITE ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 2 , Ġ 2 ), ĠPlayer . WHITE ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 3 , Ġ 3 ), ĠPlayer . WHITE ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 4 , Ġ 4 Ġ), ĠPlayer . WHITE ) ĊĊĠĠĠĠĠĠĠ Ġassert Winner ( Player . WHITE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` given Ġa Ġwhite Ġpiece Ġin Ġlast Ġposition Ġfor Ġfirst Ġrow Ġthen Ġis Ġno Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 0 , Ġboard . last Column ), ĠPlayer . WHITE ) ĊĊĠĠĠĠĠĠĠ Ġassert No Winner () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfive Ġin Ġdiagonal Ġbeginning Ġin Ġfirst Ġrow Ġand Ġlast Ġcolumn Ġminus Ġfive Ġfor Ġsame Ġplayer Ġthen Ġis Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 0 , Ġboard . last Column Ġ- Ġ 5 ), ĠPlayer . BLACK ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 1 , Ġboard . last Column Ġ- Ġ 4 ), ĠPlayer . BLACK ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 2 , Ġboard . last Column Ġ- Ġ 3 ), ĠPlayer . BLACK ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 3 , Ġboard . last Column Ġ- Ġ 2 ), ĠPlayer . BLACK ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 4 , Ġboard . last Column Ġ- Ġ 1 Ġ), ĠPlayer . BLACK ) ĊĊĠĠĠĠĠĠĠ Ġassert Winner ( Player . BLACK ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfive Ġin Ġdiagonal Ġbeginning Ġin Ġlast Ġrow Ġminus Ġfive Ġand Ġfirst Ġcolumn Ġfor Ġsame Ġplayer Ġthen Ġis Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( board . rows Ġ- Ġ 5 , Ġ 0 ), ĠPlayer . WHITE ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( board . rows Ġ- Ġ 4 , Ġ 1 ), ĠPlayer . WHITE ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( board . rows Ġ- Ġ 3 , Ġ 2 ), ĠPlayer . WHITE ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( board . rows Ġ- Ġ 2 , Ġ 3 ), ĠPlayer . WHITE ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( board . rows Ġ- Ġ 1 , Ġ 4 Ġ), ĠPlayer . WHITE ) ĊĊĠĠĠĠĠĠĠ Ġassert Winner ( Player . WHITE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfive Ġnot Ġconsecutive Ġin Ġdiagonal Ġbegin ing Ġin Ġfirst Ġrow Ġfor Ġdifferent Ġplayers Ġthen Ġis Ġnot Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 0 , Ġ 0 ), ĠPlayer . WHITE ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 1 , Ġ 1 ), ĠPlayer . WHITE ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 2 , Ġ 2 ), ĠPlayer . WHITE ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 3 , Ġ 3 ), ĠPlayer . WHITE ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 5 , Ġ 5 ), ĠPlayer . WHITE ) ĊĊĠĠĠĠĠĠĠ Ġassert No Winner () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġinverse Ġdiagonal ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfive Ġin Ġdiagonal Ġbeginning Ġin Ġfirst Ġf ifth Ġrow Ġand Ġfirst Ġcolumn Ġfor Ġsame Ġplayer Ġthen Ġis Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 4 , Ġ 0 ), ĠPlayer . WHITE ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 3 , Ġ 1 ), ĠPlayer . WHITE ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 2 , Ġ 2 ), ĠPlayer . WHITE ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 1 , Ġ 3 ), ĠPlayer . WHITE ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 0 , Ġ 4 ), ĠPlayer . WHITE ) ĊĊĠĠĠĠĠĠĠ Ġassert Winner ( Player . WHITE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfive Ġin Ġdiagonal Ġbeginning Ġin Ġf ifth Ġrow Ġand Ġlast Ġcolumn Ġminus Ġfive Ġfor Ġsame Ġplayer Ġthen Ġis Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 4 , Ġboard . last Column Ġ- Ġ 5 ), ĠPlayer . BLACK ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 3 , Ġboard . last Column Ġ- Ġ 4 ), ĠPlayer . BLACK ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 2 , Ġboard . last Column Ġ- Ġ 3 ), ĠPlayer . BLACK ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 1 , Ġboard . last Column Ġ- Ġ 2 ), ĠPlayer . BLACK ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( 0 , Ġboard . last Column Ġ- Ġ 1 ), ĠPlayer . BLACK ) ĊĊĠĠĠĠĠĠĠ Ġassert Winner ( Player . BLACK ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfive Ġin Ġdiagonal Ġbeginning Ġin Ġlast Ġrow Ġand Ġfirst Ġcolumn Ġfor Ġsame Ġplayer Ġthen Ġis Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( board . last Row Ġ- Ġ 0 , Ġ 0 ), ĠPlayer . WHITE ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( board . last Row Ġ- Ġ 1 , Ġ 1 ), ĠPlayer . WHITE ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( board . last Row Ġ- Ġ 2 , Ġ 2 ), ĠPlayer . WHITE ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( board . last Row Ġ- Ġ 3 , Ġ 3 ), ĠPlayer . WHITE ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( board . last Row Ġ- Ġ 4 , Ġ 4 Ġ), ĠPlayer . WHITE ) ĊĊĠĠĠĠĠĠĠ Ġassert Winner ( Player . WHITE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfive Ġnot Ġconsecutive Ġin Ġdiagonal Ġbegin ing Ġin Ġlast Ġrow Ġfor Ġdifferent Ġplayers Ġthen Ġis Ġnot Ġwinner `() Ġ{ ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( board . last Row , Ġ 0 ), ĠPlayer . BLACK ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( board . last Row Ġ- Ġ 1 , Ġ 1 ), ĠPlayer . BLACK ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( board . last Row Ġ- Ġ 2 , Ġ 2 ), ĠPlayer . BLACK ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( board . last Row Ġ- Ġ 3 , Ġ 3 ), ĠPlayer . BLACK ) ĊĠĠĠĠĠĠĠ Ġboard . place ( Position ( board . last Row Ġ- Ġ 5 , Ġ 5 ), ĠPlayer . BLACK ) ĊĊĠĠĠĠĠĠĠ Ġassert No Winner () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassert No Winner () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( sut . have Winner ( board , ĠPlayer . WHITE ), ĠequalTo ( false )) ĊĠĠĠĠĠĠĠ ĠassertThat ( sut . have Winner ( board , ĠPlayer . BLACK ), ĠequalTo ( false )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġassert Winner ( player : ĠPlayer ) Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( sut . have Winner ( board , Ġplayer ), ĠequalTo ( true )) ĊĠĠĠ Ġ} Ċ }