Project: BoneJ
package org.doube.geometry;
 
import static org.junit.Assert.*; 
 
import java.util.ArrayList; 
 
import org.doube.skeleton.Point; 
import org.junit.Test; 
 
public class CentroidTest { 
 
 double[] oneDa = { 12345678910111213141516
   17181920 }; 
 double[] oneDb = { 12345678910111213141516
   171819 }; 
 double[] oneDc = { 12345678910111213141516
   17 }; 
 double[] oneDd = { 12345678910111213141516 }; 
 double[] oneDe = { 123456789101112131415 }; 
 double[] oneDf = { 1234567891011121314 }; 
 double[] oneDg = { 12345678910111213 }; 
 double[] oneDh = { 123456789101112 }; 
 double[] oneDi = { 1234567891011 }; 
 double[] oneDj = { 12345678910 }; 
 
 double[][] badNd = { oneDa, oneDb, oneDc, oneDd, oneDe, oneDf, oneDg, 
   oneDh, oneDi, oneDj }; 
 
 double[][] goodNd = { oneDa, oneDa, oneDa, oneDa, oneDa, oneDa, oneDa, 
   oneDa, oneDa }; 
 
 @Test 
 public void testGetCentroidDoubleArrayArray() { 
  try { 
   Centroid.getCentroid(badNd); 
   fail("Should throw IllegalArgumentException"); 
  catch (IllegalArgumentException e) { 
  
 
  // A 20-D centroid 
  double[] centroid = { 1234567891011121314
    151617181920 }; 
  assertArrayEquals(centroid, Centroid.getCentroid(goodNd), 1E-9); 
 
  // A 3-D array 
  double[][] threeD = { { 123 }, { 456 }, { 789 }, 
    101112 }, { 131415 }, { 161718 } }; 
  // Its centroid 
  double[] centroid3d = { 8.59.510.5 }; 
  assertArrayEquals(centroid3d, Centroid.getCentroid(threeD), 1E-9); 
 
  // A 2-D array 
  double[][] twoD = { { 12 }, { 45 }, { 78 }, { 1011 }, 
    1314 }, { 1617 } }; 
  // Its centroid 
  double[] centroid2d = { 8.59.5 }; 
  assertArrayEquals(centroid2d, Centroid.getCentroid(twoD), 1E-9); 
 
  // A 1-D array 
  double[][] oneD = { { 1 }, { 4 }, { 7 }, { 10 }, { 13 }, { 16 } }; 
  // Its centroid 
  double[] centroid1d = { 8.5 }; 
  assertArrayEquals(centroid1d, Centroid.getCentroid(oneD), 1E-9); 
 
 
 
 @Test 
 public void testGetCentroidDoubleArray() { 
  assertEquals(10.5, Centroid.getCentroid(oneDa), 1E-9); 
  assertEquals(10.0, Centroid.getCentroid(oneDb), 1E-9); 
  assertEquals(9.0, Centroid.getCentroid(oneDc), 1E-9); 
  assertEquals(8.5, Centroid.getCentroid(oneDd), 1E-9); 
  assertEquals(8.0, Centroid.getCentroid(oneDe), 1E-9); 
  assertEquals(7.5, Centroid.getCentroid(oneDf), 1E-9); 
  assertEquals(7.0, Centroid.getCentroid(oneDg), 1E-9); 
  assertEquals(6.5, Centroid.getCentroid(oneDh), 1E-9); 
  assertEquals(6.0, Centroid.getCentroid(oneDi), 1E-9); 
  assertEquals(5.5, Centroid.getCentroid(oneDj), 1E-9); 
 
 
 @Test 
 public void testGetCentroidArrayListPoint() { 
  ArrayList<Point> points = new ArrayList<Point>(); 
  for (int iMax = 10; iMax < 1000; iMax++) { 
   points.clear(); 
   for (int i = 1; i < iMax; i++) { 
    points.add(new Point(i, i, i)); 
   
   double expected = iMax / 2.0
   double[] expecteds = { expected, expected, expected }; 
   assertArrayEquals(expecteds, Centroid.getCentroid(points), 1E-9); 
  
 
 
}