//-------------------------------------------------------------------------
        public virtual void test_of_single()
        {
            BondFutureOptionMarketDataLookup test = BondFutureOptionMarketDataLookup.of(SEC_OG1, VOL_ID1);

            assertEquals(test.queryType(), typeof(BondFutureOptionMarketDataLookup));
            assertEquals(test.VolatilitySecurityIds, ImmutableSet.of(SEC_OG1));
            assertEquals(test.getVolatilityIds(SEC_OG1), ImmutableSet.of(VOL_ID1));
            assertThrowsIllegalArg(() => test.getVolatilityIds(SEC_OG2));

            assertEquals(test.requirements(SEC_OG1), FunctionRequirements.builder().valueRequirements(VOL_ID1).build());
            assertEquals(test.requirements(ImmutableSet.of(SEC_OG1)), FunctionRequirements.builder().valueRequirements(VOL_ID1).build());
            assertThrowsIllegalArg(() => test.requirements(ImmutableSet.of(SEC_OG3)));
        }
        //-------------------------------------------------------------------------
        public virtual void test_marketDataView()
        {
            BondFutureOptionMarketDataLookup test = BondFutureOptionMarketDataLookup.of(SEC_OG1, VOL_ID1);
            LocalDate          valDate            = date(2015, 6, 30);
            ScenarioMarketData md = new TestMarketDataMap(valDate, ImmutableMap.of(), ImmutableMap.of());
            BondFutureOptionScenarioMarketData multiScenario = test.marketDataView(md);

            assertEquals(multiScenario.Lookup, test);
            assertEquals(multiScenario.MarketData, md);
            assertEquals(multiScenario.ScenarioCount, 1);
            BondFutureOptionMarketData scenario = multiScenario.scenario(0);

            assertEquals(scenario.Lookup, test);
            assertEquals(scenario.MarketData, md.scenario(0));
            assertEquals(scenario.ValuationDate, valDate);
        }
        public virtual void test_of_map()
        {
            ImmutableMap <SecurityId, BondFutureVolatilitiesId> ids = ImmutableMap.of(SEC_OG1, VOL_ID1, SEC_OG2, VOL_ID1);
            BondFutureOptionMarketDataLookup test = BondFutureOptionMarketDataLookup.of(ids);

            assertEquals(test.queryType(), typeof(BondFutureOptionMarketDataLookup));
            assertEquals(test.VolatilitySecurityIds, ImmutableSet.of(SEC_OG1, SEC_OG2));
            assertEquals(test.getVolatilityIds(SEC_OG1), ImmutableSet.of(VOL_ID1));
            assertThrowsIllegalArg(() => test.getVolatilityIds(SEC_OG3));

            assertEquals(test.requirements(SEC_OG1), FunctionRequirements.builder().valueRequirements(VOL_ID1).build());
            assertEquals(test.requirements(ImmutableSet.of(SEC_OG1)), FunctionRequirements.builder().valueRequirements(VOL_ID1).build());
            assertThrowsIllegalArg(() => test.requirements(ImmutableSet.of(SEC_OG3)));

            assertEquals(test.volatilities(SEC_OG1, MOCK_MARKET_DATA), MOCK_VOLS);
            assertThrowsIllegalArg(() => test.volatilities(SEC_OG3, MOCK_MARKET_DATA));
        }