/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.integration.viewer.status.impl; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertNotNull; import static org.testng.AssertJUnit.assertNull; import static org.testng.AssertJUnit.fail; import java.util.List; import java.util.Map; import java.util.Set; import org.apache.commons.lang.StringUtils; import org.testng.annotations.Test; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import com.opengamma.engine.target.ComputationTargetType; import com.opengamma.integration.viewer.status.ViewStatus; import com.opengamma.integration.viewer.status.ViewStatusKey; import com.opengamma.integration.viewer.status.ViewStatusModel; import com.opengamma.util.money.Currency; import com.opengamma.util.test.TestGroup; /** * Tests {@link SimpleViewStatusModel} */ @Test(groups = TestGroup.UNIT) public class SimpleViewStatusModelTest { private static final ViewStatus NO_VALUE = ViewStatus.NO_VALUE; private static final ViewStatus VALUE = ViewStatus.VALUE; private static final String SWAP = "SWAP"; private static final String SWAPTION = "SWAPTION"; private static final String PV = "PV"; private static final String YIELD_CURVE = "YIELD_CURVE"; private static final String VALUERHO = "VALUERHO"; private static final String CREDIT_SPREAD_CURVE = "CREDIT_SPREAD_CURVE"; private static final String HAZARD_RATE_CURVE = "HAZARD_RATE_CURVE"; private static final String SEC_TYPE = ViewStatusResultAggregatorImpl.SECURITY_HEADER; private static final String VALUE_NAME = ViewStatusResultAggregatorImpl.VALUE_REQUIREMENT_NAME_HEADER; private static final String CURRENCY = ViewStatusResultAggregatorImpl.CURRENCY_HEADER; private static final String EMPTY_STR = StringUtils.EMPTY; private static final String VALUE_STR = VALUE.name(); private static final String NO_VALUE_STR = NO_VALUE.name(); private static final String USD = Currency.USD.getCode(); private static final String GBP = Currency.GBP.getCode(); private static final String EUR = Currency.EUR.getCode(); private static final String POSITION_TARGET = ComputationTargetType.POSITION.getName(); private static final List<List<String>> HEADERS = Lists.newArrayListWithCapacity(2); static { HEADERS.add(Lists.newArrayList(SEC_TYPE, VALUE_NAME, CURRENCY, EMPTY_STR)); HEADERS.add(Lists.newArrayList(EMPTY_STR, EMPTY_STR, USD, GBP)); } private static final List<List<Object>> ROWS = Lists.newArrayListWithCapacity(5); static { ROWS.add(makeRowList(SWAP, PV, VALUE_STR, VALUE_STR)); ROWS.add(makeRowList(EMPTY_STR, YIELD_CURVE, NO_VALUE_STR, VALUE_STR)); ROWS.add(makeRowList(EMPTY_STR, VALUERHO, VALUE_STR, VALUE_STR)); ROWS.add(makeRowList(SWAPTION, CREDIT_SPREAD_CURVE, VALUE_STR, NO_VALUE_STR)); ROWS.add(makeRowList(EMPTY_STR, HAZARD_RATE_CURVE, NO_VALUE_STR, NO_VALUE_STR)); } private static final Map<ViewStatusKey, ViewStatus> RESULT = Maps.newHashMap(); static { RESULT.put(new ViewStatusKeyBean(SWAP, PV, USD, POSITION_TARGET), VALUE); RESULT.put(new ViewStatusKeyBean(SWAP, PV, GBP, POSITION_TARGET), VALUE); RESULT.put(new ViewStatusKeyBean(SWAP, YIELD_CURVE, USD, POSITION_TARGET), NO_VALUE); RESULT.put(new ViewStatusKeyBean(SWAP, YIELD_CURVE, GBP, POSITION_TARGET), VALUE); RESULT.put(new ViewStatusKeyBean(SWAP, VALUERHO, USD, POSITION_TARGET), VALUE); RESULT.put(new ViewStatusKeyBean(SWAP, VALUERHO, GBP, POSITION_TARGET), VALUE); RESULT.put(new ViewStatusKeyBean(SWAPTION, CREDIT_SPREAD_CURVE, USD, POSITION_TARGET), VALUE); RESULT.put(new ViewStatusKeyBean(SWAPTION, CREDIT_SPREAD_CURVE, GBP, POSITION_TARGET), NO_VALUE); RESULT.put(new ViewStatusKeyBean(SWAPTION, HAZARD_RATE_CURVE, USD, POSITION_TARGET), NO_VALUE); RESULT.put(new ViewStatusKeyBean(SWAPTION, HAZARD_RATE_CURVE, GBP, POSITION_TARGET), NO_VALUE); } private ViewStatusModel _viewStatusModel = new SimpleViewStatusModel(HEADERS, ROWS, RESULT); public void getColumnNameAt() { assertEquals(SEC_TYPE, _viewStatusModel.getColumnNameAt(0, 0)); assertEquals(VALUE_NAME, _viewStatusModel.getColumnNameAt(0, 1)); assertEquals(CURRENCY, _viewStatusModel.getColumnNameAt(0, 2)); assertEquals(EMPTY_STR, _viewStatusModel.getColumnNameAt(0, 3)); assertEquals(EMPTY_STR, _viewStatusModel.getColumnNameAt(1, 0)); assertEquals(EMPTY_STR, _viewStatusModel.getColumnNameAt(1, 1)); assertEquals(Currency.USD.getCode(), _viewStatusModel.getColumnNameAt(1, 2)); assertEquals(Currency.GBP.getCode(), _viewStatusModel.getColumnNameAt(1, 3)); } private static List<Object> makeRowList(String... colums) { List<Object> row = Lists.newArrayListWithCapacity(4); for (Object column : colums) { row.add(column); } return row; } @Test(expectedExceptions = IllegalArgumentException.class) public void getColumnNameAtWithNegativeRowIndex() { _viewStatusModel.getColumnNameAt(-1, 0); } @Test(expectedExceptions = IllegalArgumentException.class) public void getColumnNameAtWithOutOfRangeRowIndex() { _viewStatusModel.getColumnNameAt(2, 0); } @Test(expectedExceptions = IllegalArgumentException.class) public void getColumnNameAtWithNegativeColumnIndex() { _viewStatusModel.getColumnNameAt(0, -1); } @Test(expectedExceptions = IllegalArgumentException.class) public void getColumnNameAtWithOutOfRangeColumnIndex() { _viewStatusModel.getColumnNameAt(0, 4); } public void getHeaderRowCount() { assertEquals(2, _viewStatusModel.getHeaderRowCount()); } public void getRowValueAt() { assertEquals(SWAP, _viewStatusModel.getRowValueAt(0, 0)); assertEquals(PV, _viewStatusModel.getRowValueAt(0, 1)); assertEquals(VALUE_STR, _viewStatusModel.getRowValueAt(0, 2)); assertEquals(VALUE_STR, _viewStatusModel.getRowValueAt(0, 3)); assertEquals(EMPTY_STR, _viewStatusModel.getRowValueAt(1, 0)); assertEquals(YIELD_CURVE, _viewStatusModel.getRowValueAt(1, 1)); assertEquals(NO_VALUE_STR, _viewStatusModel.getRowValueAt(1, 2)); assertEquals(VALUE_STR, _viewStatusModel.getRowValueAt(1, 3)); } @Test(expectedExceptions = IllegalArgumentException.class) public void getRowValueAtWithNegativeRowIndex() { _viewStatusModel.getRowValueAt(-1, 0); } @Test(expectedExceptions = IllegalArgumentException.class) public void getRowValueAtWithOutOfRangeRowIndex() { _viewStatusModel.getRowValueAt(5, 0); } @Test(expectedExceptions = IllegalArgumentException.class) public void getRowValueAtWithNegativeColumnIndex() { _viewStatusModel.getRowValueAt(0, -1); } @Test(expectedExceptions = IllegalArgumentException.class) public void getRowValueAtWithOutOfRangeColumnIndex() { _viewStatusModel.getRowValueAt(0, 4); } @Test(expectedExceptions = IllegalArgumentException.class) public void nullColumnHeadersNotAllowed() { new SimpleViewStatusModel(null, ROWS, RESULT); } @Test(expectedExceptions = IllegalArgumentException.class) public void nullRowsNotAllowed() { new SimpleViewStatusModel(HEADERS, null, RESULT); } @Test(expectedExceptions = IllegalArgumentException.class) public void nullResultNotAllowed() { new SimpleViewStatusModel(HEADERS, ROWS, null); } public void getStatusWithNullKey() { assertNull(_viewStatusModel.getStatus(null)); } public void getStatusByKey() { assertEquals(VALUE, _viewStatusModel.getStatus(new ViewStatusKeyBean(SWAP, PV, USD, POSITION_TARGET))); assertEquals(VALUE, _viewStatusModel.getStatus(new ViewStatusKeyBean(SWAP, PV, GBP, POSITION_TARGET))); assertEquals(NO_VALUE, _viewStatusModel.getStatus(new ViewStatusKeyBean(SWAP, YIELD_CURVE, USD, POSITION_TARGET))); assertEquals(VALUE, _viewStatusModel.getStatus(new ViewStatusKeyBean(SWAP, YIELD_CURVE, GBP, POSITION_TARGET))); assertEquals(VALUE, _viewStatusModel.getStatus(new ViewStatusKeyBean(SWAP, VALUERHO, USD, POSITION_TARGET))); assertEquals(VALUE, _viewStatusModel.getStatus(new ViewStatusKeyBean(SWAP, VALUERHO, GBP, POSITION_TARGET))); assertEquals(VALUE, _viewStatusModel.getStatus(new ViewStatusKeyBean(SWAPTION, CREDIT_SPREAD_CURVE, USD, POSITION_TARGET))); assertEquals(NO_VALUE, _viewStatusModel.getStatus(new ViewStatusKeyBean(SWAPTION, CREDIT_SPREAD_CURVE, GBP, POSITION_TARGET))); assertEquals(NO_VALUE, _viewStatusModel.getStatus(new ViewStatusKeyBean(SWAPTION, HAZARD_RATE_CURVE, USD, POSITION_TARGET))); assertEquals(NO_VALUE, _viewStatusModel.getStatus(new ViewStatusKeyBean(SWAPTION, HAZARD_RATE_CURVE, GBP, POSITION_TARGET))); } public void getMissingStatusByKey() { assertNull(_viewStatusModel.getStatus(new ViewStatusKeyBean(SWAP, PV, EUR, POSITION_TARGET))); } public void getValueRequirementNames() { assertEquals(Sets.newHashSet(PV, YIELD_CURVE, VALUERHO, CREDIT_SPREAD_CURVE, HAZARD_RATE_CURVE), _viewStatusModel.getValueRequirementNames()); } public void getCurrencies() { assertEquals(Sets.newHashSet(USD, GBP), _viewStatusModel.getCurrencies()); } public void getSecurityTypes() { assertEquals(Sets.newHashSet(SWAP, SWAPTION), _viewStatusModel.getSecurityTypes()); } public void getComputationTargetTypes() { assertEquals(Sets.newHashSet(POSITION_TARGET), _viewStatusModel.getComputationTargetTypes()); } public void getRowCount() { assertEquals(5, _viewStatusModel.getRowCount()); } public void getColumnCount() { assertEquals(4, _viewStatusModel.getColumnCount()); } public void getKeySet() { Set<ViewStatusKey> keySet = _viewStatusModel.keySet(); assertNotNull(keySet); assertEquals(RESULT.size(), keySet.size()); for (ViewStatusKey viewStatusKey : keySet) { if (RESULT.get(viewStatusKey) == null) { fail(); } } } }