/* * 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 junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; /** * @version 1.7 */ public class PrecisionModelTest extends TestCase { public PrecisionModelTest(String name) { super(name); } public static Test suite() { return new TestSuite(PrecisionModelTest.class); } public void testParameterlessConstructor() { PrecisionModel p = new PrecisionModel(); //Implicit precision model has scale 0 assertEquals(0, p.getScale(), 1E-10); } public void testGetMaximumSignificantDigits() { assertEquals(16, new PrecisionModel(PrecisionModel.FLOATING).getMaximumSignificantDigits()); assertEquals(6, new PrecisionModel(PrecisionModel.FLOATING_SINGLE).getMaximumSignificantDigits()); assertEquals(1, new PrecisionModel(PrecisionModel.FIXED).getMaximumSignificantDigits()); assertEquals(4, new PrecisionModel(1000).getMaximumSignificantDigits()); } public void testMakePrecise() { PrecisionModel pm_10 = new PrecisionModel(0.1); preciseCoordinateTester(pm_10, 1200.4, 1240.4, 1200, 1240); preciseCoordinateTester(pm_10, 1209.4, 1240.4, 1210, 1240); } private void preciseCoordinateTester(PrecisionModel pm, double x1, double y1, double x2, double y2) { Coordinate p = new Coordinate(x1, y1); pm.makePrecise(p); Coordinate pPrecise = new Coordinate(x2, y2); assertTrue(p.equals2D(pPrecise)); } }