/* * Copyright (c) 2016 Vivid Solutions. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * and Eclipse Distribution License v. 1.0 which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * * http://www.eclipse.org/org/documents/edl-v10.php. */ package org.locationtech.jts.geom; import org.locationtech.jts.geom.impl.PackedCoordinateSequenceFactory; import org.locationtech.jts.io.WKTReader; import junit.framework.TestCase; import junit.textui.TestRunner; /** * @version 1.7 */ public class CoordinateSequencesTest extends TestCase { private PrecisionModel precisionModel = new PrecisionModel(); private GeometryFactory geometryFactory = new GeometryFactory(precisionModel, 0); WKTReader reader = new WKTReader(geometryFactory); private static final double TOLERANCE = 1E-5; public static void main(String args[]) { TestRunner.run(CoordinateSequencesTest.class); } public CoordinateSequencesTest(String name) { super(name); } public void testCopyToLargerDim() throws Exception { PackedCoordinateSequenceFactory csFactory = new PackedCoordinateSequenceFactory(); CoordinateSequence cs2D = createTestSequence(csFactory, 10, 2); CoordinateSequence cs3D = csFactory.create(10, 3); CoordinateSequences.copy(cs2D, 0, cs3D, 0, cs3D.size()); assertTrue(CoordinateSequences.isEqual(cs2D, cs3D)); } public void testCopyToSmallerDim() throws Exception { PackedCoordinateSequenceFactory csFactory = new PackedCoordinateSequenceFactory(); CoordinateSequence cs3D = createTestSequence(csFactory, 10, 3); CoordinateSequence cs2D = csFactory.create(10, 2); CoordinateSequences.copy(cs3D, 0, cs2D, 0, cs2D.size()); assertTrue(CoordinateSequences.isEqual(cs2D, cs3D)); } private static CoordinateSequence createTestSequence(CoordinateSequenceFactory csFactory, int size, int dim) { CoordinateSequence cs = csFactory.create(size, dim); // initialize with a data signature where coords look like [1, 10, 100, ...] for (int i = 0; i < size; i++) { for (int d = 0; d < dim; d++) { cs.setOrdinate(i, d, i * Math.pow(10, d)); } } return cs; } }