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.Role;
import junit.framework.TestCase;
public class RoleTestCase
extends TestCase
{
public RoleTestCase(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);
Role role = new Role("RoleName", roleValue);
assertEquals("RoleName", role.getRoleName());
assertEquals(roleValue, role.getRoleValue());
role.setRoleName("Changed");
assertEquals("Changed", role.getRoleName());
ArrayList roleValue2 = new ArrayList();
ObjectName c = new ObjectName(":c=c");
ObjectName d = new ObjectName(":d=d");
roleValue2.add(c);
roleValue2.add(d);
role.setRoleValue(roleValue2);
assertEquals(roleValue2, role.getRoleValue());
}
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);
Role role = new Role("XYZZY", roleValue);
String result = Role.roleValueToString(roleValue);
if (result.lastIndexOf(":a=a") == -1)
fail("Missing object name :a=a in roleValueToString");
if (result.lastIndexOf(":b=b") == -1)
fail("Missing object name :b=b in roleValueToString");
result = role.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 Role(null, roleValue);
}
catch (IllegalArgumentException e)
{
caught = true;
}
if (caught == false)
fail ("Constructor accepts null role name");
caught = false;
try
{
new Role("RoleName", null);
}
catch (IllegalArgumentException e)
{
caught = true;
}
if (caught == false)
fail ("Constructor accepts null role value");
Role role = new Role("RoleName", roleValue);
caught = false;
try
{
role.setRoleName(null);
}
catch (IllegalArgumentException e)
{
caught = true;
}
if (caught == false)
fail ("setRoleName accepts null");
caught = false;
try
{
role.setRoleValue(null);
}
catch (IllegalArgumentException e)
{
caught = true;
}
if (caught == false)
fail ("setRoleValue accepts null");
caught = false;
try
{
Role.roleValueToString(null);
}
catch (IllegalArgumentException e)
{
caught = true;
}
if (caught == false)
fail ("roleValueToString accepts null");
}
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());
}
Role role = new Role("RoleName", roleValue);
Role role2 = (Role) role.clone();
assertEquals(role.getRoleName(), role2.getRoleName());
assertEquals(role.getRoleValue(), role2.getRoleValue());
if(role.getRoleValue() == role2.getRoleValue())
fail("Role.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());
}
Role role = new Role("RoleName", roleValue);
Role role2 = null;
try
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(role);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
role2 = (Role) ois.readObject();
}
catch (IOException ioe)
{
fail(ioe.toString());
}
catch (ClassNotFoundException cnfe)
{
fail(cnfe.toString());
}
assertEquals(role.getRoleName(), role2.getRoleName());
assertEquals(role.getRoleValue(), role2.getRoleValue());
}
}