public virtual void tokens()
        {
            SecurityTokenEvaluator evaluator = new SecurityTokenEvaluator();
            ISet <string>          tokens    = evaluator.tokens(security());
            ISet <string>          expected  = ImmutableSet.of("id", "info", "currency", "priceInfo", "contractSize", "tickSize", "tickValue", "attributes");

            assertThat(tokens).isEqualTo(expected);
        }
        public virtual void evaluate()
        {
            SecurityTokenEvaluator evaluator = new SecurityTokenEvaluator();
            Security sec = security();

            EvaluationResult quantity = evaluator.evaluate(sec, FUNCTIONS, "id", ImmutableList.of());

            assertThat(quantity.Result).hasValue(ID);

            EvaluationResult initialPrice = evaluator.evaluate(sec, FUNCTIONS, "currency", ImmutableList.of());

            assertThat(initialPrice.Result).hasValue(USD);

            // Check that property name isn't case sensitive
            EvaluationResult initialPrice2 = evaluator.evaluate(sec, FUNCTIONS, "Currency", ImmutableList.of());

            assertThat(initialPrice2.Result).hasValue(USD);

            // Unknown property
            EvaluationResult foo = evaluator.evaluate(sec, FUNCTIONS, "foo", ImmutableList.of());

            assertThat(foo.Result).Failure;
        }