/** Test of getParameters method, of class MultivariatePolyaDistribution. */
 public void testGetParameters() {
   System.out.println("getParameters");
   MultivariatePolyaDistribution instance = this.createInstance();
   Vector p = instance.getParameters().scale(2.0);
   instance.setParameters(p);
   assertEquals(p, instance.getParameters());
 }
 /** Test of getNumTrials method, of class MultivariatePolyaDistribution. */
 public void testGetNumTrials() {
   System.out.println("getNumTrials");
   int numTrials = RANDOM.nextInt(100) + 1;
   MultivariatePolyaDistribution instance = this.createInstance();
   instance.setNumTrials(numTrials);
   assertEquals(numTrials, instance.getNumTrials());
 }
 @Override
 public void testKnownConvertToVector() {
   System.out.println("Known convertToVector");
   MultivariatePolyaDistribution instance = this.createInstance();
   Vector p = instance.convertToVector();
   assertEquals(instance.getInputDimensionality(), p.getDimensionality());
   assertNotSame(p, instance.getParameters());
   assertEquals(p, instance.getParameters());
 }
 /** Test of setNumTrials method, of class MultivariatePolyaDistribution. */
 public void testSetNumTrials() {
   System.out.println("setNumTrials");
   int numTrials = RANDOM.nextInt(100) + 1;
   MultivariatePolyaDistribution instance = this.createInstance();
   instance.setNumTrials(numTrials);
   assertEquals(numTrials, instance.getNumTrials());
   try {
     instance.setNumTrials(0);
     fail("numTrials must be > 0");
   } catch (Exception e) {
     System.out.println("Good: " + e);
   }
 }
  /** Test of setParameters method, of class MultivariatePolyaDistribution. */
  public void testSetParameters() {
    System.out.println("setParameters");
    MultivariatePolyaDistribution instance = this.createInstance();
    Vector p = instance.getParameters().scale(2.0);
    instance.setParameters(p);
    assertEquals(p, instance.getParameters());

    p.setElement(0, 0.0);
    try {
      instance.setParameters(p);
      fail("Parameters must be > 0.0");
    } catch (Exception e) {
      System.out.println("Good: " + e);
    }

    try {
      instance.setParameters(null);
      fail("Cannot have null parameters");
    } catch (Exception e) {
      System.out.println("Good: " + e);
    }

    try {
      instance.setParameters(VectorFactory.getDefault().copyValues(1.0));
      fail("Must have dimensionality >= 2");
    } catch (Exception e) {
      System.out.println("Good: " + e);
    }
  }
  /** Test of getDomain method, of class MultivariatePolyaDistribution. */
  public void testKnownGetDomain() {
    System.out.println("getDomain");
    MultivariatePolyaDistribution instance = this.createInstance();

    int count = 0;
    MultinomialDistribution.Domain domain = instance.getDomain();
    System.out.println("Enumerating all subsets: " + domain.size());
    for (Vector subset : domain) {
      System.out.println("Subset: " + subset);
      count++;
    }

    assertEquals(count, domain.size());

    Iterator<Vector> iterator = domain.iterator();
    try {
      iterator.remove();
      fail("Cannot remove");
    } catch (Exception e) {
      System.out.println("Good: " + e);
    }

    try {
      iterator = new MultinomialDistribution.Domain(0, 10).iterator();
      fail("numClasses must be > 0");
    } catch (Exception e) {
      System.out.println("Good: " + e);
    }

    try {
      iterator = new MultinomialDistribution.Domain(3, -1).iterator();
      fail("numTrials must be >= 0");
    } catch (Exception e) {
      System.out.println("Good: " + e);
    }
  }
  /** Tests the constructors of class MultivariatePolyaDistributionTest. */
  @Override
  public void testConstructors() {
    System.out.println("Constructors");

    MultivariatePolyaDistribution instance = new MultivariatePolyaDistribution();
    assertEquals(
        MultivariatePolyaDistribution.DEFAULT_DIMENSIONALITY, instance.getInputDimensionality());
    assertEquals(MultivariatePolyaDistribution.DEFAULT_NUM_TRIALS, instance.getNumTrials());

    int dim = RANDOM.nextInt(100) + 10;
    int numTrials = RANDOM.nextInt(100) + 10;
    instance = new MultivariatePolyaDistribution(dim, numTrials);
    assertEquals(dim, instance.getInputDimensionality());
    assertEquals(numTrials, instance.getNumTrials());

    Vector p = VectorFactory.getDefault().createUniformRandom(dim, 0.0, 10.0, RANDOM);
    instance = new MultivariatePolyaDistribution(p, numTrials);
    assertSame(p, instance.getParameters());
    assertEquals(numTrials, instance.getNumTrials());

    MultivariatePolyaDistribution i2 = new MultivariatePolyaDistribution(instance);
    assertNotSame(i2.getParameters(), instance.getParameters());
    assertEquals(i2.getParameters(), instance.getParameters());
    assertEquals(i2.getNumTrials(), instance.getNumTrials());
  }
 /** Test of getInputDimensionality method, of class MultivariatePolyaDistribution. */
 public void testGetInputDimensionality() {
   System.out.println("getInputDimensionality");
   MultivariatePolyaDistribution instance = this.createInstance();
   assertEquals(instance.getInputDimensionality(), instance.getParameters().getDimensionality());
 }