/** * Copyright (C) 2015 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.report.trade; import static org.assertj.core.api.Assertions.assertThat; import java.time.Instant; import java.time.LocalDate; import java.time.ZoneOffset; import java.util.List; import org.testng.annotations.Test; import com.google.common.collect.ArrayTable; import com.google.common.collect.ImmutableList; import com.opengamma.strata.collect.result.FailureReason; import com.opengamma.strata.collect.result.Result; /** * Test {@link TradeReportFormatter}. */ @Test public class TradeReportFormatterTest { private static final ImmutableList<Integer> INDICES = ImmutableList.of(0, 1); public void getColumnTypes() { ArrayTable<Integer, Integer, Result<?>> table = ArrayTable.create(INDICES, INDICES); table.put(0, 0, Result.success(1)); table.put(0, 1, Result.success("abc")); table.put(1, 0, Result.success(2)); table.put(1, 1, Result.success("def")); List<Class<?>> columnTypes = TradeReportFormatter.INSTANCE.getColumnTypes(report(table)); assertThat(columnTypes).isEqualTo(ImmutableList.of(Integer.class, String.class)); } public void getColumnTypesWithSomeFailures() { ImmutableList<Integer> indices = ImmutableList.of(0, 1); ArrayTable<Integer, Integer, Result<?>> table = ArrayTable.create(indices, indices); table.put(0, 0, Result.failure(FailureReason.ERROR, "fail")); table.put(0, 1, Result.failure(FailureReason.ERROR, "fail")); table.put(1, 0, Result.success(2)); table.put(1, 1, Result.success("def")); List<Class<?>> columnTypes = TradeReportFormatter.INSTANCE.getColumnTypes(report(table)); assertThat(columnTypes).isEqualTo(ImmutableList.of(Integer.class, String.class)); } public void getColumnTypesWithAllFailures() { ImmutableList<Integer> indices = ImmutableList.of(0, 1); ArrayTable<Integer, Integer, Result<?>> table = ArrayTable.create(indices, indices); table.put(0, 0, Result.failure(FailureReason.ERROR, "fail")); table.put(0, 1, Result.failure(FailureReason.ERROR, "fail")); table.put(1, 0, Result.failure(FailureReason.ERROR, "fail")); table.put(1, 1, Result.failure(FailureReason.ERROR, "fail")); List<Class<?>> columnTypes = TradeReportFormatter.INSTANCE.getColumnTypes(report(table)); assertThat(columnTypes).isEqualTo(ImmutableList.of(Object.class, Object.class)); } private TradeReport report(ArrayTable<Integer, Integer, Result<?>> table) { return TradeReport.builder() .columns( TradeReportColumn.builder().header("col0").build(), TradeReportColumn.builder().header("col1").build()) .data(table) .valuationDate(LocalDate.now(ZoneOffset.UTC)) .runInstant(Instant.now()) .build(); } }