package Ġorg . jes per anc in ha . games . kal ag ame service . service Ċ Ċ import Ġorg . jes per anc in ha . games . kal ag ame service . exception . Game Over Exception Ċ import Ġorg . jes per anc in ha . games . kal ag ame service . exception . Invalid P it Exception Ċ import Ġorg . jes per anc in ha . games . kal ag ame service . exception . Not Owned P it Exception Ċ import Ġorg . jes per anc in ha . games . kal ag ame service . exception . Wrong Turn Exception Ċ import Ġorg . jes per anc in ha . games . kal ag ame service . model . Player Ċ import Ġorg . jes per anc in ha . games . kal ag ame service . repository . K ala Player Repository Ċ import Ġorg . junit . jupiter . api . Assertions Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . boot . test . context . SpringBootTest Ċ import Ġjavax . transaction . Transactional Ċ Ċ @ SpringBootTest Ċ @ Transactional Ċ internal Ġclass ĠGame ServiceException It Test ( ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġval Ġgame Service : ĠGame Service , ĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġval Ġk ala Player Repository : ĠK ala Player Repository Ċ ) Ġ{ ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest S ow St ones From P it _ when Trying ToS ow In AW r ong Turn _ then Fail () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser 1 Ġ= Ġk ala Player Repository . save ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlayer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġ" user 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġuser 2 Ġ= Ġk ala Player Repository . save ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlayer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġ" user 2 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġuser 1 . opp onent Ġ= Ġuser 2 ĊĠĠĠĠĠĠĠ Ġuser 2 . opp onent Ġ= Ġuser 1 ĊĠĠĠĠĠĠĠ Ġval Ġuser Final 1 Ġ= Ġk ala Player Repository . save ( user 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġuser Final 2 Ġ= Ġk ala Player Repository . save ( user 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġboard Ġ= Ġgame Service . createNew Board ( user Final 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġboard Final Ġ= Ġgame Service . join Player ( user Final 2 , Ġboard ) ĊĠĠĠĠĠĠĠ ĠAssertions . assert Throws ( Wrong Turn Exception :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboard . pit Two ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame Service . s ow St ones From P it ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Final 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġboard Final ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest S ow St ones From P it _ when Trying ToS ow In AW r ong P it _ then Fail () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser 1 Ġ= Ġk ala Player Repository . save ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlayer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġ" user 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġuser 2 Ġ= Ġk ala Player Repository . save ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlayer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġ" user 2 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġuser 1 . opp onent Ġ= Ġuser 2 ĊĠĠĠĠĠĠĠ Ġuser 2 . opp onent Ġ= Ġuser 1 ĊĠĠĠĠĠĠĠ Ġval Ġuser Final 1 Ġ= Ġk ala Player Repository . save ( user 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġuser Final 2 Ġ= Ġk ala Player Repository . save ( user 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġboard Ġ= Ġgame Service . createNew Board ( user Final 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġboard Final Ġ= Ġgame Service . join Player ( user Final 2 , Ġboard ) ĊĠĠĠĠĠĠĠ ĠAssertions . assert Throws ( Not Owned P it Exception :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboard . pit Two ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame Service . s ow St ones From P it ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Final 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġboard Final ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest S ow St ones From P it _ when Trying ToS ow From AK alah _ then Fail () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser 1 Ġ= Ġk ala Player Repository . save ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlayer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġ" user 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġuser 2 Ġ= Ġk ala Player Repository . save ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlayer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġ" user 2 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġuser 1 . opp onent Ġ= Ġuser 2 ĊĠĠĠĠĠĠĠ Ġuser 2 . opp onent Ġ= Ġuser 1 ĊĠĠĠĠĠĠĠ Ġval Ġuser Final 1 Ġ= Ġk ala Player Repository . save ( user 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġuser Final 2 Ġ= Ġk ala Player Repository . save ( user 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġboard Ġ= Ġgame Service . createNew Board ( user Final 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġboard Final Ġ= Ġgame Service . join Player ( user Final 2 , Ġboard ) ĊĠĠĠĠĠĠĠ ĠAssertions . assert Throws ( Invalid P it Exception :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboard . kal ah One ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame Service . s ow St ones From P it ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Final 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġboard Final ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest S ow St ones From P it _ when Game Over _ then Fail () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser 1 Ġ= Ġk ala Player Repository . save ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlayer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġ" user 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġuser 2 Ġ= Ġk ala Player Repository . save ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlayer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġ" user 2 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġuser 1 . opp onent Ġ= Ġuser 2 ĊĠĠĠĠĠĠĠ Ġuser 2 . opp onent Ġ= Ġuser 1 ĊĠĠĠĠĠĠĠ Ġval Ġuser Final 1 Ġ= Ġk ala Player Repository . save ( user 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġuser Final 2 Ġ= Ġk ala Player Repository . save ( user 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġboard Ġ= Ġgame Service . createNew Board ( user Final 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġboard Final Ġ= Ġgame Service . join Player ( user Final 2 , Ġboard ) ĊĠĠĠĠĠĠĠ Ġboard Final . winner Ġ= Ġuser 1 ĊĠĠĠĠĠĠĠ ĠAssertions . assert Throws ( Game Over Exception :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboard . pit One ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame Service . s ow St ones From P it ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Final 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġboard Final ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }