// Path: iextrading4j-hist-api/src/test/java/pl/zankowski/iextrading4j/hist/api/util/IEXByteTestUtil.java
// public class IEXByteTestUtil {
// 
//     static byte[] convert(final long value) {
//         final ByteBuffer buffer = ByteBuffer.allocate(8);
//         buffer.order(ByteOrder.LITTLE_ENDIAN);
//         buffer.putLong(value);
//         return buffer.array();
//     }
// 
//     public static byte[] convert(final short value) {
//         final ByteBuffer buffer = ByteBuffer.allocate(2);
//         buffer.order(ByteOrder.LITTLE_ENDIAN);
//         buffer.putShort(value);
//         return buffer.array();
//     }
// 
//     static byte[] convert(final int value) {
//         final ByteBuffer buffer = ByteBuffer.allocate(4);
//         buffer.order(ByteOrder.LITTLE_ENDIAN);
//         buffer.putInt(value);
//         return buffer.array();
//     }
// 
//     static byte[] convert(final String value) {
//         return convert(value, 8);
//     }
// 
//     public static byte[] convert(final String value, final int capacity) {
//         final ByteBuffer buffer = ByteBuffer.allocate(capacity);
//         buffer.order(ByteOrder.LITTLE_ENDIAN);
//         buffer.put(value.getBytes());
//         return buffer.array();
//     }
// 
//     public static byte[] convertUnsignedShort(final int value) {
//         final ByteBuffer buffer = ByteBuffer.allocate(2);
//         buffer.order(ByteOrder.LITTLE_ENDIAN);
//         buffer.putShort((short) value);
//         return buffer.array();
//     }
// 
//     public static byte[] prepareBytes(final int capacity, final Object... objects) {
//         final ByteBuffer byteBuffer = ByteBuffer.allocate(capacity);
//         byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
//         for (final Object object : objects) {
//             if (object instanceof Long) {
//                 byteBuffer.put(convert((Long) object));
//             } else if (object instanceof Short) {
//                 byteBuffer.put(convert((Short) object));
//             } else if (object instanceof Integer) {
//                 byteBuffer.put(convert((Integer) object));
//             } else if (object instanceof String) {
//                 byteBuffer.put(convert((String) object));
//             } else if (object instanceof IEXByteEnum) {
//                 byteBuffer.put(((IEXByteEnum) object).getCode());
//             } else if (object instanceof IEXPrice) {
//                 byteBuffer.put(convert(((IEXPrice) object).getNumber()));
//             } else if (object instanceof byte[]) {
//                 byteBuffer.put((byte[]) object);
//             } else {
//                 byteBuffer.put((Byte) object);
//             }
//         }
//         return byteBuffer.array();
//     }
// 
// 
// }
// 
// Path: iextrading4j-hist-api/src/test/java/pl/zankowski/iextrading4j/hist/api/message/builder/IEXMessageHeaderDataBuilder.java
// public static IEXMessageHeader defaultMessageHeader() {
//     return messageHeader().build();
// }


import org.junit.jupiter.api.Test;
import pl.zankowski.iextrading4j.hist.api.util.IEXByteTestUtil;
import static org.assertj.core.api.Assertions.assertThat;
import static pl.zankowski.iextrading4j.hist.api.message.builder.IEXMessageHeaderDataBuilder.defaultMessageHeader;
package pl.zankowski.iextrading4j.hist.api.message;



class IEXMessageHeaderTest {

    @Test
    void shouldSuccessfullyCreateMessageHeader() {
        final byte version = 1;
        final byte reserved = 1;
        final IEXMessageProtocol messageProtocolId = IEXMessageProtocol.TOPS_1_5;
        final int channelID = 1;
        final int sessionID = 1133838336;
        final short payloadLength = 44;
        final short messageCount = 1;
        final long streamOffset = 5076984;
        final long firstMessageSequenceNumber = 115387;
        final long sendTime = 1494855059287436131L;

// Path: iextrading4j-hist-api/src/test/java/pl/zankowski/iextrading4j/hist/api/util/IEXByteTestUtil.java
// public class IEXByteTestUtil {
// 
//     static byte[] convert(final long value) {
//         final ByteBuffer buffer = ByteBuffer.allocate(8);
//         buffer.order(ByteOrder.LITTLE_ENDIAN);
//         buffer.putLong(value);
//         return buffer.array();
//     }
// 
//     public static byte[] convert(final short value) {
//         final ByteBuffer buffer = ByteBuffer.allocate(2);
//         buffer.order(ByteOrder.LITTLE_ENDIAN);
//         buffer.putShort(value);
//         return buffer.array();
//     }
// 
//     static byte[] convert(final int value) {
//         final ByteBuffer buffer = ByteBuffer.allocate(4);
//         buffer.order(ByteOrder.LITTLE_ENDIAN);
//         buffer.putInt(value);
//         return buffer.array();
//     }
// 
//     static byte[] convert(final String value) {
//         return convert(value, 8);
//     }
// 
//     public static byte[] convert(final String value, final int capacity) {
//         final ByteBuffer buffer = ByteBuffer.allocate(capacity);
//         buffer.order(ByteOrder.LITTLE_ENDIAN);
//         buffer.put(value.getBytes());
//         return buffer.array();
//     }
// 
//     public static byte[] convertUnsignedShort(final int value) {
//         final ByteBuffer buffer = ByteBuffer.allocate(2);
//         buffer.order(ByteOrder.LITTLE_ENDIAN);
//         buffer.putShort((short) value);
//         return buffer.array();
//     }
// 
//     public static byte[] prepareBytes(final int capacity, final Object... objects) {
//         final ByteBuffer byteBuffer = ByteBuffer.allocate(capacity);
//         byteBuffer.order(ByteOrder.LITTLE_ENDIAN);
//         for (final Object object : objects) {
//             if (object instanceof Long) {
//                 byteBuffer.put(convert((Long) object));
//             } else if (object instanceof Short) {
//                 byteBuffer.put(convert((Short) object));
//             } else if (object instanceof Integer) {
//                 byteBuffer.put(convert((Integer) object));
//             } else if (object instanceof String) {
//                 byteBuffer.put(convert((String) object));
//             } else if (object instanceof IEXByteEnum) {
//                 byteBuffer.put(((IEXByteEnum) object).getCode());
//             } else if (object instanceof IEXPrice) {
//                 byteBuffer.put(convert(((IEXPrice) object).getNumber()));
//             } else if (object instanceof byte[]) {
//                 byteBuffer.put((byte[]) object);
//             } else {
//                 byteBuffer.put((Byte) object);
//             }
//         }
//         return byteBuffer.array();
//     }
// 
// 
// }
// 
// Path: iextrading4j-hist-api/src/test/java/pl/zankowski/iextrading4j/hist/api/message/builder/IEXMessageHeaderDataBuilder.java
// public static IEXMessageHeader defaultMessageHeader() {
//     return messageHeader().build();
// }


// Path: iextrading4j-hist-api/src/test/java/pl/zankowski/iextrading4j/hist/api/message/IEXMessageHeaderTest.java
import org.junit.jupiter.api.Test;
import pl.zankowski.iextrading4j.hist.api.util.IEXByteTestUtil;
import static org.assertj.core.api.Assertions.assertThat;
import static pl.zankowski.iextrading4j.hist.api.message.builder.IEXMessageHeaderDataBuilder.defaultMessageHeader;

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



class IEXMessageHeaderTest {

    @Test
    void shouldSuccessfullyCreateMessageHeader() {
        final byte version = 1;
        final byte reserved = 1;
        final IEXMessageProtocol messageProtocolId = IEXMessageProtocol.TOPS_1_5;
        final int channelID = 1;
        final int sessionID = 1133838336;
        final short payloadLength = 44;
        final short messageCount = 1;
        final long streamOffset = 5076984;
        final long firstMessageSequenceNumber = 115387;
        final long sendTime = 1494855059287436131L;

        final byte[] messageProtocolBytes = IEXByteTestUtil.convertUnsignedShort(messageProtocolId.getCode());