### Question:
PlayerRaw implements Serializable { public static PlayerRaw from(Raw.PlayerRaw sc2ApiPlayerRaw) { require("sc2api player raw", sc2ApiPlayerRaw); return new PlayerRaw(sc2ApiPlayerRaw); } private  PlayerRaw(Raw.PlayerRaw sc2ApiPlayerRaw); static PlayerRaw from(Raw.PlayerRaw sc2ApiPlayerRaw); Set<PowerSource> getPowerSources(); Point getCamera(); Set<Upgrade> getUpgrades(); @Override boolean equals(Object o); @Override int hashCode(); @Override String toString();  }### Answer:
@Test void throwsExceptionWhenSc2ApiPlayerRawIsNull() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> PlayerRaw.from(nothing())) .withMessage("sc2api player raw is required"); }
@Test void convertsAllFieldsFromSc2ApiPlayerRaw() { assertThatAllFieldsAreConverted(PlayerRaw.from(sc2ApiPlayerRaw())); }
@Test void throwsExceptionWhenCameraIsNotProvided() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> PlayerRaw.from(without( () -> sc2ApiPlayerRaw().toBuilder(), Raw.PlayerRaw.Builder::clearCamera).build())) .withMessage("camera is required"); }