package org.jgroups.tests;
import org.jgroups.Global;
import org.jgroups.conf.PropertyConverter;
import org.jgroups.conf.PropertyConverters;
import org.jgroups.stack.Protocol;
import org.testng.annotations.Test;
import java.util.Arrays;
import java.util.List;
/**
* @author Bela Ban
*/
@Test(groups=Global.FUNCTIONAL, sequential=false)
public class PropertyConvertersTest {
public static void testPrimitiveTypes() throws Exception {
PropertyConverter conv=new PropertyConverters.Default();
check(null, Boolean.TYPE, "true", true, conv);
check(null, Integer.TYPE, "322649", 322649, conv);
check(null, Long.TYPE, "322649", 322649L, conv);
}
public static void testLongArray() throws Exception {
PropertyConverter conv=new PropertyConverters.LongArray();
long[] array={1,2,3,4,5};
checkArray(null, array.getClass(), "1,2,3,4,5", array, conv);
}
/** Cannot really test list of eth0,eth1,lo, because the list differs from host to host
*
* @throws Exception
*/
public static void testNetworkList() throws Exception {
PropertyConverter conv=new PropertyConverters.NetworkInterfaceList();
Object tmp;
try {
tmp=conv.convert(null, List.class, "bela", "lo", false);
}
catch(Throwable t) {
tmp=conv.convert(null, List.class, "bela", "lo0", false); // when running on Mac OS
}
Object str=conv.toString(tmp);
System.out.println("str = " + str);
assert str.equals("lo") || str.equals("lo0");
}
private static void check(Protocol protocol, Class<?> type, String prop, Object result, PropertyConverter converter) throws Exception {
Object tmp=converter.convert(protocol, type, "bela", prop, false);
assert tmp.equals(result) : " conversion result: " + tmp + " (" + tmp.getClass() + ")" +
", expected result: " + result + " (" + result.getClass() + ")";
String output=converter.toString(tmp);
assert output.equals(prop) : "output=" + output + ", prop=" + prop;
}
private static void checkArray(Protocol protocol, Class<?> type, String prop, Object result, PropertyConverter converter) throws Exception {
Object tmp=converter.convert(protocol, type, "bela", prop, false);
assert Arrays.equals((long[])tmp, (long[])result) : " conversion result: " + tmp + " (" + tmp.getClass() + ")" +
", expected result: " + result + " (" + result.getClass() + ")";
String output=converter.toString(tmp);
assert output.equals(prop) : "output=" + output + ", prop=" + prop;
}
}