// This software is released into the Public Domain. See copying.txt for details. package org.openstreetmap.osmosis.core.domain.v0_6; import static org.junit.Assert.assertEquals; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import org.junit.Test; import org.openstreetmap.osmosis.core.OsmosisRuntimeException; import org.openstreetmap.osmosis.core.store.DataInputStoreReader; import org.openstreetmap.osmosis.core.store.DataOutputStoreWriter; import org.openstreetmap.osmosis.core.store.DynamicStoreClassRegister; import org.openstreetmap.osmosis.core.store.StoreClassRegister; import org.openstreetmap.osmosis.core.store.StoreReader; import org.openstreetmap.osmosis.core.store.StoreWriter; /** * Tests the OsmUser class. * * @author Karl Newman * @author Brett Henderson */ public class OsmUserTest { /** * Verify the details of the NONE user. */ @Test public final void testGetInstanceNoUser() { assertEquals("None user id is incorrect.", -1, OsmUser.NONE.getId()); assertEquals("None user name is incorrect.", "", OsmUser.NONE.getName()); } /** * Ensure that the class doesn't allow a null user name. */ @Test(expected = NullPointerException.class) public final void testGetInstancePreventsNullUser() { new OsmUser(1, null); } /** * Ensure that the class doesn't allow the reserved "NONE" user id to be specified. */ @Test(expected = OsmosisRuntimeException.class) public final void testGetInstancePreventsNoneUser() { new OsmUser(OsmUser.NONE.getId(), "MyNoneUser"); } /** * Ensure the instance is correctly written to and read from the store. */ @Test public final void testGetInstanceFromStore() { ByteArrayOutputStream out = new ByteArrayOutputStream(); StoreWriter sw = new DataOutputStoreWriter(new DataOutputStream(out)); StoreClassRegister scr = new DynamicStoreClassRegister(); OsmUser user1 = new OsmUser(12, "aUser"); OsmUser user3 = new OsmUser(13, "aUser2"); OsmUser user5 = new OsmUser(14, ""); user1.store(sw, scr); user3.store(sw, scr); user5.store(sw, scr); StoreReader sr = new DataInputStoreReader(new DataInputStream(new ByteArrayInputStream(out.toByteArray()))); OsmUser user2 = new OsmUser(sr, scr); OsmUser user4 = new OsmUser(sr, scr); OsmUser user6 = new OsmUser(sr, scr); assertEquals("Object not equal after retrieval from store", user1, user2); assertEquals("Object not equal after retrieval from store", user3, user4); assertEquals("Object not equal after retrieval from store", user5, user6); } }