// Path: iextrading4j-hist-api/src/main/java/pl/zankowski/iextrading4j/hist/api/IEXMessageType.java
// public enum IEXMessageType implements IEXByteEnum {
// 
//     QUOTE_UPDATE((byte) 0x51),
//     TRADE_REPORT((byte) 0x54),
//     TRADE_BREAK((byte) 0x42),
//     SYSTEM_EVENT((byte) 0x53),
//     SECURITY_DIRECTORY((byte) 0x44),
//     TRADING_STATUS((byte) 0x48),
//     OPERATIONAL_HALT_STATUS((byte) 0x4f),
//     SHORT_SALE_PRICE_TEST_STATUS((byte) 0x50),
//     SECURITY_EVENT((byte) 0x45),
//     PRICE_LEVEL_UPDATE_BUY((byte) 0x38),
//     PRICE_LEVEL_UPDATE_SELL((byte) 0x35),
//     OFFICIAL_PRICE_MESSAGE((byte) 0x58),
//     AUCTION_INFORMATION((byte) 0x41),
//     RETAIL_LIQUIDITY_INDICATOR((byte) 0x49);
// 
//     private static final Map<Byte, IEXMessageType> LOOKUP = new HashMap<>();
// 
//     static {
//         for (final IEXMessageType value : EnumSet.allOf(IEXMessageType.class))
//             LOOKUP.put(value.getCode(), value);
//     }
// 
//     private final byte code;
// 
//     IEXMessageType(final byte code) {
//         this.code = code;
//     }
// 
//     public static IEXMessageType getMessageType(final byte code) {
//         return lookup(IEXMessageType.class, LOOKUP, code);
//     }
// 
//     @Override
//     public byte getCode() {
//         return code;
//     }
// 
// }
// 
// Path: iextrading4j-hist-deep/src/main/java/pl/zankowski/iextrading4j/hist/deep/administrative/IEXSecurityEventMessage.java
// public class IEXSecurityEventMessage extends IEXMessage {
// 
//     public static final int LENGTH = 18;
// 
//     private final IEXSecurityEvent securityEvent;
//     private final long timestamp;
//     private final String symbol;
// 
//     private IEXSecurityEventMessage(
//             final IEXSecurityEvent securityEvent,
//             final long timestamp,
//             final String symbol) {
//         super(SECURITY_EVENT);
//         this.securityEvent = securityEvent;
//         this.timestamp = timestamp;
//         this.symbol = symbol;
//     }
// 
//     public static IEXSecurityEventMessage createIEXMessage(final byte[] bytes) {
//         final IEXSecurityEvent iexSecurityEvent = IEXSecurityEvent.getSecurityEvent(bytes[1]);
//         final long timestamp = IEXByteConverter.convertBytesToLong(Arrays.copyOfRange(bytes, 2, 10));
//         final String symbol = IEXByteConverter.convertBytesToString(Arrays.copyOfRange(bytes, 10, 18));
// 
//         return new IEXSecurityEventMessage(iexSecurityEvent, timestamp, symbol);
//     }
// 
//     public IEXSecurityEvent getSecurityEvent() {
//         return securityEvent;
//     }
// 
//     public long getTimestamp() {
//         return timestamp;
//     }
// 
//     public String getSymbol() {
//         return symbol;
//     }
// 
//     @Override
//     public boolean equals(final Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
//         if (!super.equals(o)) return false;
//         final IEXSecurityEventMessage that = (IEXSecurityEventMessage) o;
//         return timestamp == that.timestamp &&
//                 securityEvent == that.securityEvent &&
//                 Objects.equals(symbol, that.symbol);
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hash(super.hashCode(), securityEvent, timestamp, symbol);
//     }
// 
//     @Override
//     public String toString() {
//         return "IEXSecurityEventMessage{" +
//                 "securityEvent=" + securityEvent +
//                 ", timestamp=" + timestamp +
//                 ", symbol='" + symbol + '\'' +
//                 "} " + super.toString();
//     }
// }
// 
// Path: iextrading4j-hist-deep/src/main/java/pl/zankowski/iextrading4j/hist/deep/administrative/field/IEXSecurityEvent.java
// public enum IEXSecurityEvent implements IEXByteEnum {
// 
//     OPENING_PROCESS_COMPLETE((byte) 0x4f),
//     CLOSING_PROCESS_COMPLETE((byte) 0x43);
// 
//     private static final Map<Byte, IEXSecurityEvent> LOOKUP = new HashMap<>();
// 
//     static {
//         for (final IEXSecurityEvent value : EnumSet.allOf(IEXSecurityEvent.class))
//             LOOKUP.put(value.getCode(), value);
//     }
// 
//     private final byte code;
// 
//     IEXSecurityEvent(byte code) {
//         this.code = code;
//     }
// 
//     public static IEXSecurityEvent getSecurityEvent(final byte code) {
//         return lookup(IEXSecurityEvent.class, LOOKUP, code);
//     }
// 
//     @Override
//     public byte getCode() {
//         return code;
//     }
// 
// }
// 
// Path: iextrading4j-hist-test/src/test/java/pl/zankowski/iextrading4j/hist/test/ExtendedUnitTestBase.java
// public abstract class ExtendedUnitTestBase {
// 
//     protected byte[] loadPacket(final String fileName) throws IOException {
//         return ByteStreams.toByteArray(ExtendedUnitTestBase.class.getClassLoader().getResourceAsStream(fileName));
//     }
// 
// }


import org.junit.jupiter.api.Test;
import pl.zankowski.iextrading4j.hist.api.IEXMessageType;
import pl.zankowski.iextrading4j.hist.deep.administrative.IEXSecurityEventMessage;
import pl.zankowski.iextrading4j.hist.deep.administrative.field.IEXSecurityEvent;
import pl.zankowski.iextrading4j.hist.test.ExtendedUnitTestBase;
import java.io.IOException;
import static org.assertj.core.api.Assertions.assertThat;
package pl.zankowski.iextrading4j.hist.test.message;




class IEXSecurityEventMessageTest extends ExtendedUnitTestBase {

    @Test
    void testSecurityEventMessage() throws IOException {
        final byte[] bytes = loadPacket("IEXSecurityEventMessage.dump");

// Path: iextrading4j-hist-api/src/main/java/pl/zankowski/iextrading4j/hist/api/IEXMessageType.java
// public enum IEXMessageType implements IEXByteEnum {
// 
//     QUOTE_UPDATE((byte) 0x51),
//     TRADE_REPORT((byte) 0x54),
//     TRADE_BREAK((byte) 0x42),
//     SYSTEM_EVENT((byte) 0x53),
//     SECURITY_DIRECTORY((byte) 0x44),
//     TRADING_STATUS((byte) 0x48),
//     OPERATIONAL_HALT_STATUS((byte) 0x4f),
//     SHORT_SALE_PRICE_TEST_STATUS((byte) 0x50),
//     SECURITY_EVENT((byte) 0x45),
//     PRICE_LEVEL_UPDATE_BUY((byte) 0x38),
//     PRICE_LEVEL_UPDATE_SELL((byte) 0x35),
//     OFFICIAL_PRICE_MESSAGE((byte) 0x58),
//     AUCTION_INFORMATION((byte) 0x41),
//     RETAIL_LIQUIDITY_INDICATOR((byte) 0x49);
// 
//     private static final Map<Byte, IEXMessageType> LOOKUP = new HashMap<>();
// 
//     static {
//         for (final IEXMessageType value : EnumSet.allOf(IEXMessageType.class))
//             LOOKUP.put(value.getCode(), value);
//     }
// 
//     private final byte code;
// 
//     IEXMessageType(final byte code) {
//         this.code = code;
//     }
// 
//     public static IEXMessageType getMessageType(final byte code) {
//         return lookup(IEXMessageType.class, LOOKUP, code);
//     }
// 
//     @Override
//     public byte getCode() {
//         return code;
//     }
// 
// }
// 
// Path: iextrading4j-hist-deep/src/main/java/pl/zankowski/iextrading4j/hist/deep/administrative/IEXSecurityEventMessage.java
// public class IEXSecurityEventMessage extends IEXMessage {
// 
//     public static final int LENGTH = 18;
// 
//     private final IEXSecurityEvent securityEvent;
//     private final long timestamp;
//     private final String symbol;
// 
//     private IEXSecurityEventMessage(
//             final IEXSecurityEvent securityEvent,
//             final long timestamp,
//             final String symbol) {
//         super(SECURITY_EVENT);
//         this.securityEvent = securityEvent;
//         this.timestamp = timestamp;
//         this.symbol = symbol;
//     }
// 
//     public static IEXSecurityEventMessage createIEXMessage(final byte[] bytes) {
//         final IEXSecurityEvent iexSecurityEvent = IEXSecurityEvent.getSecurityEvent(bytes[1]);
//         final long timestamp = IEXByteConverter.convertBytesToLong(Arrays.copyOfRange(bytes, 2, 10));
//         final String symbol = IEXByteConverter.convertBytesToString(Arrays.copyOfRange(bytes, 10, 18));
// 
//         return new IEXSecurityEventMessage(iexSecurityEvent, timestamp, symbol);
//     }
// 
//     public IEXSecurityEvent getSecurityEvent() {
//         return securityEvent;
//     }
// 
//     public long getTimestamp() {
//         return timestamp;
//     }
// 
//     public String getSymbol() {
//         return symbol;
//     }
// 
//     @Override
//     public boolean equals(final Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
//         if (!super.equals(o)) return false;
//         final IEXSecurityEventMessage that = (IEXSecurityEventMessage) o;
//         return timestamp == that.timestamp &&
//                 securityEvent == that.securityEvent &&
//                 Objects.equals(symbol, that.symbol);
//     }
// 
//     @Override
//     public int hashCode() {
//         return Objects.hash(super.hashCode(), securityEvent, timestamp, symbol);
//     }
// 
//     @Override
//     public String toString() {
//         return "IEXSecurityEventMessage{" +
//                 "securityEvent=" + securityEvent +
//                 ", timestamp=" + timestamp +
//                 ", symbol='" + symbol + '\'' +
//                 "} " + super.toString();
//     }
// }
// 
// Path: iextrading4j-hist-deep/src/main/java/pl/zankowski/iextrading4j/hist/deep/administrative/field/IEXSecurityEvent.java
// public enum IEXSecurityEvent implements IEXByteEnum {
// 
//     OPENING_PROCESS_COMPLETE((byte) 0x4f),
//     CLOSING_PROCESS_COMPLETE((byte) 0x43);
// 
//     private static final Map<Byte, IEXSecurityEvent> LOOKUP = new HashMap<>();
// 
//     static {
//         for (final IEXSecurityEvent value : EnumSet.allOf(IEXSecurityEvent.class))
//             LOOKUP.put(value.getCode(), value);
//     }
// 
//     private final byte code;
// 
//     IEXSecurityEvent(byte code) {
//         this.code = code;
//     }
// 
//     public static IEXSecurityEvent getSecurityEvent(final byte code) {
//         return lookup(IEXSecurityEvent.class, LOOKUP, code);
//     }
// 
//     @Override
//     public byte getCode() {
//         return code;
//     }
// 
// }
// 
// Path: iextrading4j-hist-test/src/test/java/pl/zankowski/iextrading4j/hist/test/ExtendedUnitTestBase.java
// public abstract class ExtendedUnitTestBase {
// 
//     protected byte[] loadPacket(final String fileName) throws IOException {
//         return ByteStreams.toByteArray(ExtendedUnitTestBase.class.getClassLoader().getResourceAsStream(fileName));
//     }
// 
// }


// Path: iextrading4j-hist-test/src/test/java/pl/zankowski/iextrading4j/hist/test/message/IEXSecurityEventMessageTest.java
import org.junit.jupiter.api.Test;
import pl.zankowski.iextrading4j.hist.api.IEXMessageType;
import pl.zankowski.iextrading4j.hist.deep.administrative.IEXSecurityEventMessage;
import pl.zankowski.iextrading4j.hist.deep.administrative.field.IEXSecurityEvent;
import pl.zankowski.iextrading4j.hist.test.ExtendedUnitTestBase;
import java.io.IOException;
import static org.assertj.core.api.Assertions.assertThat;

package pl.zankowski.iextrading4j.hist.test.message;




class IEXSecurityEventMessageTest extends ExtendedUnitTestBase {

    @Test
    void testSecurityEventMessage() throws IOException {
        final byte[] bytes = loadPacket("IEXSecurityEventMessage.dump");

        final IEXSecurityEventMessage message = IEXSecurityEventMessage.createIEXMessage(bytes);