/*
* JacORB - a free Java ORB
*
* Copyright (C) 1997-2014 Gerald Brose / The JacORB Team.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library 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
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
package org.jacorb.test.orb;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import java.util.Arrays;
import java.util.Collections;
import org.easymock.MockControl;
import org.jacorb.config.Configuration;
import org.jacorb.orb.ObjectKeyMap;
import org.jacorb.test.harness.ORBTestCase;
import org.junit.Before;
import org.junit.Test;
import org.omg.CORBA.BAD_PARAM;
/**
* @author Alphonse Bendt
*/
public class ObjectKeyMapTest extends ORBTestCase
{
private static final String shortKey = "ShortCut";
private static final byte[] shortKeyBytes = shortKey.getBytes();
private static final String longKey = "Long/Key/123456789";
private static final byte[] longKeyBytes = longKey.getBytes();
private MockControl configControl = MockControl.createControl(Configuration.class);
private Configuration configMock = (Configuration) configControl.getMock();
private ObjectKeyMap objectUnderTest;
@Before
public void setUp() throws Exception
{
objectUnderTest = new ObjectKeyMap((org.jacorb.orb.ORB)orb);
}
@Test
public void testWithoutMappingUnmodifiedKeyIsUsed()
{
assertEqualString(shortKeyBytes, objectUnderTest.mapObjectKey(shortKeyBytes));
}
@Test
public void testAddObjectKey()
{
objectUnderTest.addObjectKey(shortKey, longKey);
assertEqualString(longKeyBytes, objectUnderTest.mapObjectKey(shortKeyBytes));
}
@Test
public void testAddObjectKeyAsBogusIORFails()
{
objectUnderTest.addObjectKey(shortKey, "corbaloc:localhost:1234/RootPOA/" + longKey);
try
{
objectUnderTest.mapObjectKey(shortKeyBytes);
fail();
}
catch(BAD_PARAM e)
{
}
}
@Test
public void testAddObjectKeyAsIOR()
{
objectUnderTest.addObjectKey(shortKey, "corbaloc::localhost:1234/" + longKey);
assertEqualString(longKeyBytes, objectUnderTest.mapObjectKey(shortKeyBytes));
}
@Test
public void testAddObjectAsObject()
{
String corbaloc = "corbaloc::localhost:1234/" + longKey;
objectUnderTest.addObjectKey(shortKey, orb.string_to_object(corbaloc));
assertEqualString(longKeyBytes, objectUnderTest.mapObjectKey(shortKeyBytes));
}
@Test
public void testConfigureWithEmptyMap()
{
configControl.expectAndReturn(configMock.getAttributeNamesWithPrefix("jacorb.orb.objectKeyMap."), Collections.EMPTY_LIST);
configControl.replay();
objectUnderTest.configureObjectKeyMap(configMock);
assertEqualString(shortKeyBytes, objectUnderTest.mapObjectKey(shortKeyBytes));
configControl.verify();
}
@Test
public void testConfigureWithOneEntry() throws Exception
{
String configKey = "jacorb.orb.objectKeyMap." + shortKey;
configControl.expectAndReturn(configMock.getAttributeNamesWithPrefix("jacorb.orb.objectKeyMap."), Arrays.asList(new String[] {configKey}));
configControl.expectAndReturn(configMock.getAttribute(configKey), longKey);
configControl.replay();
objectUnderTest.configureObjectKeyMap(configMock);
assertEqualString(longKeyBytes, objectUnderTest.mapObjectKey(shortKeyBytes));
configControl.verify();
}
private static void assertEqualString(byte[] expected, byte[] actual)
{
assertEquals(new String(expected), new String(actual));
}
}