package fr.prcaen.externalresources.model;
import org.junit.Test;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertFalse;
import static junit.framework.Assert.assertTrue;
public final class ResourceTest {
private static final Resource RESOURCE_BOOLEAN = new Resource(true);
private static final Resource RESOURCE_STRING = new Resource("foo");
private static final Resource RESOURCE_FLOAT = new Resource(2.0f);
private static final Resource RESOURCE_INTEGER = new Resource(1);
private static final Resource RESOURCE_ARRAY = new Resource(new Resource[] {});
@Test public void testIsBoolean() throws Exception {
assertTrue("true is a boolean", RESOURCE_BOOLEAN.isBoolean());
assertFalse("test is a boolean", RESOURCE_STRING.isBoolean());
assertFalse("2.0 is a boolean", RESOURCE_FLOAT.isBoolean());
assertFalse("1 is a boolean", RESOURCE_INTEGER.isBoolean());
assertFalse("resource array is an boolean", RESOURCE_ARRAY.isBoolean());
}
@Test public void testIsNumber() throws Exception {
assertFalse("true is a number", RESOURCE_BOOLEAN.isNumber());
assertFalse("test is a number", RESOURCE_STRING.isNumber());
assertTrue("2.0 is a number", RESOURCE_FLOAT.isNumber());
assertTrue("1 is a number", RESOURCE_INTEGER.isNumber());
assertFalse("resource array is an number", RESOURCE_ARRAY.isNumber());
}
@Test public void testIsString() throws Exception {
assertFalse("true is a string", RESOURCE_BOOLEAN.isString());
assertTrue("test is a string", RESOURCE_STRING.isString());
assertFalse("2.0 is a string", RESOURCE_FLOAT.isString());
assertFalse("1 is a string", RESOURCE_INTEGER.isString());
assertFalse("resource array is a string", RESOURCE_ARRAY.isString());
}
@Test public void testIsArray() throws Exception {
assertFalse("true is an array", RESOURCE_BOOLEAN.isArray());
assertFalse("test is an array", RESOURCE_STRING.isArray());
assertFalse("2.0 is an array", RESOURCE_FLOAT.isArray());
assertFalse("1 is an array", RESOURCE_INTEGER.isArray());
assertTrue("resource array is an array", RESOURCE_ARRAY.isArray());
}
@Test public void testGetAsBoolean() throws Exception {
assertEquals(RESOURCE_BOOLEAN.getAsBoolean(), true);
assertEquals(RESOURCE_STRING.getAsBoolean(), false);
assertEquals(RESOURCE_FLOAT.getAsBoolean(), false);
assertEquals(RESOURCE_INTEGER.getAsBoolean(), false);
assertEquals(RESOURCE_ARRAY.getAsBoolean(), false);
assertEquals(new Resource("true").getAsBoolean(), true);
}
@Test public void testGetAsFloat() throws Exception {
assertEquals(RESOURCE_BOOLEAN.getAsFloat(), null);
assertEquals(RESOURCE_STRING.getAsFloat(), null);
assertEquals(RESOURCE_FLOAT.getAsFloat(), 2.0f);
assertEquals(RESOURCE_INTEGER.getAsFloat(), 1f);
assertEquals(RESOURCE_ARRAY.getAsFloat(), null);
assertEquals(new Resource("3.0").getAsFloat(), 3.0f);
}
@Test public void testGetAsInt() throws Exception {
assertEquals(RESOURCE_BOOLEAN.getAsInt(), null);
assertEquals(RESOURCE_STRING.getAsInt(), null);
assertEquals(RESOURCE_FLOAT.getAsInt(), Integer.valueOf(2));
assertEquals(RESOURCE_INTEGER.getAsInt(), Integer.valueOf(1));
assertEquals(RESOURCE_ARRAY.getAsInt(), null);
assertEquals(new Resource("2").getAsInt(), Integer.valueOf(2));
assertEquals(new Resource("3.0").getAsInt(), null);
}
@Test public void testGetAsString() throws Exception {
assertEquals(RESOURCE_BOOLEAN.getAsString(), "true");
assertEquals(RESOURCE_STRING.getAsString(), "foo");
assertEquals(RESOURCE_FLOAT.getAsString(), "2.0");
assertEquals(RESOURCE_INTEGER.getAsString(), "1");
assertEquals(RESOURCE_ARRAY.getAsString(), null);
}
@Test public void testGetAsIntegerArray() throws Exception {
assertEquals(RESOURCE_BOOLEAN.getAsIntegerArray().length, 0);
assertEquals(RESOURCE_STRING.getAsIntegerArray().length, 0);
assertEquals(RESOURCE_FLOAT.getAsIntegerArray().length, 0);
assertEquals(RESOURCE_INTEGER.getAsIntegerArray().length, 0);
assertEquals(RESOURCE_ARRAY.getAsIntegerArray().length, 0);
assertEquals(new Resource(
new Resource[] { RESOURCE_INTEGER, RESOURCE_FLOAT }).getAsIntegerArray().length, 2);
assertEquals(
new Resource(new Resource[] { RESOURCE_INTEGER, RESOURCE_FLOAT }).getAsIntegerArray()[0],
1);
assertEquals(
new Resource(new Resource[] { RESOURCE_INTEGER, RESOURCE_FLOAT }).getAsIntegerArray()[1],
2);
}
@Test public void testGetAsStringArray() throws Exception {
assertEquals(RESOURCE_BOOLEAN.getAsStringArray().length, 4);
assertEquals(RESOURCE_STRING.getAsStringArray().length, 3);
assertEquals(RESOURCE_FLOAT.getAsStringArray().length, 3);
assertEquals(RESOURCE_INTEGER.getAsStringArray().length, 1);
assertEquals(RESOURCE_ARRAY.getAsStringArray().length, 0);
assertEquals(
new Resource(new Resource[] { RESOURCE_INTEGER, RESOURCE_FLOAT }).getAsStringArray().length,
2);
assertEquals(
new Resource(new Resource[] { RESOURCE_INTEGER, RESOURCE_FLOAT }).getAsStringArray()[0],
"1");
assertEquals(
new Resource(new Resource[] { RESOURCE_INTEGER, RESOURCE_FLOAT }).getAsStringArray()[1],
"2.0");
assertEquals(new Resource((Resource[]) null).getAsStringArray().length, 0);
}
@SuppressWarnings("ConstantConditions") @Test public void testGetAsNumber() throws Exception {
assertEquals(RESOURCE_BOOLEAN.getAsNumber(), null);
assertEquals(new Resource("1").getAsNumber().intValue(), 1);
assertEquals(new Resource("3.1").getAsNumber().floatValue(), 3.1f);
assertEquals(RESOURCE_FLOAT.getAsNumber(), 2.0f);
assertEquals(RESOURCE_INTEGER.getAsNumber(), 1);
assertEquals(RESOURCE_ARRAY.getAsNumber(), null);
}
@Test public void testGetAsArray() throws Exception {
assertEquals(RESOURCE_BOOLEAN.getAsArray().length, 0);
assertEquals(
new Resource(new Resource[] { RESOURCE_INTEGER, RESOURCE_FLOAT }).getAsArray().length, 2);
}
@Test public void testGetAsNonPrimitiveBoolean() throws Exception {
assertEquals(RESOURCE_BOOLEAN.getAsNonPrimitiveBoolean(), Boolean.valueOf(true));
assertEquals(RESOURCE_FLOAT.getAsNonPrimitiveBoolean(), null);
}
}