PaperScissorsStone { public Result play() { return gesture1.beats(gesture2); } PaperScissorsStone(Gesture gesture1, Gesture gesture2); static PaperScissorsStone create(Gesture gesture1, Gesture gesture2); Result play();  }
@Test public void scissorsBeatPaper() { PaperScissorsStone game = new PaperScissorsStone(new Scissors(), new Paper()); Result result = game.play(); assertThat(result).isEqualTo(Result.WIN); }
@Test public void scissorsBeatsPaper() { PaperScissorsStone game = new PaperScissorsStone(new PaperScissorsStone.Scissors(), new Paper()); assertEquals(game.play(), Result.WIN); }