/* * Copyright (c) 2002 Cunningham & Cunningham, Inc. * Copyright (c) 2009-2015 by Jochen Wierum & Cologne Intelligence * * This file is part of FitGoodies. * * FitGoodies is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FitGoodies is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with FitGoodies. If not, see <http://www.gnu.org/licenses/>. */ package de.cologneintelligence.fitgoodies.types; import de.cologneintelligence.fitgoodies.testsupport.FitGoodiesTestCase; import org.hamcrest.CoreMatchers; import org.hamcrest.Matcher; import org.hamcrest.Matchers; import org.junit.Assert; import org.junit.Test; public class ScientificDoubleTest extends FitGoodiesTestCase { @Test public void testEquals() { ScientificDouble two = new ScientificDouble(2.0f); ScientificDouble twofour = new ScientificDouble(2.4f); ScientificDouble seven = new ScientificDouble(7.0f); Assert.assertThat(two.equals(new ScientificDouble(2.0f)), CoreMatchers.is(true)); Assert.assertThat(seven.equals(new ScientificDouble(7.0f)), CoreMatchers.is(true)); Assert.assertThat(twofour.equals(new ScientificDouble(2.4f)), CoreMatchers.is(true)); Assert.assertThat(seven.equals(new ScientificDouble(2.0f)), CoreMatchers.is(false)); Assert.assertThat(twofour.equals(new ScientificDouble(7.0f)), CoreMatchers.is(false)); Assert.assertThat(two.equals(new ScientificDouble(2.4f)), CoreMatchers.is(false)); Assert.assertThat(new ScientificDouble(2.0f).hashCode(), CoreMatchers.is(CoreMatchers.equalTo((Object) two.hashCode()))); Assert.assertThat(new ScientificDouble(2.4f).hashCode(), CoreMatchers.is(CoreMatchers.equalTo((Object) twofour.hashCode()))); Assert.assertThat(new ScientificDouble(7.0f).hashCode(), CoreMatchers.is(CoreMatchers.equalTo((Object) seven.hashCode()))); Assert.assertThat(two.hashCode(), CoreMatchers.is(CoreMatchers.not(seven.hashCode()))); Assert.assertThat(two.hashCode(), CoreMatchers.is(twofour.hashCode())); Assert.assertThat(two.hashCode(), CoreMatchers.is(new ScientificDouble(2.4f).hashCode())); } @Test public void testScientificDouble() { Double pi = 3.141592865; assertEquals(pi, ScientificDouble.valueOf("3")); assertEquals(pi, ScientificDouble.valueOf("3.14")); assertEquals(pi, ScientificDouble.valueOf("3.142")); assertEquals(pi, ScientificDouble.valueOf("3.1416")); assertEquals(pi, ScientificDouble.valueOf("3.14159")); assertEquals(pi, ScientificDouble.valueOf("3.141592865")); assertNotEquals(ScientificDouble.valueOf("3.140"), pi); assertNotEquals(ScientificDouble.valueOf("3.144"), pi); assertNotEquals(ScientificDouble.valueOf("3.1414"), pi); assertNotEquals(ScientificDouble.valueOf("3.141592863"), pi); assertEquals(6.02e23, ScientificDouble.valueOf("6.02e23")); assertEquals(6.024E23, ScientificDouble.valueOf("6.02E23")); assertEquals(6.016e23, ScientificDouble.valueOf("6.02e23")); Assert.assertThat(ScientificDouble.valueOf("6.02e23"), (Matcher) CoreMatchers.is(CoreMatchers.not(CoreMatchers.equalTo(6.026e23)))); Assert.assertThat(ScientificDouble.valueOf("6.02e23"), (Matcher) CoreMatchers.is(CoreMatchers.not(CoreMatchers.equalTo(6.014e23)))); } @Test public void testConverts() { ScientificDouble value1 = ScientificDouble.valueOf("25.31"); ScientificDouble value2 = ScientificDouble.valueOf(".31"); Assert.assertThat((double) value1.floatValue(), CoreMatchers.is(Matchers.closeTo(25.31, 0.01))); Assert.assertThat((double) value2.floatValue(), CoreMatchers.is(Matchers.closeTo(.31, 0.01))); Assert.assertThat(value1.doubleValue(), CoreMatchers.is(Matchers.closeTo(25.31, 0.01))); Assert.assertThat(value2.doubleValue(), CoreMatchers.is(Matchers.closeTo(.31, 0.01))); Assert.assertThat(value1.intValue(), CoreMatchers.is(25)); Assert.assertThat(value2.intValue(), CoreMatchers.is(0)); Assert.assertThat(value1.longValue(), CoreMatchers.is(25L)); Assert.assertThat(value2.longValue(), CoreMatchers.is(0L)); Assert.assertThat(value1.toString(), Matchers.startsWith("25.3")); Assert.assertThat(value2.toString(), Matchers.startsWith("0.3")); } private void assertNotEquals(ScientificDouble expected, Double actual) { Assert.assertThat(expected, (Matcher) CoreMatchers.is(CoreMatchers.not(CoreMatchers.equalTo(actual)))); } private void assertEquals(Double expected, ScientificDouble actual) { Assert.assertThat(actual, (Matcher) CoreMatchers.is(CoreMatchers.equalTo(expected))); } }