Skip to content

Commit

Permalink
Increase unit test coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
WojciechZankowski committed May 23, 2018
1 parent 64d9682 commit ec34e51
Show file tree
Hide file tree
Showing 14 changed files with 305 additions and 48 deletions.
20 changes: 20 additions & 0 deletions iextrading4j-hist-deep/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,28 @@
<artifactId>iextrading4j-hist-api</artifactId>
</dependency>

<dependency>
<groupId>pl.zankowski</groupId>
<artifactId>iextrading4j-hist-api</artifactId>
<type>test-jar</type>
<scope>test</scope>
</dependency>

<dependency>
<groupId>pl.zankowski</groupId>
<artifactId>iextrading4j-api</artifactId>
<type>test-jar</type>
<scope>test</scope>
</dependency>

<!-- Tests -->

<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,24 @@
package pl.zankowski.iextrading4j.hist.deep.administrative.field;

public enum IEXSecurityEvent {
import pl.zankowski.iextrading4j.hist.api.IEXByteEnum;

import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;

import static pl.zankowski.iextrading4j.hist.api.util.IEXByteEnumLookupUtil.lookup;

public enum IEXSecurityEvent implements IEXByteEnum {

OPENING_PROCESS_COMPLETE((byte) 0x4f),
CLOSING_PROCESS_COMPLETE((byte) 0x43),
UNKNOWN((byte) 0x11);
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;

Expand All @@ -13,14 +27,10 @@ public enum IEXSecurityEvent {
}

public static IEXSecurityEvent getSecurityEvent(final byte code) {
for (IEXSecurityEvent iexSecurityEvent : values()) {
if (iexSecurityEvent.getCode() == code) {
return iexSecurityEvent;
}
}
return IEXSecurityEvent.UNKNOWN;
return lookup(IEXSecurityEvent.class, LOOKUP, code);
}

@Override
public byte getCode() {
return code;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,28 +1,38 @@
package pl.zankowski.iextrading4j.hist.deep.trading.field;

public enum IEXEventFlag {
import pl.zankowski.iextrading4j.hist.api.IEXByteEnum;

import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;

import static pl.zankowski.iextrading4j.hist.api.util.IEXByteEnumLookupUtil.lookup;

public enum IEXEventFlag implements IEXByteEnum {

ORDER_BOOK_IS_PROCESSING_EVENT((byte) 0x0),
EVENT_PROCESSING_COMPLETE((byte) 0x1),
UNKNOWN((byte) 0x11);
EVENT_PROCESSING_COMPLETE((byte) 0x1);

private static final Map<Byte, IEXEventFlag> LOOKUP = new HashMap<>();

static {
for (final IEXEventFlag value : EnumSet.allOf(IEXEventFlag.class))
LOOKUP.put(value.getCode(), value);
}

private final byte code;

IEXEventFlag(byte code) {
IEXEventFlag(final byte code) {
this.code = code;
}

@Override
public byte getCode() {
return code;
}

public static IEXEventFlag getEventFlag(final byte code) {
for (IEXEventFlag iexEventFlag : values()) {
if (iexEventFlag.getCode() == code) {
return iexEventFlag;
}
}
return IEXEventFlag.UNKNOWN;
return lookup(IEXEventFlag.class, LOOKUP, code);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,44 @@

import nl.jqno.equalsverifier.EqualsVerifier;
import org.junit.Test;
import pl.zankowski.iextrading4j.api.util.ToStringVerifier;
import pl.zankowski.iextrading4j.hist.api.IEXMessageType;
import pl.zankowski.iextrading4j.hist.api.util.IEXByteTestUtil;
import pl.zankowski.iextrading4j.hist.deep.administrative.field.IEXSecurityEvent;

import static org.assertj.core.api.Assertions.assertThat;
import static pl.zankowski.iextrading4j.hist.deep.administrative.builder.IEXSecurityEventMessageDataBuilder.defaultSecurityEventMessage;

public class IEXSecurityEventMessageTest {

@Test
public void constructor() {
final IEXSecurityEvent securityEvent = IEXSecurityEvent.OPENING_PROCESS_COMPLETE;
final long timestamp = 1494855059287436131L;
final String symbol = "SNAP";

final byte[] bytes = IEXByteTestUtil.prepareBytes(18, IEXMessageType.SECURITY_EVENT, securityEvent,
timestamp, symbol);
final IEXSecurityEventMessage message = IEXSecurityEventMessage.createIEXMessage(bytes);

assertThat(message.getMessageType()).isEqualTo(IEXMessageType.SECURITY_EVENT);
assertThat(message.getSecurityEvent()).isEqualTo(securityEvent);
assertThat(message.getTimestamp()).isEqualTo(timestamp);
assertThat(message.getSymbol()).isEqualTo(symbol);
assertThat(message.getSymbol()).isEqualTo(symbol);
}

@Test
public void equalsContract() {
EqualsVerifier.forClass(IEXSecurityEventMessage.class)
.usingGetClass()
.verify();
}

@Test
public void toStringVerification() {
ToStringVerifier.forObject(defaultSecurityEventMessage())
.verify();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package pl.zankowski.iextrading4j.hist.deep.administrative.builder;

import pl.zankowski.iextrading4j.hist.api.IEXMessageType;
import pl.zankowski.iextrading4j.hist.api.message.builder.TestDataBuilder;
import pl.zankowski.iextrading4j.hist.api.util.IEXByteTestUtil;
import pl.zankowski.iextrading4j.hist.deep.administrative.IEXSecurityEventMessage;
import pl.zankowski.iextrading4j.hist.deep.administrative.field.IEXSecurityEvent;

public class IEXSecurityEventMessageDataBuilder implements TestDataBuilder {

private IEXSecurityEvent securityEvent = IEXSecurityEvent.OPENING_PROCESS_COMPLETE;
private long timestamp = 1494855059287436131L;
private String symbol = "SNAP";

public static IEXSecurityEventMessage defaultSecurityEventMessage() {
return securityEventMessage().build();
}

public static IEXSecurityEventMessageDataBuilder securityEventMessage() {
return new IEXSecurityEventMessageDataBuilder();
}

@Override
public byte[] getBytes() {
return IEXByteTestUtil.prepareBytes(18, IEXMessageType.SECURITY_EVENT, securityEvent,
timestamp, symbol);
}

public IEXSecurityEventMessage build() {
return IEXSecurityEventMessage.createIEXMessage(getBytes());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package pl.zankowski.iextrading4j.hist.deep.administrative.field;

import org.junit.Test;

import static org.assertj.core.api.Assertions.assertThat;

public class IEXSecurityEventTest {

@Test
public void shouldSuccessfullyFindEnumBasedOnCode() {
final IEXSecurityEvent value = IEXSecurityEvent.CLOSING_PROCESS_COMPLETE;

final IEXSecurityEvent result = IEXSecurityEvent.getSecurityEvent(value.getCode());

assertThat(result).isEqualTo(value);
}

@Test(expected = IllegalArgumentException.class)
public void shouldThrowAnExceptionForUnknownCode() {
IEXSecurityEvent.getSecurityEvent((byte) 0x11);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,49 @@

import nl.jqno.equalsverifier.EqualsVerifier;
import org.junit.Test;
import pl.zankowski.iextrading4j.hist.deep.administrative.IEXSecurityEventMessage;
import pl.zankowski.iextrading4j.api.util.ToStringVerifier;
import pl.zankowski.iextrading4j.hist.api.IEXMessageType;
import pl.zankowski.iextrading4j.hist.api.field.IEXPrice;
import pl.zankowski.iextrading4j.hist.api.util.IEXByteTestUtil;
import pl.zankowski.iextrading4j.hist.deep.trading.field.IEXEventFlag;

import static org.assertj.core.api.Assertions.assertThat;
import static pl.zankowski.iextrading4j.hist.deep.trading.builder.IEXPriceLevelUpdateMessageDataBuilder.defaultPriceLevelMessage;

public class IEXPriceLevelUpdateMessageTest {

@Test
public void constructor() {
final IEXMessageType messageType = IEXMessageType.PRICE_LEVEL_UPDATE_BUY;
final IEXEventFlag eventFlag = IEXEventFlag.EVENT_PROCESSING_COMPLETE;
final long timestamp = 1494855059287436131L;
final String symbol = "SNAP";
final int size = 12;
final IEXPrice price = new IEXPrice(1234L);

final byte[] bytes = IEXByteTestUtil.prepareBytes(30, messageType, eventFlag, timestamp, symbol,
size, price);
final IEXPriceLevelUpdateMessage message = IEXPriceLevelUpdateMessage.createIEXMessage(messageType, bytes);

assertThat(message.getMessageType()).isEqualTo(messageType);
assertThat(message.getEventFlag()).isEqualTo(eventFlag);
assertThat(message.getTimestamp()).isEqualTo(timestamp);
assertThat(message.getSymbol()).isEqualTo(symbol);
assertThat(message.getSize()).isEqualTo(size);
assertThat(message.getPrice()).isEqualTo(price);
}

@Test
public void equalsContract() {
EqualsVerifier.forClass(IEXPriceLevelUpdateMessage.class)
.usingGetClass()
.verify();
}

@Test
public void toStringVerification() {
ToStringVerifier.forObject(defaultPriceLevelMessage())
.verify();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package pl.zankowski.iextrading4j.hist.deep.trading.builder;

import pl.zankowski.iextrading4j.hist.api.IEXMessageType;
import pl.zankowski.iextrading4j.hist.api.field.IEXPrice;
import pl.zankowski.iextrading4j.hist.api.message.builder.TestDataBuilder;
import pl.zankowski.iextrading4j.hist.api.util.IEXByteTestUtil;
import pl.zankowski.iextrading4j.hist.deep.trading.IEXPriceLevelUpdateMessage;
import pl.zankowski.iextrading4j.hist.deep.trading.field.IEXEventFlag;

public class IEXPriceLevelUpdateMessageDataBuilder implements TestDataBuilder {

private IEXMessageType messageType = IEXMessageType.PRICE_LEVEL_UPDATE_BUY;
private IEXEventFlag eventFlag = IEXEventFlag.EVENT_PROCESSING_COMPLETE;
private long timestamp = 1494855059287436131L;
private String symbol = "SNAP";
private int size = 12;
private IEXPrice price = new IEXPrice(1234L);

public static IEXPriceLevelUpdateMessage defaultPriceLevelMessage() {
return priceLevelMessage().build();
}

public static IEXPriceLevelUpdateMessageDataBuilder priceLevelMessage() {
return new IEXPriceLevelUpdateMessageDataBuilder();
}

@Override
public byte[] getBytes() {
return IEXByteTestUtil.prepareBytes(30, messageType, eventFlag, timestamp, symbol,
size, price);
}

public IEXPriceLevelUpdateMessage build() {
return IEXPriceLevelUpdateMessage.createIEXMessage(messageType, getBytes());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package pl.zankowski.iextrading4j.hist.deep.trading.field;

import org.junit.Test;

import static org.assertj.core.api.Assertions.assertThat;

public class IEXEventFlagTest {

@Test
public void shouldSuccessfullyFindEnumBasedOnCode() {
final IEXEventFlag value = IEXEventFlag.ORDER_BOOK_IS_PROCESSING_EVENT;

final IEXEventFlag result = IEXEventFlag.getEventFlag(value.getCode());

assertThat(result).isEqualTo(value);
}

@Test(expected = IllegalArgumentException.class)
public void shouldThrowAnExceptionForUnknownCode() {
IEXEventFlag.getEventFlag((byte) 0x11);
}

}
7 changes: 7 additions & 0 deletions iextrading4j-hist-tops/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,13 @@
<scope>test</scope>
</dependency>

<dependency>
<groupId>pl.zankowski</groupId>
<artifactId>iextrading4j-api</artifactId>
<type>test-jar</type>
<scope>test</scope>
</dependency>

<!-- Tests -->

<dependency>
Expand Down
Loading

0 comments on commit ec34e51

Please sign in to comment.