/** * Copyright (C) 2015 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.examples; import static com.opengamma.strata.collect.TestHelper.caputureSystemOut; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertTrue; import java.io.File; import java.io.FileInputStream; import org.joda.beans.ser.JodaBeanSer; import org.testng.annotations.Test; import com.opengamma.strata.examples.CdsPricingExample; import com.opengamma.strata.examples.DsfPricingExample; import com.opengamma.strata.examples.FraPricingExample; import com.opengamma.strata.examples.FxPricingExample; import com.opengamma.strata.examples.GenericSecurityPricingExample; import com.opengamma.strata.examples.StirFuturePricingExample; import com.opengamma.strata.examples.SwapPricingExample; import com.opengamma.strata.examples.TermDepositPricingExample; import com.opengamma.strata.examples.finance.CalibrationCheckExample; import com.opengamma.strata.examples.finance.CalibrationEur3CheckExample; import com.opengamma.strata.examples.finance.CalibrationSimpleForwardCheckExample; import com.opengamma.strata.examples.finance.CalibrationUsdCpiExample; import com.opengamma.strata.examples.finance.CalibrationUsdFfsExample; import com.opengamma.strata.examples.finance.CalibrationXCcyCheckExample; import com.opengamma.strata.examples.finance.CdsScenarioExample; import com.opengamma.strata.examples.finance.CdsTradeExample; import com.opengamma.strata.examples.finance.CurveScenarioExample; import com.opengamma.strata.examples.finance.HistoricalScenarioExample; import com.opengamma.strata.examples.finance.SabrSwaptionCubeCalibrationExample; import com.opengamma.strata.examples.finance.SabrSwaptionCubePvRiskExample; import com.opengamma.strata.examples.finance.SwapPricingCcpExample; import com.opengamma.strata.examples.finance.SwapPricingWithCalibrationExample; import com.opengamma.strata.examples.finance.SwapTradeExample; import com.opengamma.strata.examples.report.ReportRunnerTool; import com.opengamma.strata.examples.report.TradeList; /** * Test examples do not throw exceptions. */ @Test public class ExamplesTest { private static final String[] NO_ARGS = new String[0]; //------------------------------------------------------------------------- public void test_cdsPricing_standalone() { assertValidCapturedAsciiTable(caputureSystemOut(() -> CdsPricingExample.main(NO_ARGS))); } public void test_cdsPricing_tool() { assertValidCapturedAsciiTable(caputureSystemOut(() -> ReportRunnerTool.main(toolArgs("cds")))); } //------------------------------------------------------------------------- public void test_dsfPricing_standalone() { assertValidCapturedAsciiTable(caputureSystemOut(() -> DsfPricingExample.main(NO_ARGS))); } public void test_dsfPricing_tool() { assertValidCapturedAsciiTable(caputureSystemOut(() -> ReportRunnerTool.main(toolArgs("dsf")))); } //------------------------------------------------------------------------- public void test_fraPricing_standalone() { assertValidCapturedAsciiTable(caputureSystemOut(() -> FraPricingExample.main(NO_ARGS))); } public void test_fraPricing_tool() { assertValidCapturedAsciiTable(caputureSystemOut(() -> ReportRunnerTool.main(toolArgs("fra")))); } //------------------------------------------------------------------------- public void test_fxPricing_standalone() { assertValidCapturedAsciiTable(caputureSystemOut(() -> FxPricingExample.main(NO_ARGS))); } public void test_fxPricing_tool() { assertValidCapturedAsciiTable(caputureSystemOut(() -> ReportRunnerTool.main(toolArgs("fx")))); } //------------------------------------------------------------------------- public void test_genericSecurityPricing_standalone() { assertValidCapturedAsciiTable(caputureSystemOut(() -> GenericSecurityPricingExample.main(NO_ARGS))); } public void test_genericSecurityPricing_tool() { assertValidCapturedAsciiTable(caputureSystemOut(() -> ReportRunnerTool.main(toolArgs("security")))); } //------------------------------------------------------------------------- public void test_iborFuturePricing_standalone() { assertValidCapturedAsciiTable(caputureSystemOut(() -> StirFuturePricingExample.main(NO_ARGS))); } public void test_iborFuturePricing_tool() { assertValidCapturedAsciiTable(caputureSystemOut(() -> ReportRunnerTool.main(toolArgs("stir-future")))); } //------------------------------------------------------------------------- public void test_swapPricing_standalone() { assertValidCapturedAsciiTable(caputureSystemOut(() -> SwapPricingExample.main(NO_ARGS))); } public void test_swapPricing_tool() { assertValidCapturedAsciiTable(caputureSystemOut(() -> ReportRunnerTool.main(toolArgs("swap")))); } //------------------------------------------------------------------------- public void test_swapPricingCcp_standalone() { assertValidCapturedAsciiTable(caputureSystemOut(() -> SwapPricingCcpExample.main(NO_ARGS))); } //------------------------------------------------------------------------- public void test_swapPricingWithCalibration_standalone() { assertValidCapturedAsciiTable(caputureSystemOut(() -> SwapPricingWithCalibrationExample.main(NO_ARGS))); } //------------------------------------------------------------------------- public void test_termDepositPricing_standalone() { assertValidCapturedAsciiTable(caputureSystemOut(() -> TermDepositPricingExample.main(NO_ARGS))); } public void test_termDepositPricing_tool() { assertValidCapturedAsciiTable(caputureSystemOut(() -> ReportRunnerTool.main(toolArgs("term-deposit")))); } //------------------------------------------------------------------------- public void test_curveScenario() { String captured = caputureSystemOut(() -> CurveScenarioExample.main(NO_ARGS)); assertTrue(captured.contains("PV01")); assertValidCaptured(captured); } //------------------------------------------------------------------------- public void test_historicalScenario() { String captured = caputureSystemOut(() -> HistoricalScenarioExample.main(NO_ARGS)); assertTrue(captured.contains("Base PV")); assertValidCaptured(captured); } //------------------------------------------------------------------------- public void test_cdsTrade() { String captured = caputureSystemOut(() -> CdsTradeExample.main(NO_ARGS)); assertTrue(captured.contains("<product>")); assertValidCaptured(captured); } //------------------------------------------------------------------------- public void test_swapTrade() { String captured = caputureSystemOut(() -> SwapTradeExample.main(NO_ARGS)); assertTrue(captured.contains("<product>")); assertValidCaptured(captured); } //------------------------------------------------------------------------- public void test_portfolios() throws Exception { File baseDir = new File("src/main/resources/example-portfolios"); assertTrue(baseDir.exists()); for (File file : baseDir.listFiles(f -> f.getName().endsWith(".xml"))) { try (FileInputStream in = new FileInputStream(file)) { TradeList tradeList = JodaBeanSer.COMPACT.xmlReader().read(in, TradeList.class); assertTrue(tradeList.getTrades().size() > 0); } } } //------------------------------------------------------------------------- public void test_calibration() throws Exception { String captured = caputureSystemOut(() -> CalibrationCheckExample.main(NO_ARGS)); assertTrue(captured.contains("Checked PV for all instruments used in the calibration set are near to zero")); assertFalse(captured.contains("ERROR")); assertFalse(captured.contains("Exception")); } public void test_calibration_xccy() throws Exception { String captured = caputureSystemOut(() -> CalibrationXCcyCheckExample.main(NO_ARGS)); assertTrue(captured.contains("Checked PV for all instruments used in the calibration set are near to zero")); assertFalse(captured.contains("ERROR")); assertFalse(captured.contains("Exception")); } public void test_calibration_eur3() throws Exception { String captured = caputureSystemOut(() -> CalibrationEur3CheckExample.main(NO_ARGS)); assertTrue(captured.contains("Checked PV for all instruments used in the calibration set are near to zero")); assertFalse(captured.contains("ERROR")); assertFalse(captured.contains("Exception")); } public void test_calibration_simple_forward() throws Exception { String captured = caputureSystemOut(() -> CalibrationSimpleForwardCheckExample.main(NO_ARGS)); assertTrue(captured.contains("Checked PV for all instruments used in the calibration set are near to zero")); assertFalse(captured.contains("ERROR")); assertFalse(captured.contains("Exception")); } public void test_calibration_usd_ffs() throws Exception { String captured = caputureSystemOut(() -> CalibrationUsdFfsExample.main(NO_ARGS)); assertTrue(captured.contains("Checked PV for all instruments used in the calibration set are near to zero")); assertFalse(captured.contains("ERROR")); assertFalse(captured.contains("Exception")); } public void test_calibration_cpi() throws Exception { String captured = caputureSystemOut(() -> CalibrationUsdCpiExample.main(NO_ARGS)); assertTrue(captured.contains("Checked PV for all instruments used in the calibration set are near to zero")); assertFalse(captured.contains("ERROR")); assertFalse(captured.contains("Exception")); } public void test_sabr_swaption_calibration() throws Exception { String captured = caputureSystemOut(() -> SabrSwaptionCubeCalibrationExample.main(NO_ARGS)); assertTrue(captured.contains("End calibration")); assertFalse(captured.contains("ERROR")); assertFalse(captured.contains("Exception")); } public void test_sabr_swaption_calibration_pv_risk() throws Exception { String captured = caputureSystemOut(() -> SabrSwaptionCubePvRiskExample.main(NO_ARGS)); assertTrue(captured.contains("PV and risk time")); assertFalse(captured.contains("ERROR")); assertFalse(captured.contains("Exception")); } public void test_cds_scenario() throws Exception { String captured = caputureSystemOut(() -> CdsScenarioExample.main(NO_ARGS)); assertTrue(captured.contains("95% VaR")); assertFalse(captured.contains("ERROR")); assertFalse(captured.contains("Exception")); } //------------------------------------------------------------------------- private String[] toolArgs(String name) { return new String[] { "-p", "src/main/resources/example-portfolios/" + name + "-portfolio.xml", "-t", "src/main/resources/example-reports/" + name + "-report-template.ini", "-d", "2014-01-22", }; } private void assertValidCapturedAsciiTable(String captured) { assertTrue(captured.contains("+------"), captured); assertValidCaptured(captured); } private void assertValidCaptured(String captured) { assertFalse(captured.contains("ERROR"), captured); assertFalse(captured.contains("FAIL"), captured); assertFalse(captured.contains("Exception"), captured); assertFalse(captured.contains("drill down"), captured); } }