// Path: ocpp-v2_0/src/main/java/eu/chargetime/ocpp/model/basic/StatusNotificationRequest.java
// public class StatusNotificationRequest implements Request {
// 
//   private transient RequiredValidator validator = new RequiredValidator();
// 
//   private ZonedDateTime timestamp;
// 
//   private ConnectorStatusEnumType connectorStatus;
// 
//   private Integer evseId;
// 
//   private Integer connectorId;
// 
//   /**
//    * This is the time for which the status is reported
//    *
//    * @return {@link ZonedDateTime}
//    */
//   public ZonedDateTime getTimestamp() {
//     return timestamp;
//   }
// 
//   /**
//    * Required. Time the status is reported.
//    *
//    * @param timestamp {@link ZonedDateTime}
//    */
//   public void setTimestamp(ZonedDateTime timestamp) {
//     validator.validate(timestamp);
//     this.timestamp = timestamp;
//   }
// 
//   /**
//    * This contains the current status of the Connector.
//    *
//    * @return {@link ConnectorStatusEnumType}
//    */
//   public ConnectorStatusEnumType getConnectorStatus() {
//     return connectorStatus;
//   }
// 
//   /**
//    * Required. The current status of the Connector.
//    *
//    * @param connectorStatus {@link ConnectorStatusEnumType}
//    */
//   public void setConnectorStatus(ConnectorStatusEnumType connectorStatus) {
//     validator.validate(connectorStatus);
//     this.connectorStatus = connectorStatus;
//   }
// 
//   /**
//    * This is the id of the EVSE to which the connector belongs for which the status is reported.
//    *
//    * @return {@link ConnectorStatusEnumType}
//    */
//   public Integer getEvseId() {
//     return evseId;
//   }
// 
//   /**
//    * Required. The id of the EVSE to which the connector belongs for which the status is reported.
//    *
//    * @param evseId integer, evse id
//    */
//   public void setEvseId(Integer evseId) {
//     validator.validate(evseId);
//     this.evseId = evseId;
//   }
// 
//   /**
//    * This is the id of the connector within the EVSE for which the status is reported.
//    *
//    * @return {@link ConnectorStatusEnumType}
//    */
//   public Integer getConnectorId() {
//     return connectorId;
//   }
// 
//   /**
//    * Required. The id of the connector within the EVSE for which the status is reported.
//    *
//    * @param connectorId integer, connector id
//    */
//   public void setConnectorId(Integer connectorId) {
//     validator.validate(connectorId);
//     this.connectorId = connectorId;
//   }
// 
//   @Override
//   public boolean transactionRelated() {
//     return false;
//   }
// 
//   @Override
//   public boolean validate() {
//     return validator.safeValidate(timestamp)
//         && validator.safeValidate(connectorStatus)
//         && validator.safeValidate(evseId)
//         && validator.safeValidate(connectorId);
//   }
// 
//   @Override
//   public boolean equals(Object o) {
//     if (this == o) {
//       return true;
//     }
//     if (o == null || getClass() != o.getClass()) {
//       return false;
//     }
//     StatusNotificationRequest that = (StatusNotificationRequest) o;
//     return Objects.equals(connectorStatus, that.connectorStatus)
//         && Objects.equals(evseId, that.evseId)
//         && Objects.equals(connectorId, that.connectorId);
//   }
// 
//   @Override
//   public int hashCode() {
//     return Objects.hash(timestamp, connectorStatus, evseId, connectorId);
//   }
// 
//   @Override
//   public String toString() {
//     return MoreObjects.toStringHelper(this)
//         .add("timestamp", timestamp)
//         .add("connectorStatus", connectorStatus)
//         .add("evseId", evseId)
//         .add("connectorId", connectorId)
//         .toString();
//   }
// }
// 
// Path: ocpp-v2_0/src/main/java/eu/chargetime/ocpp/model/basic/types/ConnectorStatusEnumType.java
// public enum ConnectorStatusEnumType {
//   Available,
//   Occupied,
//   Reserved,
//   Unavailable,
//   Faulted
// }


import org.junit.Test;
import eu.chargetime.ocpp.PropertyConstraintException;
import eu.chargetime.ocpp.model.basic.StatusNotificationRequest;
import eu.chargetime.ocpp.model.basic.types.ConnectorStatusEnumType;
import java.time.ZonedDateTime;
import org.junit.Assert;
  @Test(expected = PropertyConstraintException.class)
  public void setEvseId_null_throwsPropertyConstraintException() {
    StatusNotificationRequest sut = new StatusNotificationRequest();

    sut.setEvseId(null);
  }

  @Test(expected = PropertyConstraintException.class)
  public void setConnectorId_null_throwsPropertyConstraintException() {
    StatusNotificationRequest sut = new StatusNotificationRequest();

    sut.setConnectorId(null);
  }

  @Test
  public void validate_nothingIsSet_returnsFalse() {
    boolean expected = false;
    StatusNotificationRequest sut = new StatusNotificationRequest();

    boolean result = sut.validate();

    Assert.assertEquals(expected, result);
  }

  @Test
  public void validate_dataIsSet_returnsTrue() {
    boolean expected = true;

    StatusNotificationRequest sut = new StatusNotificationRequest();
    sut.setTimestamp(ZonedDateTime.now());
// Path: ocpp-v2_0/src/main/java/eu/chargetime/ocpp/model/basic/StatusNotificationRequest.java
// public class StatusNotificationRequest implements Request {
// 
//   private transient RequiredValidator validator = new RequiredValidator();
// 
//   private ZonedDateTime timestamp;
// 
//   private ConnectorStatusEnumType connectorStatus;
// 
//   private Integer evseId;
// 
//   private Integer connectorId;
// 
//   /**
//    * This is the time for which the status is reported
//    *
//    * @return {@link ZonedDateTime}
//    */
//   public ZonedDateTime getTimestamp() {
//     return timestamp;
//   }
// 
//   /**
//    * Required. Time the status is reported.
//    *
//    * @param timestamp {@link ZonedDateTime}
//    */
//   public void setTimestamp(ZonedDateTime timestamp) {
//     validator.validate(timestamp);
//     this.timestamp = timestamp;
//   }
// 
//   /**
//    * This contains the current status of the Connector.
//    *
//    * @return {@link ConnectorStatusEnumType}
//    */
//   public ConnectorStatusEnumType getConnectorStatus() {
//     return connectorStatus;
//   }
// 
//   /**
//    * Required. The current status of the Connector.
//    *
//    * @param connectorStatus {@link ConnectorStatusEnumType}
//    */
//   public void setConnectorStatus(ConnectorStatusEnumType connectorStatus) {
//     validator.validate(connectorStatus);
//     this.connectorStatus = connectorStatus;
//   }
// 
//   /**
//    * This is the id of the EVSE to which the connector belongs for which the status is reported.
//    *
//    * @return {@link ConnectorStatusEnumType}
//    */
//   public Integer getEvseId() {
//     return evseId;
//   }
// 
//   /**
//    * Required. The id of the EVSE to which the connector belongs for which the status is reported.
//    *
//    * @param evseId integer, evse id
//    */
//   public void setEvseId(Integer evseId) {
//     validator.validate(evseId);
//     this.evseId = evseId;
//   }
// 
//   /**
//    * This is the id of the connector within the EVSE for which the status is reported.
//    *
//    * @return {@link ConnectorStatusEnumType}
//    */
//   public Integer getConnectorId() {
//     return connectorId;
//   }
// 
//   /**
//    * Required. The id of the connector within the EVSE for which the status is reported.
//    *
//    * @param connectorId integer, connector id
//    */
//   public void setConnectorId(Integer connectorId) {
//     validator.validate(connectorId);
//     this.connectorId = connectorId;
//   }
// 
//   @Override
//   public boolean transactionRelated() {
//     return false;
//   }
// 
//   @Override
//   public boolean validate() {
//     return validator.safeValidate(timestamp)
//         && validator.safeValidate(connectorStatus)
//         && validator.safeValidate(evseId)
//         && validator.safeValidate(connectorId);
//   }
// 
//   @Override
//   public boolean equals(Object o) {
//     if (this == o) {
//       return true;
//     }
//     if (o == null || getClass() != o.getClass()) {
//       return false;
//     }
//     StatusNotificationRequest that = (StatusNotificationRequest) o;
//     return Objects.equals(connectorStatus, that.connectorStatus)
//         && Objects.equals(evseId, that.evseId)
//         && Objects.equals(connectorId, that.connectorId);
//   }
// 
//   @Override
//   public int hashCode() {
//     return Objects.hash(timestamp, connectorStatus, evseId, connectorId);
//   }
// 
//   @Override
//   public String toString() {
//     return MoreObjects.toStringHelper(this)
//         .add("timestamp", timestamp)
//         .add("connectorStatus", connectorStatus)
//         .add("evseId", evseId)
//         .add("connectorId", connectorId)
//         .toString();
//   }
// }
// 
// Path: ocpp-v2_0/src/main/java/eu/chargetime/ocpp/model/basic/types/ConnectorStatusEnumType.java
// public enum ConnectorStatusEnumType {
//   Available,
//   Occupied,
//   Reserved,
//   Unavailable,
//   Faulted
// }


// Path: ocpp-v2_0/src/test/java/eu/chargetime/ocpp/model/basic/test/StatusNotificationRequestTest.java
import org.junit.Test;
import eu.chargetime.ocpp.PropertyConstraintException;
import eu.chargetime.ocpp.model.basic.StatusNotificationRequest;
import eu.chargetime.ocpp.model.basic.types.ConnectorStatusEnumType;
import java.time.ZonedDateTime;
import org.junit.Assert;

  @Test(expected = PropertyConstraintException.class)
  public void setEvseId_null_throwsPropertyConstraintException() {
    StatusNotificationRequest sut = new StatusNotificationRequest();

    sut.setEvseId(null);
  }

  @Test(expected = PropertyConstraintException.class)
  public void setConnectorId_null_throwsPropertyConstraintException() {
    StatusNotificationRequest sut = new StatusNotificationRequest();

    sut.setConnectorId(null);
  }

  @Test
  public void validate_nothingIsSet_returnsFalse() {
    boolean expected = false;
    StatusNotificationRequest sut = new StatusNotificationRequest();

    boolean result = sut.validate();

    Assert.assertEquals(expected, result);
  }

  @Test
  public void validate_dataIsSet_returnsTrue() {
    boolean expected = true;

    StatusNotificationRequest sut = new StatusNotificationRequest();
    sut.setTimestamp(ZonedDateTime.now());
    sut.setConnectorStatus(ConnectorStatusEnumType.Available);