package com.svgandroid; import org.junit.Test; import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; /** * Created by Vlad Medvedev on 25.01.2016. * vladislav.medvedev@devfactory.com */ public class ParserHelperTest { @Test public void testNextFloat() { ParserHelper parserHelper = new ParserHelper("+0.1 +05.1 -10.2E-13 1.234e2 3.8E8 .7e3 -1.4e-45 3.4e+38f", 0); assertThat(parserHelper.parseFloat(), is(0.1f)); assertThat(parserHelper.nextFloat(), is(5.1f)); assertThat(parserHelper.nextFloat(), is(-1.02E-12F)); assertThat(parserHelper.nextFloat(), is(1.234e2F)); assertThat(parserHelper.nextFloat(), is(3.8E8F)); assertThat(parserHelper.nextFloat(), is(700.0F)); assertThat(parserHelper.nextFloat(), is(-1.4E-45F)); assertThat(parserHelper.nextFloat(), is(3.4e+38f)); } @Test public void testParseFloat() { assertThat(new ParserHelper("0", 0).parseFloat(), is(0.0f)); assertThat(new ParserHelper("0.09", 0).parseFloat(), is(0.09F)); assertThat(new ParserHelper("0.0e3", 0).parseFloat(), is(0.0F)); assertThat(new ParserHelper("0.01", 0).parseFloat(), is(0.01F)); assertThat(new ParserHelper("foo", 0).parseFloat(), is(Float.NaN)); } private void testParseFloat_UnexpectedChar(String val) { ParserHelper parserHelper = new ParserHelper(val, 0); try { parserHelper.parseFloat(); fail("method must throw RuntimeException when parse wrong value"); } catch (RuntimeException e) { assertThat(e.getMessage(), is(containsString("Unexpected char"))); } } @Test public void testParseFloat_UnexpectedCharAfterE() { testParseFloat_UnexpectedChar("10.2EA13"); } @Test public void testParseFloat_UnexpectedCharAfterPlus() { testParseFloat_UnexpectedChar("10.2E+A"); } @Test public void testParseFloat_UnexpectedCharAfterDot() { testParseFloat_UnexpectedChar(".e+3"); } @Test public void testBuildFloat() { assertThat(ParserHelper.buildFloat(0, 0), is(0.0f)); assertThat(ParserHelper.buildFloat(1, 129), is(Float.POSITIVE_INFINITY)); assertThat(ParserHelper.buildFloat(-1, 128), is(Float.NEGATIVE_INFINITY)); assertThat(ParserHelper.buildFloat(1, 0), is(1f)); assertThat(ParserHelper.buildFloat(1, 2), is(100f)); assertThat(ParserHelper.buildFloat(100000000, 1), is(1.0E9F)); } }