package org.jacorb.test.bugs.bug495;
/*
* 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.fail;
import org.jacorb.test.ArrayTypeHelper;
import org.jacorb.test.Bound;
import org.jacorb.test.StructType;
import org.jacorb.test.StructTypeHelper;
import org.jacorb.test.orb.dynany.DynAnyXXXTestCase;
import org.junit.Test;
import org.omg.CORBA.StringSeqHelper;
import org.omg.CORBA.TypeCode;
public class Bug495Test extends DynAnyXXXTestCase
{
/**
* Test current_component returns the same object.
*/
@Test
public void testCurrentComponentSequenceDynAny () throws Exception
{
TypeCode tc = null;
org.omg.DynamicAny.DynSequence dynAny = null;
tc = StringSeqHelper.type();
dynAny = createDynAnyFromTypeCode (tc);
dynAny.set_length(1);
dynAny.current_component().insert_string("hello");
if ( ! dynAny.current_component().get_string().equals("hello"))
{
fail ("Current_component should return the same object");
}
}
/**
* Test current_component returns the same object.
*/
@Test
public void testCurrentComponentArrayDynAny () throws Exception
{
org.omg.DynamicAny.DynArray dynAny = null;
org.omg.CORBA.Any any = orb.create_any ();
ArrayTypeHelper.insert (any, getIntArray() );
dynAny = createArrayDynAnyFromAny (any);
dynAny.current_component().insert_long(100);
if ( dynAny.current_component().get_long() != 100)
{
fail ("Current_component should return the same object");
}
}
/**
* Test current_component returns the same object.
*/
@Test
public void testCurrentComponentStructDynAny () throws Exception
{
StructType type = null;
org.omg.CORBA.Any any = null;
org.omg.DynamicAny.DynStruct dynAny = null;
type = new StructType (1, "Hello");
any = orb.create_any ();
StructTypeHelper.insert (any, type);
dynAny = createStructDynAnyFromAny (any);
dynAny.current_component().insert_long(100);
if ( dynAny.current_component().get_long() != 100)
{
fail ("Current_component should return the same object");
}
}
/**
* Create a DynAny object from a TypeCode object.
*/
private org.omg.DynamicAny.DynSequence createDynAnyFromTypeCode
(org.omg.CORBA.TypeCode tc)
{
String msg;
org.omg.DynamicAny.DynSequence dynAny = null;
try
{
dynAny = (org.omg.DynamicAny.DynSequence)
factory.create_dyn_any_from_type_code (tc);
}
catch (Throwable ex)
{
msg = "Factory failed to create DynAny from TypeCode using ";
msg += "DynAny::create_dyn_any_from_type_code operation: " + ex;
fail (msg);
}
return dynAny;
}
/**
* Create a DynAny object from an Any object.
*/
private org.omg.DynamicAny.DynStruct createStructDynAnyFromAny
(org.omg.CORBA.Any any)
{
String msg;
org.omg.DynamicAny.DynStruct dynAny = null;
try
{
dynAny = (org.omg.DynamicAny.DynStruct) factory.create_dyn_any (any);
}
catch (Throwable ex)
{
msg = "Factory failed to create DynAny from Any using ";
msg += "DynAny::create_dyn_any operation: " + ex;
fail (msg);
}
return dynAny;
}
private final org.omg.DynamicAny.DynArray createArrayDynAnyFromAny
(org.omg.CORBA.Any any)
{
String msg;
org.omg.DynamicAny.DynArray dynAny = null;
try
{
dynAny = (org.omg.DynamicAny.DynArray) factory.create_dyn_any (any);
}
catch (Throwable ex)
{
msg = "Factory failed to create DynAny from Any using ";
msg += "DynAny::create_dyn_any operation: " + ex;
fail (msg);
}
return dynAny;
}
/**
* Create an array of integers of fixed length.
*/
private static int [] getIntArray ()
{
int [] type = new int [Bound.value];
for (int i = 0; i < Bound.value; i++)
{
type [i] = i;
}
return type;
}
}