Friday, April 19, 2024
HomeJavaTips on how to design Commerce Place Calculator or Threat Engine in...

Tips on how to design Commerce Place Calculator or Threat Engine in Java? Software program Design Drawback Answer Instance


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;
    }
}



RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments