partOffsets[0] = 0;
SDEPoint[] ptArray = new SDEPoint[numPts];
// simple polygon
ptArray[0] = new SDEPoint(1600, 1200);
ptArray[1] = new SDEPoint(2800, 1650);
ptArray[2] = new SDEPoint(1800, 2000);
ptArray[3] = new SDEPoint(1600, 1200);
SeShape polygon = new SeShape();
polygon.generatePolygon(numPts, numParts, partOffsets, ptArray);
double[][][] coords = polygon.getAllCoords();
assertEquals("Num of parts invalid", numParts, coords.length);
assertEquals("Num subparts invalid", 1, coords[0].length);
assertEquals("Num of points invalid", 2 * 4, coords[0][0].length);
numPts = 14;
numParts = 1;
ptArray = new SDEPoint[numPts];
partOffsets = new int[numParts];
partOffsets[0] = 0;
// part one
ptArray[0] = new SDEPoint(100, 1100);
ptArray[1] = new SDEPoint(1500, 1100);
ptArray[2] = new SDEPoint(1500, 1900);
ptArray[3] = new SDEPoint(100, 1900);
ptArray[4] = new SDEPoint(100, 1100);
// Hole - sub part of part one
ptArray[5] = new SDEPoint(200, 1200);
ptArray[6] = new SDEPoint(200, 1500);
ptArray[7] = new SDEPoint(500, 1500);
ptArray[8] = new SDEPoint(500, 1700);
ptArray[9] = new SDEPoint(800, 1700);
ptArray[10] = new SDEPoint(800, 1500);
ptArray[11] = new SDEPoint(500, 1500);
ptArray[12] = new SDEPoint(500, 1200);
ptArray[13] = new SDEPoint(200, 1200);
polygon = new SeShape();
polygon.generatePolygon(numPts, numParts, partOffsets, ptArray);
coords = polygon.getAllCoords();