//-------------------------------------------------------------------------
        public virtual void test_empty()
        {
            CrossGammaParameterSensitivities test = CrossGammaParameterSensitivities.empty();

            assertEquals(test.size(), 0);
            assertEquals(test.Sensitivities.size(), 0);
        }
        public virtual void test_multipliedBy_vs_combinedWith()
        {
            CrossGammaParameterSensitivities multiplied = SENSI_2.multipliedBy(2d);
            CrossGammaParameterSensitivities added      = SENSI_2.combinedWith(SENSI_2);

            assertEquals(multiplied, added);
        }
        public virtual void test_of_list_none()
        {
            ImmutableList <CrossGammaParameterSensitivity> list = ImmutableList.of();
            CrossGammaParameterSensitivities test = CrossGammaParameterSensitivities.of(list);

            assertEquals(test.size(), 0);
        }
        public virtual void test_of_single()
        {
            CrossGammaParameterSensitivities test = CrossGammaParameterSensitivities.of(ENTRY_USD);

            assertEquals(test.size(), 1);
            assertEquals(test.Sensitivities, ImmutableList.of(ENTRY_USD));
        }
        public virtual void test_of_list_normalized()
        {
            ImmutableList <CrossGammaParameterSensitivity> list = ImmutableList.of(ENTRY_USD, ENTRY_USD2);
            CrossGammaParameterSensitivities test = CrossGammaParameterSensitivities.of(list);

            assertEquals(test.size(), 1);
            assertEquals(test.Sensitivities, ImmutableList.of(ENTRY_USD_TOTAL));
        }
        public virtual void test_findSensitivity()
        {
            CrossGammaParameterSensitivities test = CrossGammaParameterSensitivities.of(ENTRY_USD);

            assertEquals(test.findSensitivity(NAME1, USD), ENTRY_USD);
            assertEquals(test.findSensitivity(NAME1, EUR), null);
            assertEquals(test.findSensitivity(NAME0, USD), null);
            assertEquals(test.findSensitivity(NAME0, EUR), null);
        }
        //-------------------------------------------------------------------------
        public virtual void test_getSensitivity()
        {
            CrossGammaParameterSensitivities test = CrossGammaParameterSensitivities.of(ENTRY_USD);

            assertEquals(test.getSensitivity(NAME1, USD), ENTRY_USD);
            assertThrowsIllegalArg(() => test.getSensitivity(NAME1, EUR));
            assertThrowsIllegalArg(() => test.getSensitivity(NAME0, USD));
            assertThrowsIllegalArg(() => test.getSensitivity(NAME0, EUR));
        }
        public virtual void test_mapSensitivities()
        {
            CrossGammaParameterSensitivities multiplied = SENSI_1.mapSensitivities(a => 1 / a);
            DoubleMatrix test = multiplied.Sensitivities.get(0).Sensitivity;

            for (int i = 0; i < MATRIX_USD1.columnCount(); i++)
            {
                for (int j = 0; j < MATRIX_USD1.rowCount(); j++)
                {
                    assertEquals(test.get(i, j), 1 / MATRIX_USD1.get(i, j));
                }
            }
        }
 //-------------------------------------------------------------------------
 public virtual void coverage()
 {
     coverImmutableBean(CrossGammaParameterSensitivities.empty());
     coverImmutableBean(SENSI_1);
     coverBeanEquals(SENSI_1, SENSI_2);
 }
        //-------------------------------------------------------------------------
        public virtual void test_equalWithTolerance()
        {
            CrossGammaParameterSensitivities sensUsdTotal     = CrossGammaParameterSensitivities.of(ENTRY_USD_TOTAL);
            CrossGammaParameterSensitivities sensEur          = CrossGammaParameterSensitivities.of(ENTRY_EUR);
            CrossGammaParameterSensitivities sens1plus2       = SENSI_1.combinedWith(ENTRY_USD2);
            CrossGammaParameterSensitivities sensZeroA        = CrossGammaParameterSensitivities.of(ENTRY_ZERO3);
            CrossGammaParameterSensitivities sensZeroB        = CrossGammaParameterSensitivities.of(ENTRY_ZERO0);
            CrossGammaParameterSensitivities sens1plus2plus0a = SENSI_1.combinedWith(ENTRY_USD2).combinedWith(ENTRY_ZERO0);
            CrossGammaParameterSensitivities sens1plus2plus0b = SENSI_1.combinedWith(ENTRY_USD2).combinedWith(ENTRY_ZERO3);
            CrossGammaParameterSensitivities sens1plus2plus0  = SENSI_1.combinedWith(ENTRY_USD2).combinedWith(ENTRY_ZERO0).combinedWith(ENTRY_ZERO3);
            CrossGammaParameterSensitivities sens2plus0       = SENSI_2.combinedWith(sensZeroA);

            assertEquals(SENSI_1.equalWithTolerance(sensZeroA, TOLERENCE_CMP), false);
            assertEquals(SENSI_1.equalWithTolerance(SENSI_1, TOLERENCE_CMP), true);
            assertEquals(SENSI_1.equalWithTolerance(SENSI_2, TOLERENCE_CMP), false);
            assertEquals(SENSI_1.equalWithTolerance(sensUsdTotal, TOLERENCE_CMP), false);
            assertEquals(SENSI_1.equalWithTolerance(sensEur, TOLERENCE_CMP), false);
            assertEquals(SENSI_1.equalWithTolerance(sens1plus2, TOLERENCE_CMP), false);
            assertEquals(SENSI_1.equalWithTolerance(sens2plus0, TOLERENCE_CMP), false);

            assertEquals(SENSI_2.equalWithTolerance(sensZeroA, TOLERENCE_CMP), false);
            assertEquals(SENSI_2.equalWithTolerance(SENSI_1, TOLERENCE_CMP), false);
            assertEquals(SENSI_2.equalWithTolerance(SENSI_2, TOLERENCE_CMP), true);
            assertEquals(SENSI_2.equalWithTolerance(sensUsdTotal, TOLERENCE_CMP), false);
            assertEquals(SENSI_2.equalWithTolerance(sensEur, TOLERENCE_CMP), false);
            assertEquals(SENSI_2.equalWithTolerance(sens1plus2, TOLERENCE_CMP), false);
            assertEquals(SENSI_2.equalWithTolerance(sens2plus0, TOLERENCE_CMP), true);

            assertEquals(sensZeroA.equalWithTolerance(sensZeroA, TOLERENCE_CMP), true);
            assertEquals(sensZeroA.equalWithTolerance(SENSI_1, TOLERENCE_CMP), false);
            assertEquals(sensZeroA.equalWithTolerance(SENSI_2, TOLERENCE_CMP), false);
            assertEquals(sensZeroA.equalWithTolerance(sensUsdTotal, TOLERENCE_CMP), false);
            assertEquals(sensZeroA.equalWithTolerance(sensEur, TOLERENCE_CMP), false);
            assertEquals(sensZeroA.equalWithTolerance(sens1plus2, TOLERENCE_CMP), false);
            assertEquals(sensZeroA.equalWithTolerance(sens2plus0, TOLERENCE_CMP), false);
            assertEquals(sensZeroA.equalWithTolerance(sensZeroB, TOLERENCE_CMP), true);

            assertEquals(sensZeroB.equalWithTolerance(sensZeroB, TOLERENCE_CMP), true);
            assertEquals(sensZeroB.equalWithTolerance(SENSI_1, TOLERENCE_CMP), false);
            assertEquals(sensZeroB.equalWithTolerance(SENSI_2, TOLERENCE_CMP), false);
            assertEquals(sensZeroB.equalWithTolerance(sensUsdTotal, TOLERENCE_CMP), false);
            assertEquals(sensZeroB.equalWithTolerance(sensEur, TOLERENCE_CMP), false);
            assertEquals(sensZeroB.equalWithTolerance(sens1plus2, TOLERENCE_CMP), false);
            assertEquals(sensZeroB.equalWithTolerance(sens2plus0, TOLERENCE_CMP), false);
            assertEquals(sensZeroB.equalWithTolerance(sensZeroA, TOLERENCE_CMP), true);

            assertEquals(sens1plus2.equalWithTolerance(sens1plus2, TOLERENCE_CMP), true);
            assertEquals(sens1plus2.equalWithTolerance(sens1plus2plus0a, TOLERENCE_CMP), true);
            assertEquals(sens1plus2.equalWithTolerance(sens1plus2plus0b, TOLERENCE_CMP), true);
            assertEquals(sens1plus2plus0a.equalWithTolerance(sens1plus2, TOLERENCE_CMP), true);
            assertEquals(sens1plus2plus0a.equalWithTolerance(sens1plus2plus0, TOLERENCE_CMP), true);
            assertEquals(sens1plus2plus0a.equalWithTolerance(sens1plus2plus0a, TOLERENCE_CMP), true);
            assertEquals(sens1plus2plus0a.equalWithTolerance(sens1plus2plus0b, TOLERENCE_CMP), true);
            assertEquals(sens1plus2plus0b.equalWithTolerance(sens1plus2, TOLERENCE_CMP), true);
            assertEquals(sens1plus2plus0b.equalWithTolerance(sens1plus2plus0, TOLERENCE_CMP), true);
            assertEquals(sens1plus2plus0b.equalWithTolerance(sens1plus2plus0a, TOLERENCE_CMP), true);
            assertEquals(sens1plus2plus0b.equalWithTolerance(sens1plus2plus0b, TOLERENCE_CMP), true);
            assertEquals(sens2plus0.equalWithTolerance(sens2plus0, TOLERENCE_CMP), true);

            assertEquals(sensZeroA.equalWithTolerance(CrossGammaParameterSensitivities.empty(), TOLERENCE_CMP), true);
            assertEquals(CrossGammaParameterSensitivities.empty().equalWithTolerance(sensZeroA, TOLERENCE_CMP), true);
        }
        public virtual void test_convertedTo_multipleCurrency_mergeWhenSameName()
        {
            CrossGammaParameterSensitivities test = SENSI_1.combinedWith(ENTRY_USD2_IN_EUR).convertedTo(USD, FX_RATE);

            assertEquals(test.Sensitivities, ImmutableList.of(ENTRY_USD_TOTAL));
        }
        public virtual void test_convertedTo_multipleCurrency()
        {
            CrossGammaParameterSensitivities test = SENSI_2.convertedTo(USD, FX_RATE);

            assertEquals(test.Sensitivities, ImmutableList.of(ENTRY_USD2, ENTRY_EUR_IN_USD));
        }
        public virtual void test_combinedWith_empty()
        {
            CrossGammaParameterSensitivities test = CrossGammaParameterSensitivities.empty().combinedWith(SENSI_1);

            assertEquals(test, SENSI_1);
        }
        public virtual void test_combinedWith_other()
        {
            CrossGammaParameterSensitivities test = SENSI_1.combinedWith(SENSI_2);

            assertEquals(test.Sensitivities, ImmutableList.of(ENTRY_USD_TOTAL, ENTRY_EUR));
        }
        public virtual void test_combinedWith_one_normalized()
        {
            CrossGammaParameterSensitivities test = SENSI_1.combinedWith(ENTRY_USD2);

            assertEquals(test.Sensitivities, ImmutableList.of(ENTRY_USD_TOTAL));
        }
        //-------------------------------------------------------------------------
        public virtual void test_convertedTo_singleCurrency()
        {
            CrossGammaParameterSensitivities test = SENSI_1.convertedTo(USD, FxMatrix.empty());

            assertEquals(test.Sensitivities, ImmutableList.of(ENTRY_USD));
        }
        public virtual void test_of_array_none()
        {
            CrossGammaParameterSensitivities test = CrossGammaParameterSensitivities.of();

            assertEquals(test.size(), 0);
        }