import Ġorg . junit . Test Ċ Ċ import Ġjava . util . Random Ċ Ċ import Ġorg . junit . Assert .* Ċ Ċ class ĠCom bat Test Ġ{ ĊĊĠĠĠ Ġinternal Ġinner Ġclass ĠMock Random Ġ: ĠRandom () Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġoutput : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfun Ġset Output ( output : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . output Ġ= Ġoutput ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnext Int ( range : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġoutput ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġno Hit With Zero Accuracy () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmock Random Ġ= ĠMock Random () ĊĠĠĠĠĠĠĠ Ġval Ġc Ġ= ĠCom bat ( mock Random ) ĊĠĠĠĠĠĠĠ Ġmock Random . setOutput ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( c . hit ( 0 )) ĊĊĠĠĠĠĠĠĠ Ġmock Random . setOutput ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( c . hit ( 0 )) ĊĊĠĠĠĠĠĠĠ Ġmock Random . setOutput ( 9 9 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( c . hit ( 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsome Hit With Low Accuracy () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmock Random Ġ= ĠMock Random () ĊĠĠĠĠĠĠĠ Ġval Ġc Ġ= ĠCom bat ( mock Random ) ĊĠĠĠĠĠĠĠ Ġmock Random . setOutput ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( c . hit ( 2 )) ĊĊĠĠĠĠĠĠĠ Ġmock Random . setOutput ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( c . hit ( 2 )) ĊĊĠĠĠĠĠĠĠ Ġmock Random . setOutput ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( c . hit ( 2 )) ĊĊĠĠĠĠĠĠĠ Ġmock Random . setOutput ( 9 9 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( c . hit ( 2 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġall Hit With Max Accuracy () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmock Random Ġ= ĠMock Random () ĊĠĠĠĠĠĠĠ Ġval Ġc Ġ= ĠCom bat ( mock Random ) ĊĠĠĠĠĠĠĠ Ġmock Random . setOutput ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( c . hit ( 1 0 0 )) ĊĊĠĠĠĠĠĠĠ Ġmock Random . setOutput ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( c . hit ( 1 0 0 )) ĊĊĠĠĠĠĠĠĠ Ġmock Random . setOutput ( 5 8 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( c . hit ( 1 0 0 )) ĊĊĠĠĠĠĠĠĠ Ġmock Random . setOutput ( 9 9 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( c . hit ( 1 0 0 )) ĊĠĠĠ Ġ} Ċ }