/* 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 CharacterSerializerTest
{
@Test
public void testSerializeAndInterpret()
{
CharacterSerializer cser = CharacterSerializer.INSTANCE;
assertEquals(Character.valueOf('a'), cser.interpret(cser.serialize(Character.valueOf('a'))));
assertEquals(Character.valueOf(Character.MAX_HIGH_SURROGATE), cser.interpret(cser.serialize(Character.valueOf(Character.MAX_HIGH_SURROGATE))));
assertEquals(Character.valueOf(Character.MAX_LOW_SURROGATE), cser.interpret(cser.serialize(Character.valueOf(Character.MAX_LOW_SURROGATE))));
assertEquals(Character.valueOf(Character.MAX_SURROGATE), cser.interpret(cser.serialize(Character.valueOf(Character.MAX_SURROGATE))));
assertEquals(Character.valueOf(Character.MAX_VALUE), cser.interpret(cser.serialize(Character.valueOf(Character.MAX_VALUE))));
assertEquals(Character.valueOf(Character.MIN_HIGH_SURROGATE), cser.interpret(cser.serialize(Character.valueOf(Character.MIN_HIGH_SURROGATE))));
assertEquals(Character.valueOf(Character.MIN_LOW_SURROGATE), cser.interpret(cser.serialize(Character.valueOf(Character.MIN_LOW_SURROGATE))));
assertEquals(Character.valueOf(Character.MIN_SURROGATE), cser.interpret(cser.serialize(Character.valueOf(Character.MIN_SURROGATE))));
assertEquals(Character.valueOf(Character.MIN_VALUE), cser.interpret(cser.serialize(Character.valueOf(Character.MIN_VALUE))));
byte[] barr = new byte[2 + CharacterSerializer.DATA_SIZE];
for (int i = 0; i < 3; i++)
{
assertEquals(CharacterSerializer.DATA_SIZE, cser.serialize(Character.valueOf('a'), barr, i));
assertEquals('a', cser.interpret(barr, i, CharacterSerializer.DATA_SIZE).charValue());
assertEquals(CharacterSerializer.DATA_SIZE, cser.serialize(Character.valueOf('e'), barr, i));
assertEquals('e', cser.interpret(barr, i, CharacterSerializer.DATA_SIZE).charValue());
}
try
{
cser.serialize(null);
fail();
}
catch (NullPointerException e)
{
// ok
}
try
{
cser.interpret(null);
fail();
}
catch (NullPointerException e)
{
// ok
}
}
@Test
public void testReadCharacter()
{
byte[] barr = CharacterSerializer.INSTANCE.serialize('\0');
assertEquals('\0', CharacterSerializer.INSTANCE.readCharacter(new ByteArrayInputStream(barr)).charValue());
assertEquals('\0', CharacterSerializer.INSTANCE.readCharacter(new ByteArrayRandomAccess(barr)).charValue());
barr = CharacterSerializer.INSTANCE.serialize('A');
assertEquals('A', CharacterSerializer.INSTANCE.readCharacter(new ByteArrayInputStream(barr)).charValue());
assertEquals('A', CharacterSerializer.INSTANCE.readCharacter(new ByteArrayRandomAccess(barr)).charValue());
barr = CharacterSerializer.INSTANCE.serialize('ö');
assertEquals('ö', CharacterSerializer.INSTANCE.readCharacter(new ByteArrayInputStream(barr)).charValue());
assertEquals('ö', CharacterSerializer.INSTANCE.readCharacter(new ByteArrayRandomAccess(barr)).charValue());
}
}