### Question:
GeneticConfiguration implements Comparable<GeneticConfiguration> { public GeneticConfiguration makeRandomCopy() { GeneticConfiguration copy = new GeneticConfiguration(this); for (Aspect aspect : aspects) aspect.setRandomly(copy); return copy; } GeneticConfiguration(Configuration config);  GeneticConfiguration(Configuration config, int mutation_rate,
                              double recombination_rate,
                              boolean evolve_comparators);  GeneticConfiguration(GeneticConfiguration config); Configuration getConfiguration(); int getRank(); void setRank(int rank); double getFNumber(); void setFNumber(double f); GeneticConfiguration getParent(); GeneticConfiguration makeRandomCopy(); GeneticConfiguration makeCopy(); int getMutationRate(); void setMutationRate(int mutation_rate); double getRecombinationRate(); void mutate(); void mateWith(GeneticConfiguration other); int compareTo(GeneticConfiguration other); String toString();  }### Answer:
@Test public void testMakeRandomCopy() { GeneticConfiguration conf = new GeneticConfiguration(config1); GeneticConfiguration confrand = conf.makeRandomCopy(); Configuration rand = confrand.getConfiguration(); assertTrue("shouldn't have a parent", conf.getParent() == null); assertTrue("wrong parent", confrand.getParent() == conf); assertEquals("wrong number of properties", rand.getProperties().size(), 3); int aspects = 1 + (3 * (config1.getProperties().size() - 1)); int differences = countDifferences(config1, rand); assertTrue("Not enough differences: " + differences, differences > 3); }