package uk.ac.cam.cstibhotel.otcanalyser.gui;
import uk.ac.cam.cstibhotel.otcanalyser.gui.DataTable;
import uk.ac.cam.cstibhotel.otcanalyser.trade.Action;
import uk.ac.cam.cstibhotel.otcanalyser.trade.AssetClass;
import uk.ac.cam.cstibhotel.otcanalyser.trade.PriceFormingContinuationData;
import uk.ac.cam.cstibhotel.otcanalyser.trade.Trade;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Calendar;
public class DataTableTest {
//tests addRowToStart method
@Test
public void testAddRow() {
DataTable table = new DataTable(new ArrayList<Trade>());
Trade[] trades = new Trade[10];
for (int i = 0; i < trades.length; i++) {
trades[i] = new Trade();
trades[i].setAction(Action.CORRECT);
trades[i].setAdditionalPriceNotation(i + 0.2);
trades[i].setAssetClass(AssetClass.FOREX);
trades[i].setBespoke(true);
trades[i].setBlockTrades(true);
trades[i].setCleared(true);
trades[i].setDayCountConvention("String");
trades[i].setDisseminationID(i);
trades[i].setEffectiveDate(Calendar.getInstance().getTime());
trades[i].setEmbeddedOption("Option");
trades[i].setEndDate(Calendar.getInstance().getTime());
trades[i].setEndUserException(false);
trades[i].setExecutionTimestamp(Calendar.getInstance().getTime());
trades[i].setExecutionVenue(false);
trades[i].setNotionalCurrency1("Currency 1");
trades[i].setNotionalCurrency2("Currency 2");
trades[i].setOptionExpirationDate(Calendar.getInstance().getTime());
trades[i].setOptionFamily("Family");
trades[i].setOptionLockPeriod(Calendar.getInstance().getTime());
trades[i].setOptionPremium(i + 0.5);
trades[i].setOptionStrikePrice(i + 1.0);
trades[i].setOptionType("Type");
trades[i].setOriginalDisseminationID(190);
trades[i].setPaymentFrequency1("Payment Frequency 1");
trades[i].setPaymentFrequency2("Payment Frequency 2");
trades[i].setPriceFormingContinuationData(PriceFormingContinuationData.NOVATION);
trades[i].setPriceNotation(i + 2.5);
trades[i].setPriceNotation2(i - 0.5);
trades[i].setPriceNotation3(i - 0.25);
trades[i].setPriceNotationType("Price Notatino Type");
trades[i].setPriceNotation2Type("Price Notation Type");
trades[i].setPriceNotation3Type("Price Notation Type");
trades[i].setResetFrequency1("Reset Frequency 1");
trades[i].setResetFrequency2("Reset Frequency 2");
trades[i].setRoundedNotionalAmount1(1000);
trades[i].setRoundedNotionalAmount2(130);
trades[i].setUnderlyingAsset1("Underlying Asset 1");
trades[i].setUnderlyingAsset2("Underlying Asset 2");
}
for (Trade t : trades) {
table.addRow(t);
}
for (int i = 0; i < trades.length; i++) {
assertEquals(table.getModel().getValueAt(i, 0), trades[i].getDisseminationID());
assertEquals(table.getModel().getValueAt(i, 1), trades[i].getOriginalDisseminationID());
assertEquals(table.getModel().getValueAt(i, 2), trades[i].getAction());
assertEquals(table.getModel().getValueAt(i, 3), trades[i].getExecutionTimestamp());
assertEquals(table.getModel().getValueAt(i, 4), trades[i].isCleared());
assertEquals(table.getModel().getValueAt(i, 5), trades[i].getCollateralization());
assertEquals(table.getModel().getValueAt(i, 6), trades[i].isEndUserException());
assertEquals(table.getModel().getValueAt(i, 7), trades[i].isBespoke());
assertEquals(table.getModel().getValueAt(i, 8), trades[i].isExecutionVenue());
assertEquals(table.getModel().getValueAt(i, 9), trades[i].isBlockTrades());
assertEquals(table.getModel().getValueAt(i, 10), trades[i].getEffectiveDate());
assertEquals(table.getModel().getValueAt(i, 11), trades[i].getEndDate());
assertEquals(table.getModel().getValueAt(i, 12), trades[i].getDayCountConvention());
assertEquals(table.getModel().getValueAt(i, 13), trades[i].getSettlementCurrency());
assertEquals(table.getModel().getValueAt(i, 14), trades[i].getTradeType());
assertEquals(table.getModel().getValueAt(i, 15), trades[i].getAssetClass());
assertEquals(table.getModel().getValueAt(i, 16), trades[i].getTaxonomy().getSubProduct());
assertEquals(table.getModel().getValueAt(i, 17), trades[i].getTaxonomy());
assertEquals(table.getModel().getValueAt(i, 18), trades[i].getPriceFormingContinuationData());
assertEquals(table.getModel().getValueAt(i, 19), trades[i].getUnderlyingAsset1());
assertEquals(table.getModel().getValueAt(i, 20), trades[i].getUnderlyingAsset2());
assertEquals(table.getModel().getValueAt(i, 21), trades[i].getPriceNotationType());
assertEquals(table.getModel().getValueAt(i, 22), trades[i].getPriceNotation());
assertEquals(table.getModel().getValueAt(i, 23), trades[i].getAdditionalPriceNotationType());
assertEquals(table.getModel().getValueAt(i, 24), trades[i].getAdditionalPriceNotation());
assertEquals(table.getModel().getValueAt(i, 25), trades[i].getNotionalCurrency1());
assertEquals(table.getModel().getValueAt(i, 26), trades[i].getNotionalCurrency2());
assertEquals(table.getModel().getValueAt(i, 27), trades[i].getRoundedNotionalAmount1());
assertEquals(table.getModel().getValueAt(i, 28), trades[i].getRoundedNotionalAmount2());
assertEquals(table.getModel().getValueAt(i, 29), trades[i].getPaymentFrequency1());
assertEquals(table.getModel().getValueAt(i, 30), trades[i].getPaymentFrequency2());
assertEquals(table.getModel().getValueAt(i, 31), trades[i].getResetFrequency1());
assertEquals(table.getModel().getValueAt(i, 32), trades[i].getResetFrequency2());
assertEquals(table.getModel().getValueAt(i, 33), trades[i].getEmbeddedOption());
assertEquals(table.getModel().getValueAt(i, 34), trades[i].getOptionStrikePrice());
assertEquals(table.getModel().getValueAt(i, 35), trades[i].getOptionType());
assertEquals(table.getModel().getValueAt(i, 36), trades[i].getOptionFamily());
assertEquals(table.getModel().getValueAt(i, 37), trades[i].getOptionCurrency());
assertEquals(table.getModel().getValueAt(i, 38), trades[i].getOptionPremium());
assertEquals(table.getModel().getValueAt(i, 39), trades[i].getOptionLockPeriod());
assertEquals(table.getModel().getValueAt(i, 40), trades[i].getOptionExpirationDate());
assertEquals(table.getModel().getValueAt(i, 41), trades[i].getPriceNotation2Type());
assertEquals(table.getModel().getValueAt(i, 42), trades[i].getPriceNotation2());
assertEquals(table.getModel().getValueAt(i, 43), trades[i].getPriceNotation3Type());
assertEquals(table.getModel().getValueAt(i, 44), trades[i].getPriceNotation3());
}
}
//tests addRowToStart method
@Test
public void testAddRowToStart() {
DataTable table = new DataTable(new ArrayList<Trade>());
Trade[] trades = new Trade[10];
for (int i = 0; i < trades.length; i++) {
trades[i] = new Trade();
trades[i].setAction(Action.CORRECT);
trades[i].setAdditionalPriceNotation(i + 0.2);
trades[i].setAssetClass(AssetClass.FOREX);
trades[i].setBespoke(true);
trades[i].setBlockTrades(true);
trades[i].setCleared(true);
trades[i].setDayCountConvention("String");
trades[i].setDisseminationID(i);
trades[i].setEffectiveDate(Calendar.getInstance().getTime());
trades[i].setEmbeddedOption("Option");
trades[i].setEndDate(Calendar.getInstance().getTime());
trades[i].setEndUserException(false);
trades[i].setExecutionTimestamp(Calendar.getInstance().getTime());
trades[i].setExecutionVenue(false);
trades[i].setNotionalCurrency1("Currency 1");
trades[i].setNotionalCurrency2("Currency 2");
trades[i].setOptionExpirationDate(Calendar.getInstance().getTime());
trades[i].setOptionFamily("Family");
trades[i].setOptionLockPeriod(Calendar.getInstance().getTime());
trades[i].setOptionPremium(i + 0.5);
trades[i].setOptionStrikePrice(i + 1.0);
trades[i].setOptionType("Type");
trades[i].setOriginalDisseminationID(190);
trades[i].setPaymentFrequency1("Payment Frequency 1");
trades[i].setPaymentFrequency2("Payment Frequency 2");
trades[i].setPriceFormingContinuationData(PriceFormingContinuationData.NOVATION);
trades[i].setPriceNotation(i + 2.5);
trades[i].setPriceNotation2(i - 0.5);
trades[i].setPriceNotation3(i - 0.25);
trades[i].setPriceNotationType("Price Notatino Type");
trades[i].setPriceNotation2Type("Price Notation Type");
trades[i].setPriceNotation3Type("Price Notation Type");
trades[i].setResetFrequency1("Reset Frequency 1");
trades[i].setResetFrequency2("Reset Frequency 2");
trades[i].setRoundedNotionalAmount1(1000);
trades[i].setRoundedNotionalAmount2(130);
trades[i].setUnderlyingAsset1("Underlying Asset 1");
trades[i].setUnderlyingAsset2("Underlying Asset 2");
}
for (Trade t : trades) {
table.addRowToStart(t);
}
for (int i = 0; i < trades.length; i++) {
int j = trades.length - 1 - i;
assertEquals(table.getModel().getValueAt(j, 0), trades[i].getDisseminationID());
assertEquals(table.getModel().getValueAt(j, 1), trades[i].getOriginalDisseminationID());
assertEquals(table.getModel().getValueAt(j, 2), trades[i].getAction());
assertEquals(table.getModel().getValueAt(j, 3), trades[i].getExecutionTimestamp());
assertEquals(table.getModel().getValueAt(j, 4), trades[i].isCleared());
assertEquals(table.getModel().getValueAt(j, 5), trades[i].getCollateralization());
assertEquals(table.getModel().getValueAt(j, 6), trades[i].isEndUserException());
assertEquals(table.getModel().getValueAt(j, 7), trades[i].isBespoke());
assertEquals(table.getModel().getValueAt(j, 8), trades[i].isExecutionVenue());
assertEquals(table.getModel().getValueAt(j, 9), trades[i].isBlockTrades());
assertEquals(table.getModel().getValueAt(j, 10), trades[i].getEffectiveDate());
assertEquals(table.getModel().getValueAt(j, 11), trades[i].getEndDate());
assertEquals(table.getModel().getValueAt(j, 12), trades[i].getDayCountConvention());
assertEquals(table.getModel().getValueAt(j, 13), trades[i].getSettlementCurrency());
assertEquals(table.getModel().getValueAt(j, 14), trades[i].getTradeType());
assertEquals(table.getModel().getValueAt(j, 15), trades[i].getAssetClass());
assertEquals(table.getModel().getValueAt(j, 16), trades[i].getTaxonomy().getSubProduct());
assertEquals(table.getModel().getValueAt(j, 17), trades[i].getTaxonomy());
assertEquals(table.getModel().getValueAt(j, 18), trades[i].getPriceFormingContinuationData());
assertEquals(table.getModel().getValueAt(j, 19), trades[i].getUnderlyingAsset1());
assertEquals(table.getModel().getValueAt(j, 20), trades[i].getUnderlyingAsset2());
assertEquals(table.getModel().getValueAt(j, 21), trades[i].getPriceNotationType());
assertEquals(table.getModel().getValueAt(j, 22), trades[i].getPriceNotation());
assertEquals(table.getModel().getValueAt(j, 23), trades[i].getAdditionalPriceNotationType());
assertEquals(table.getModel().getValueAt(j, 24), trades[i].getAdditionalPriceNotation());
assertEquals(table.getModel().getValueAt(j, 25), trades[i].getNotionalCurrency1());
assertEquals(table.getModel().getValueAt(j, 26), trades[i].getNotionalCurrency2());
assertEquals(table.getModel().getValueAt(j, 27), trades[i].getRoundedNotionalAmount1());
assertEquals(table.getModel().getValueAt(j, 28), trades[i].getRoundedNotionalAmount2());
assertEquals(table.getModel().getValueAt(j, 29), trades[i].getPaymentFrequency1());
assertEquals(table.getModel().getValueAt(j, 30), trades[i].getPaymentFrequency2());
assertEquals(table.getModel().getValueAt(j, 31), trades[i].getResetFrequency1());
assertEquals(table.getModel().getValueAt(j, 32), trades[i].getResetFrequency2());
assertEquals(table.getModel().getValueAt(j, 33), trades[i].getEmbeddedOption());
assertEquals(table.getModel().getValueAt(j, 34), trades[i].getOptionStrikePrice());
assertEquals(table.getModel().getValueAt(j, 35), trades[i].getOptionType());
assertEquals(table.getModel().getValueAt(j, 36), trades[i].getOptionFamily());
assertEquals(table.getModel().getValueAt(j, 37), trades[i].getOptionCurrency());
assertEquals(table.getModel().getValueAt(j, 38), trades[i].getOptionPremium());
assertEquals(table.getModel().getValueAt(j, 39), trades[i].getOptionLockPeriod());
assertEquals(table.getModel().getValueAt(j, 40), trades[i].getOptionExpirationDate());
assertEquals(table.getModel().getValueAt(j, 41), trades[i].getPriceNotation2Type());
assertEquals(table.getModel().getValueAt(j, 42), trades[i].getPriceNotation2());
assertEquals(table.getModel().getValueAt(j, 43), trades[i].getPriceNotation3Type());
assertEquals(table.getModel().getValueAt(j, 44), trades[i].getPriceNotation3());
}
}
}