public virtual void tokens()
        {
            CurrencyParameterSensitivity sensitivity1 = CurrencyParameterSensitivity.of(CurveName.of("curve1"), Currency.AUD, DoubleArray.EMPTY);

            CurrencyParameterSensitivity sensitivity2 = CurrencyParameterSensitivity.of(CurveName.of("curve2"), Currency.CHF, DoubleArray.EMPTY);

            CurrencyParameterSensitivities sensitivities = CurrencyParameterSensitivities.of(sensitivity1, sensitivity2);

            ISet <string> expected = ImmutableSet.of("curve1", "curve2", "aud", "chf");
            CurrencyParameterSensitivitiesTokenEvaluator evaluator = new CurrencyParameterSensitivitiesTokenEvaluator();

            assertThat(evaluator.tokens(sensitivities)).isEqualTo(expected);
        }
        public virtual void evaluate()
        {
            CurrencyParameterSensitivity sensitivity1 = CurrencyParameterSensitivity.of(CurveName.of("curve1"), Currency.AUD, DoubleArray.EMPTY);

            CurrencyParameterSensitivity sensitivity2 = CurrencyParameterSensitivity.of(CurveName.of("curve2"), Currency.CHF, DoubleArray.EMPTY);

            CurrencyParameterSensitivity sensitivity3 = CurrencyParameterSensitivity.of(CurveName.of("curve2"), Currency.AUD, DoubleArray.EMPTY);

            CurrencyParameterSensitivities sensitivities = CurrencyParameterSensitivities.of(sensitivity1, sensitivity2, sensitivity3);

            CurrencyParameterSensitivitiesTokenEvaluator evaluator = new CurrencyParameterSensitivitiesTokenEvaluator();

            CurrencyParameterSensitivities expected1 = CurrencyParameterSensitivities.of(sensitivity1, sensitivity3);
            EvaluationResult result1 = evaluator.evaluate(sensitivities, FUNCTIONS, "aud", ImmutableList.of());

            assertThat(result1.Result).Success;
            CurrencyParameterSensitivities result1Value = (CurrencyParameterSensitivities)result1.Result.Value;

            assertThat(result1Value.Sensitivities).containsAll(expected1.Sensitivities);

            CurrencyParameterSensitivities expected2 = CurrencyParameterSensitivities.of(sensitivity2, sensitivity3);
            EvaluationResult result2 = evaluator.evaluate(sensitivities, FUNCTIONS, "curve2", ImmutableList.of());

            assertThat(result2.Result).Success;
            CurrencyParameterSensitivities result2Value = (CurrencyParameterSensitivities)result2.Result.Value;

            assertThat(result2Value.Sensitivities).containsAll(expected2.Sensitivities);

            EvaluationResult result3 = evaluator.evaluate(sensitivities, FUNCTIONS, "chf", ImmutableList.of());

            assertThat(result3.Result).hasValue(sensitivity2);

            EvaluationResult result4 = evaluator.evaluate(sensitivities, FUNCTIONS, "usd", ImmutableList.of());

            assertThat(result4.Result).Failure;
        }