public void testClone() {
int size = 100000;
Random r = new Random();
double[] doubles = new double[size];
ArrayListOfDoubles list1 = new ArrayListOfDoubles();
for (int i = 0; i < size; i++) {
double k = r.nextDouble();
list1.add(k);
doubles[i] = k;
}
ArrayListOfDoubles list2 = list1.clone();
assertEquals(size, list1.size());
assertEquals(size, list2.size());
for (int i = 0; i < size; i++) {
list2.set(i, doubles[i] + 1);
}
// values in old list should not have changed
assertEquals(size, list1.size());
for (int i = 0; i < size; i++) {
assertEquals(doubles[i], list1.get(i), 10e-5);
}
// however, values in new list should have changed
assertEquals(size, list1.size());
for (int i = 0; i < size; i++) {
assertEquals(doubles[i] + 1, list2.get(i), 10e-5);
}
}