public void test_load_invalidNoQuantity() { EtdContractSpecId specId = EtdContractSpecId.of("OG-ETD", "F-ECAG-FGBL"); EtdContractSpec contract = EtdContractSpec.builder() .id(specId) .type(EtdType.FUTURE) .exchangeId(ExchangeIds.ECAG) .contractCode(FGBL) .description("Dummy") .priceInfo(SecurityPriceInfo.of(Currency.GBP, 100)) .build(); ReferenceData refData = ImmutableReferenceData.of(specId, contract); PositionCsvLoader test = PositionCsvLoader.of(refData); ValueWithFailures<List<Position>> trades = test.parse( ImmutableList.of(CharSource.wrap("Strata Position Type,Exchange,Contract Code,Expiry\nFUT,ECAG,FGBL,2017-06"))); assertEquals(trades.getFailures().size(), 1); FailureItem failure = trades.getFailures().get(0); assertEquals(failure.getReason(), FailureReason.PARSING); assertEquals(failure.getMessage(), "CSV file position could not be parsed at line 2: " + "Security must contain a quantity column, either 'Quantity' or 'Long Quantity' and 'Short Quantity'"); }
static EtdContractSpec sut2() { return EtdContractSpec.builder() .type(EtdType.OPTION) .exchangeId(ExchangeIds.IFEN) .contractCode(EtdContractCode.of("BAR")) .description("A test option template") .priceInfo(SecurityPriceInfo.of(Currency.EUR, 10)) .addAttribute(AttributeType.NAME, "NAME") .build(); }
static EtdContractSpec sut() { return EtdContractSpec.builder() .id(EtdContractSpecId.of("test", "123")) .type(EtdType.FUTURE) .exchangeId(ExchangeIds.ECAG) .contractCode(EtdContractCode.of("FOO")) .description("A test future template") .priceInfo(SecurityPriceInfo.of(Currency.GBP, 100)) .build(); }
.exchangeId(ExchangeIds.ECAG) .contractCode(OGBL) .description("Dummy") .priceInfo(SecurityPriceInfo.of(Currency.GBP, 100)) .build();
.exchangeId(ExchangeIds.ECAG) .contractCode(FGBL) .description("Dummy") .priceInfo(SecurityPriceInfo.of(Currency.GBP, 100)) .build();