### Question:
SsviFormulaData implements SmileModelData, ImmutableBean, Serializable { public static SsviFormulaData of(double sigma, double rho, double eta) { return new SsviFormulaData(DoubleArray.of(sigma, rho, eta)); } private  SsviFormulaData(
      DoubleArray parameters); static SsviFormulaData of(double sigma, double rho, double eta); static SsviFormulaData of(double[] parameters); double getSigma(); double getRho(); double getEta(); SsviFormulaData withSigma(double sigma); SsviFormulaData withRho(double rho); SsviFormulaData withEta(double eta); @Override int getNumberOfParameters(); @Override double getParameter(int index); @Override boolean isAllowed(int index, double value); @Override SsviFormulaData with(int index, double value); static TypedMetaBean<SsviFormulaData> meta(); @Override TypedMetaBean<SsviFormulaData> metaBean(); DoubleArray getParameters(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void testNegativeEta() { assertThatIllegalArgumentException() .isThrownBy(() -> SsviFormulaData.of(SIGMA, RHO, -ETA)); }
@Test public void testNegativeSigma() { assertThatIllegalArgumentException() .isThrownBy(() -> SsviFormulaData.of(-SIGMA, RHO, ETA)); }
@Test public void testLowRho() { assertThatIllegalArgumentException() .isThrownBy(() -> SsviFormulaData.of(SIGMA, RHO - 10, ETA)); }
@Test public void testHighRho() { assertThatIllegalArgumentException() .isThrownBy(() -> SsviFormulaData.of(SIGMA, RHO + 10, ETA)); }
@Test public void testWrongParameterLength() { assertThatIllegalArgumentException() .isThrownBy(() -> SsviFormulaData.of(new double[] {ETA, RHO, SIGMA, 0.1})); }
@Test public void coverage() { coverImmutableBean(DATA); SsviFormulaData another = SsviFormulaData.of(1.2, 0.4, 0.2); coverBeanEquals(DATA, another); }