package org.jacorb.test.bugs.bug401;
/*
* 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.
*/
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.io.Serializable;
import org.jacorb.test.harness.ClientServerSetup;
import org.jacorb.test.harness.ClientServerTestCase;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.omg.CORBA.Any;
import org.omg.CORBA.portable.ValueFactory;
/**
* Test for bug 401, TypeCode problem when putting values into Anys.
*
* @author <a href="mailto:spiegel@gnu.org">Andre Spiegel</a>
*/
public class Bug401Test extends ClientServerTestCase
{
private AnyServer server;
@Before
public void setUp()
{
server = AnyServerHelper.narrow(setup.getServerObject());
org.omg.CORBA_2_3.ORB orb = (org.omg.CORBA_2_3.ORB)setup.getClientOrb();
orb.register_value_factory(AHelper.id(), new AFactory());
orb.register_value_factory(BHelper.id(), new BFactory());
}
@BeforeClass
public static void beforeClassSetUp() throws Exception
{
setup = new ClientServerSetup("org.jacorb.test.bugs.bug401.AnyServant");
}
@Test
public void test_getA()
{
Any aa = server.getAnyA();
assertTrue ("expected TypeCode of A, got: " + aa.type().toString(),
aa.type().equivalent(AHelper.type()));
A a = AHelper.extract(aa);
assertEquals (0xAA, a.aa);
}
@Test
public void test_getB()
{
Any bb = server.getAnyB();
assertTrue ("expected TypeCode of B, got: " + bb.type().toString(),
bb.type().equivalent(BHelper.type()));
B b = BHelper.extract(bb);
assertEquals (0xAA, b.aa);
assertEquals (0xBB, b.bb);
}
@Test
public void test_getAB()
{
Any[] ab = server.getAnyAB();
assertTrue ("expected TypeCode of A, got: " + ab[0].type().toString(),
ab[0].type().equivalent(AHelper.type()));
assertTrue ("expected TypeCode of B, got: " + ab[1].type().toString(),
ab[1].type().equivalent(BHelper.type()));
A a = AHelper.extract(ab[0]);
B b = BHelper.extract(ab[1]);
assertEquals (0xAA, a.aa);
assertEquals (0xAA, b.aa);
assertEquals (0xBB, b.bb);
}
public static class AFactory implements ValueFactory
{
public Serializable read_value
(org.omg.CORBA_2_3.portable.InputStream is)
{
A a = new A(){};
return is.read_value(a);
}
}
public static class BFactory implements ValueFactory
{
public Serializable read_value
(org.omg.CORBA_2_3.portable.InputStream is)
{
B b = new B(){};
return is.read_value(b);
}
}
}