/** * Copyright (C) 2016 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.report.framework.expression; import static com.opengamma.strata.basics.currency.Currency.USD; import static com.opengamma.strata.collect.CollectProjectAssertions.assertThat; import static org.assertj.core.api.Assertions.assertThat; import java.util.Set; import org.testng.annotations.Test; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.opengamma.strata.basics.currency.CurrencyAmount; import com.opengamma.strata.calc.runner.CalculationFunctions; import com.opengamma.strata.measure.StandardComponents; import com.opengamma.strata.product.GenericSecurity; import com.opengamma.strata.product.Security; import com.opengamma.strata.product.SecurityId; import com.opengamma.strata.product.SecurityInfo; /** * Test {@link SecurityTokenEvaluator}. */ @Test public class SecurityTokenEvaluatorTest { private static final CalculationFunctions FUNCTIONS = StandardComponents.calculationFunctions(); private static final SecurityId ID = SecurityId.of("OG-Test", "1"); public void tokens() { SecurityTokenEvaluator evaluator = new SecurityTokenEvaluator(); Set<String> tokens = evaluator.tokens(security()); Set<String> expected = ImmutableSet.of( "id", "info", "currency", "priceInfo", "contractSize", "tickSize", "tickValue", "attributes"); assertThat(tokens).isEqualTo(expected); } public void evaluate() { SecurityTokenEvaluator evaluator = new SecurityTokenEvaluator(); Security sec = security(); EvaluationResult quantity = evaluator.evaluate(sec, FUNCTIONS, "id", ImmutableList.of()); assertThat(quantity.getResult()).hasValue(ID); EvaluationResult initialPrice = evaluator.evaluate(sec, FUNCTIONS, "currency", ImmutableList.of()); assertThat(initialPrice.getResult()).hasValue(USD); // Check that property name isn't case sensitive EvaluationResult initialPrice2 = evaluator.evaluate(sec, FUNCTIONS, "Currency", ImmutableList.of()); assertThat(initialPrice2.getResult()).hasValue(USD); // Unknown property EvaluationResult foo = evaluator.evaluate(sec, FUNCTIONS, "foo", ImmutableList.of()); assertThat(foo.getResult()).isFailure(); } private static Security security() { SecurityInfo info = SecurityInfo.of(ID, 20, CurrencyAmount.of(USD, 10)); return GenericSecurity.of(info); } }