### Question:
ActionSpatialUnitCommand implements
        Sc2ApiSerializable<Spatial.ActionSpatialUnitCommand>, GeneralizableAbility<ActionSpatialUnitCommand> { public static ActionSpatialUnitCommand from(Spatial.ActionSpatialUnitCommand sc2apiActionSpatialUnitCommand) { require("sc2api action spatial unit command", sc2apiActionSpatialUnitCommand); return new ActionSpatialUnitCommand(sc2apiActionSpatialUnitCommand); } private  ActionSpatialUnitCommand(Builder builder); private  ActionSpatialUnitCommand(Spatial.ActionSpatialUnitCommand sc2ApiActionSpatialUnitCommand); static ActionSpatialUnitCommandSyntax unitCommand(); static ActionSpatialUnitCommand from(Spatial.ActionSpatialUnitCommand sc2apiActionSpatialUnitCommand); @Override Spatial.ActionSpatialUnitCommand toSc2Api(); Ability getAbility(); Optional<PointI> getTargetInScreenCoord(); Optional<PointI> getTargetInMinimapCoord(); boolean isQueued(); @Override ActionSpatialUnitCommand generalizeAbility(UnaryOperator<Ability> generalize); @Override boolean equals(Object o); @Override int hashCode(); @Override String toString();  }### Answer:
@Test void throwsExceptionWhenSc2ApiActionSpatialUnitCommandIsNull() { assertThatExceptionOfType(IllegalArgumentException.class) .isThrownBy(() -> ActionSpatialUnitCommand.from(nothing())) .withMessage("sc2api action spatial unit command is required"); }
@Test void convertsSc2ApiActionSpatialUnitCommandToActionSpatialUnitCommand() { assertThatAllFieldsAreConverted(ActionSpatialUnitCommand.from(sc2ApiActionSpatialUnitCommand())); }