Package org.helidb.lang.serializer

Source Code of org.helidb.lang.serializer.FloatSerializerTest

/* HeliDB -- A simple database for Java, http://www.helidb.org
* Copyright (C) 2008, 2009 Karl Gustafsson
*
* This file is a part of HeliDB.
*
* HeliDB is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* HeliDB 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 this program.  If not, see <http://www.gnu.org/licenses/>.
*/
package org.helidb.lang.serializer;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

import java.io.ByteArrayInputStream;

import org.entityfs.util.io.ByteArrayRandomAccess;
import org.junit.Test;

public class FloatSerializerTest
{
  @Test
  public void testSerializeAndInterpret()
  {
    FloatSerializer fser = FloatSerializer.INSTANCE;
    assertEquals(Float.valueOf(0.0f), fser.interpret(fser.serialize(Float.valueOf(0.0f))));
    assertEquals(Float.valueOf(1.0f), fser.interpret(fser.serialize(Float.valueOf(1.0f))));
    assertEquals(Float.valueOf(-1.0f), fser.interpret(fser.serialize(Float.valueOf(-1.0f))));
    assertEquals(Float.valueOf(Float.MAX_VALUE), fser.interpret(fser.serialize(Float.valueOf(Float.MAX_VALUE))));
    assertEquals(Float.valueOf(Float.MIN_VALUE), fser.interpret(fser.serialize(Float.valueOf(Float.MIN_VALUE))));
    // Only works for JDK 6+
    // assertEquals(Float.valueOf(Float.MIN_NORMAL),
    // fser.interpret(fser.serialize(Float.valueOf(Float.MIN_NORMAL))));
    assertEquals(Float.valueOf(Float.NaN), fser.interpret(fser.serialize(Float.valueOf(Float.NaN))));
    assertEquals(Float.valueOf(Float.NEGATIVE_INFINITY), fser.interpret(fser.serialize(Float.valueOf(Float.NEGATIVE_INFINITY))));
    assertEquals(Float.valueOf(Float.POSITIVE_INFINITY), fser.interpret(fser.serialize(Float.valueOf(Float.POSITIVE_INFINITY))));

    byte[] barr = new byte[7];
    for (int i = 0; i < 3; i++)
    {
      assertEquals(4, fser.serialize(12f, barr, i));
      assertEquals(12f, fser.interpret(barr, i, 4).floatValue(), 0.01f);
      assertEquals(4, fser.serialize(14321f, barr, i));
      assertEquals(14321f, fser.interpret(barr, i, 4).floatValue(), 0.01f);
    }

    try
    {
      // Invalid length
      fser.interpret(barr, 0, 3);
      fail();
    }
    catch (SerializationException e)
    {
      // ok
    }

    try
    {
      fser.serialize(null);
      fail();
    }
    catch (NullPointerException e)
    {
      // ok
    }

    try
    {
      fser.interpret(null);
      fail();
    }
    catch (NullPointerException e)
    {
      // ok
    }
  }

  @Test
  public void testReadFloat()
  {
    byte[] barr = FloatSerializer.INSTANCE.serialize(0.0f);
    assertEquals(0.0f, FloatSerializer.INSTANCE.readFloat(new ByteArrayInputStream(barr)).floatValue(), 0.00001f);
    assertEquals(0.0f, FloatSerializer.INSTANCE.readFloat(new ByteArrayRandomAccess(barr)).floatValue(), 0.00001f);
    barr = FloatSerializer.INSTANCE.serialize(1.0f);
    assertEquals(1.0f, FloatSerializer.INSTANCE.readFloat(new ByteArrayInputStream(barr)).floatValue(), 0.00001f);
    assertEquals(1.0f, FloatSerializer.INSTANCE.readFloat(new ByteArrayRandomAccess(barr)).floatValue(), 0.00001f);
    barr = FloatSerializer.INSTANCE.serialize(-1.2034f);
    assertEquals(-1.2034f, FloatSerializer.INSTANCE.readFloat(new ByteArrayInputStream(barr)).floatValue(), 0.00001f);
    assertEquals(-1.2034f, FloatSerializer.INSTANCE.readFloat(new ByteArrayRandomAccess(barr)).floatValue(), 0.00001f);
    barr = FloatSerializer.INSTANCE.serialize(Float.MAX_VALUE);
    assertEquals(Float.MAX_VALUE, FloatSerializer.INSTANCE.readFloat(new ByteArrayInputStream(barr)).floatValue(), 0.00001f);
    assertEquals(Float.MAX_VALUE, FloatSerializer.INSTANCE.readFloat(new ByteArrayRandomAccess(barr)).floatValue(), 0.00001f);
    barr = FloatSerializer.INSTANCE.serialize(Float.MIN_VALUE);
    assertEquals(Float.MIN_VALUE, FloatSerializer.INSTANCE.readFloat(new ByteArrayInputStream(barr)).floatValue(), 0.00001f);
    assertEquals(Float.MIN_VALUE, FloatSerializer.INSTANCE.readFloat(new ByteArrayRandomAccess(barr)).floatValue(), 0.00001f);
  }
}
TOP

Related Classes of org.helidb.lang.serializer.FloatSerializerTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.