package test.compliance.relation;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import javax.management.ObjectName;
import javax.management.MalformedObjectNameException;
import javax.management.relation.RoleStatus;
import javax.management.relation.RoleUnresolved;
import junit.framework.TestCase;
public class RoleUnresolvedTestCase
extends TestCase
{
public RoleUnresolvedTestCase(String s)
{
super(s);
}
public void testBasic()
{
try
{
ArrayList roleValue = new ArrayList();
ObjectName a = new ObjectName(":a=a");
ObjectName b = new ObjectName(":b=b");
roleValue.add(a);
roleValue.add(b);
RoleUnresolved roleUnresolved = new RoleUnresolved("RoleName", roleValue,
RoleStatus.NO_ROLE_WITH_NAME);
assertEquals("RoleName", roleUnresolved.getRoleName());
assertEquals(roleValue, roleUnresolved.getRoleValue());
assertEquals(RoleStatus.NO_ROLE_WITH_NAME, roleUnresolved.getProblemType());
roleUnresolved.setRoleName("Changed");
assertEquals("Changed", roleUnresolved.getRoleName());
ArrayList roleValue2 = new ArrayList();
ObjectName c = new ObjectName(":c=c");
ObjectName d = new ObjectName(":d=d");
roleValue2.add(c);
roleValue2.add(d);
roleUnresolved.setRoleValue(roleValue2);
assertEquals(roleValue2, roleUnresolved.getRoleValue());
roleUnresolved.setProblemType(RoleStatus.ROLE_NOT_READABLE);
assertEquals(RoleStatus.ROLE_NOT_READABLE, roleUnresolved.getProblemType());
}
catch (MalformedObjectNameException mfone)
{
fail(mfone.toString());
}
}
public void testToString()
{
try
{
ArrayList roleValue = new ArrayList();
ObjectName a = new ObjectName(":a=a");
ObjectName b = new ObjectName(":b=b");
roleValue.add(a);
roleValue.add(b);
RoleUnresolved roleUnresolved = new RoleUnresolved("XYZZY", roleValue,
RoleStatus.NO_ROLE_WITH_NAME);
String result = roleUnresolved.toString();
if (result.lastIndexOf("XYZZY") == -1)
fail("Missing role name in toString");
if (result.lastIndexOf(":a=a") == -1)
fail("Missing object name :a=a in toString");
if (result.lastIndexOf(":b=b") == -1)
fail("Missing object name :b=b in toString");
}
catch (MalformedObjectNameException mfone)
{
fail(mfone.toString());
}
}
public void testErrorHandling()
{
try
{
ArrayList roleValue = new ArrayList();
ObjectName a = new ObjectName(":a=a");
ObjectName b = new ObjectName(":b=b");
roleValue.add(a);
roleValue.add(b);
boolean caught = false;
try
{
new RoleUnresolved(null, roleValue, RoleStatus.NO_ROLE_WITH_NAME);
}
catch (IllegalArgumentException e)
{
caught = true;
}
if (caught == false)
fail ("Constructor accepts null role name");
caught = false;
try
{
new RoleUnresolved("RoleName", roleValue, -1000);
}
catch (IllegalArgumentException e)
{
caught = true;
}
if (caught == false)
fail ("Constructor accepts an invalid problem type");
RoleUnresolved roleUnresolved = new RoleUnresolved("RoleName", roleValue,
RoleStatus.NO_ROLE_WITH_NAME);
caught = false;
try
{
roleUnresolved.setRoleName(null);
}
catch (IllegalArgumentException e)
{
caught = true;
}
if (caught == false)
fail ("setRoleName accepts null");
caught = false;
try
{
roleUnresolved.setProblemType(-1000);
}
catch (IllegalArgumentException e)
{
caught = true;
}
if (caught == false)
fail ("setProblemType accepts an invalid problem type");
}
catch (MalformedObjectNameException mfone)
{
fail(mfone.toString());
}
}
public void testClone()
{
ArrayList roleValue = new ArrayList();
try
{
roleValue.add(new ObjectName(":a=a"));
roleValue.add(new ObjectName(":b=b"));
}
catch (MalformedObjectNameException mfone)
{
fail(mfone.toString());
}
RoleUnresolved roleUnresolved = new RoleUnresolved("RoleName", roleValue,
RoleStatus.NO_ROLE_WITH_NAME);
RoleUnresolved roleUnresolved2 = (RoleUnresolved) roleUnresolved.clone();
assertEquals(roleUnresolved.getRoleName(), roleUnresolved2.getRoleName());
assertEquals(roleUnresolved.getRoleValue(), roleUnresolved2.getRoleValue());
assertEquals(roleUnresolved.getProblemType(), roleUnresolved2.getProblemType());
if(roleUnresolved.getRoleValue() == roleUnresolved2.getRoleValue())
fail("RoleUnresolved.clone() didn't clone");
}
public void testSerialization()
{
ArrayList roleValue = new ArrayList();
try
{
roleValue.add(new ObjectName(":a=a"));
roleValue.add(new ObjectName(":b=b"));
}
catch (MalformedObjectNameException mfone)
{
fail(mfone.toString());
}
RoleUnresolved roleUnresolved = new RoleUnresolved("RoleName", roleValue,
RoleStatus.NO_ROLE_WITH_NAME);
RoleUnresolved roleUnresolved2 = null;
try
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(roleUnresolved);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
roleUnresolved2 = (RoleUnresolved) ois.readObject();
}
catch (IOException ioe)
{
fail(ioe.toString());
}
catch (ClassNotFoundException cnfe)
{
fail(cnfe.toString());
}
assertEquals(roleUnresolved.getRoleName(), roleUnresolved2.getRoleName());
assertEquals(roleUnresolved.getRoleValue(), roleUnresolved2.getRoleValue());
}
}