import org.junit.Ignore; import java.util.Iterator; import java.util.Checklist; import java.util.ArrayList; import org.junit.Take a look at; import static org.junit.Assert.; public class PositionManagerTest { public PositionManagerTest() { } @Ignore public void testGetRealTimePosition() { assertEquals(1, 1); } @Take a look at public void testGetPositionForAccountAndSecurity() { PositionManager pMgr = new PositionManager(); Checklist<Commerce> tradeStream = createTrades(); Iterator<Commerce> itr = tradeStream.iterator(); whereas(itr.hasNext()) { pMgr.course of(itr.subsequent()); itr.take away(); } assertEquals(200, pMgr.getPositionForAccountAndSecurity("ACC-101", "MSFT")); assertEquals(150, pMgr.getPositionForAccountAndSecurity("ACC-102", "INFY")); assertEquals(250, pMgr.getPositionForAccountAndSecurity("ACC-103", "REP")); assertEquals(150, pMgr.getPositionForAccountAndSecurity("ACC-104", "HKJ")); assertEquals(200, pMgr.getPositionForAccountAndSecurity("ACC-105", "FVE")); assertEquals(50, pMgr.getPositionForAccountAndSecurity("ACC-105", "AMZ")); assertEquals(150, pMgr.getPositionForAccountAndSecurity("ACC-106", "ABC")); assertEquals(-50, pMgr.getPositionForAccountAndSecurity("ACC-107", "META")); assertEquals(200, pMgr.getPositionForAccountAndSecurity("ACC-108", "OLA")); assertEquals(200, pMgr.getPositionForAccountAndSecurity("ACC-109", "BCD")); assertEquals(-200,pMgr.getPositionForAccountAndSecurity("ACC-110", "BCD")); assertEquals(100, pMgr.getPositionForAccountAndSecurity("ACC-111", "EFG")); assertEquals(0, pMgr.getPositionForAccountAndSecurity("ACC-112", "BES")); assertEquals(0, pMgr.getPositionForAccountAndSecurity("ACC-113", "KBC")); //validate the entire variety of trades //validate right account comprise right trades } personal Checklist<Commerce> createTrades(){ Checklist<Commerce> trades = new ArrayList<Commerce>(); //easy increment trades.add(new Commerce(5001,"ACC-101", 1, "MSFT", 100, Path.BUY, Operation.NEW)); trades.add(new Commerce(5002,"ACC-101", 1, "MSFT", 100, Path.BUY, Operation.NEW)); //easy increment for one more safety trades.add(new Commerce(5003,"ACC-102", 1, "INFY", 50, Path.BUY, Operation.NEW)); trades.add(new Commerce(5004,"ACC-102", 1, "INFY", 100, Path.BUY, Operation.NEW)); //easy NEW - AMEND - NEW (amount) trades.add(new Commerce(5005,"ACC-103", 1, "REP", 100, Path.BUY, Operation.NEW)); trades.add(new Commerce(5005,"ACC-103", 2, "REP", 50, Path.BUY, Operation.AMEND)); trades.add(new Commerce(5006,"ACC-103", 1, "REP", 200, Path.BUY, Operation.NEW)); //simpel BUY SELL BUY State of affairs trades.add(new Commerce(5007, "ACC-104", 1, "HKJ", 100, Path.BUY, Operation.NEW)); trades.add(new Commerce(5008, "ACC-104", 1, "HKJ", 50, Path.SELL, Operation.NEW)); trades.add(new Commerce(5009, "ACC-104", 1, "HKJ", 100, Path.BUY, Operation.NEW)); //safety modification state of affairs trades.add(new Commerce(5010, "ACC-105", 1, "FVE", 100, Path.BUY, Operation.NEW)); trades.add(new Commerce(5010, "ACC-105", 2, "AMZ", 50, Path.BUY, Operation.AMEND)); trades.add(new Commerce(5011, "ACC-105", 1, "FVE", 200, Path.BUY, Operation.NEW)); //path modification state of affairs trades.add(new Commerce(5012, "ACC-106", 1, "ABC", 100, Path.BUY, Operation.NEW)); trades.add(new Commerce(5012, "ACC-106", 2, "ABC", 50, Path.SELL, Operation.AMEND)); trades.add(new Commerce(5014, "ACC-106", 1, "ABC", 200, Path.BUY, Operation.NEW)); //safety + path modification state of affairs trades.add(new Commerce(5015, "ACC-107", 1, "OLA", 100, Path.BUY, Operation.NEW)); trades.add(new Commerce(5015, "ACC-107", 2, "META", 50, Path.SELL, Operation.AMEND)); trades.add(new Commerce(5016, "ACC-108", 1, "OLA", 200, Path.BUY, Operation.NEW)); trades.add(new Commerce(5016, "ACC-108", 2, "META", 50, Path.BUY, Operation.AMEND)); trades.add(new Commerce(5016, "ACC-108", 3, "OLA", 200, Path.BUY, Operation.AMEND)); //identical safety - one accoutn sale different purchase trades.add(new Commerce(5017, "ACC-109", 1, "BCD", 200, Path.BUY, Operation.NEW)); trades.add(new Commerce(5018, "ACC-110", 2, "BCD", 200, Path.SELL, Operation.NEW)); //identical safety - a number of amendments on amount trades.add(new Commerce(5019, "ACC-111", 1, "EFG", 50, Path.BUY, Operation.NEW)); trades.add(new Commerce(5019, "ACC-111", 2, "EFG", 200, Path.BUY, Operation.AMEND)); trades.add(new Commerce(5019, "ACC-111", 3, "EFG", 250, Path.BUY, Operation.AMEND)); trades.add(new Commerce(5019, "ACC-111", 4, "EFG", 100, Path.BUY, Operation.AMEND)); //Similar Safety - NEW MOD CANCEL take a look at trades.add(new Commerce(5020, "ACC-112", 1, "BES", 50, Path.BUY, Operation.NEW)); trades.add(new Commerce(5020, "ACC-112", 2, "BES", 200,
Path.BUY, Operation.AMEND)); trades.add(new Commerce(5020, "ACC-112", 3, "BES", 200,
Path.BUY, Operation.CANCEL)); //outofsequence commerce occasions trades.add(new Commerce(5019, "ACC-113", 1, "KBC", 100,
Path.BUY, Operation.NEW)); trades.add(new Commerce(5019, "ACC-113", 2, "KBC", 150,
Path.BUY, Operation.AMEND)); trades.add(new Commerce(5019, "ACC-113", 4, "KBC", 150,
Path.BUY, Operation.CANCEL)); trades.add(new Commerce(5019, "ACC-113", 3, "KBC", 250,
Path.BUY, Operation.AMEND)); return trades; } }