### Question:
CategoryScoreDetails implements Serializable { public static CategoryScoreDetails from(ScoreOuterClass.CategoryScoreDetails sc2ApiCategoryScoreDetails) { require("sc2api category score details", sc2ApiCategoryScoreDetails); return new CategoryScoreDetails(sc2ApiCategoryScoreDetails); } private  CategoryScoreDetails(ScoreOuterClass.CategoryScoreDetails sc2APiCategoryScoreDetails); static CategoryScoreDetails from(ScoreOuterClass.CategoryScoreDetails sc2ApiCategoryScoreDetails); float getNone(); float getArmy(); float getEconomy(); float getTechnology(); float getUpgrade(); @Override boolean equals(Object o); @Override int hashCode(); @Override String toString();  }### Answer:
@Test void throwsExceptionWhenSc2ApiCategoryScoreDetailsIsNull() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> CategoryScoreDetails.from(nothing())) .withMessage("sc2api category score details is required"); }
@Test void convertsAllFieldsFromSc2ApiCategoryScoreDetails() { assertThatAllFieldsAreConverted(CategoryScoreDetails.from(sc2ApiCategoryScoreDetails())); }
@Test void throwsExceptionWhenNoneIsNotProvided() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> CategoryScoreDetails.from(without( () -> sc2ApiCategoryScoreDetails().toBuilder(), ScoreOuterClass.CategoryScoreDetails.Builder::clearNone).build())) .withMessage("none is required"); }
@Test void throwsExceptionWhenArmyIsNotProvided() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> CategoryScoreDetails.from(without( () -> sc2ApiCategoryScoreDetails().toBuilder(), ScoreOuterClass.CategoryScoreDetails.Builder::clearArmy).build())) .withMessage("army is required"); }
@Test void throwsExceptionWhenEconomyIsNotProvided() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> CategoryScoreDetails.from(without( () -> sc2ApiCategoryScoreDetails().toBuilder(), ScoreOuterClass.CategoryScoreDetails.Builder::clearEconomy).build())) .withMessage("economy is required"); }
@Test void throwsExceptionWhenTechnologyIsNotProvided() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> CategoryScoreDetails.from(without( () -> sc2ApiCategoryScoreDetails().toBuilder(), ScoreOuterClass.CategoryScoreDetails.Builder::clearTechnology).build())) .withMessage("technology is required"); }
@Test void throwsExceptionWhenUpgradeIsNotProvided() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> CategoryScoreDetails.from(without( () -> sc2ApiCategoryScoreDetails().toBuilder(), ScoreOuterClass.CategoryScoreDetails.Builder::clearUpgrade).build())) .withMessage("upgrade is required"); }