package org.jcrom;
import javafx.beans.property.StringProperty;
import org.jcrom.entities.JavaFXEntity;
import org.jcrom.util.JavaFXUtils;
import org.junit.Test;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.junit.Assert.*;
/**
* User: Antoine Mischler <antoine@dooapp.com>
* Date: 17/10/2014
* Time: 16:19
*/
public class TestsJavaFXUtils {
@Test
public void testGetObject() throws NoSuchFieldException, IllegalAccessException {
JavaFXEntity javaFXEntity = new JavaFXEntity();
javaFXEntity.setStringFX("testFX");
javaFXEntity.setString("test");
Field fieldFX = JavaFXEntity.class.getField("stringFX");
Field field = JavaFXEntity.class.getField("string");
assertEquals("testFX", JavaFXUtils.getObject(fieldFX, javaFXEntity));
assertEquals("test", JavaFXUtils.getObject(field, javaFXEntity));
}
@Test
public void testSetObject() throws NoSuchFieldException, IllegalAccessException {
JavaFXEntity javaFXEntity = new JavaFXEntity();
javaFXEntity.setStringFX("");
javaFXEntity.setString("");
Field fieldFX = JavaFXEntity.class.getField("stringFX");
Field field = JavaFXEntity.class.getField("string");
JavaFXUtils.setObject(fieldFX, javaFXEntity, "testFX");
JavaFXUtils.setObject(field, javaFXEntity, "test");
assertEquals("testFX", javaFXEntity.getStringFX());
assertEquals("test", javaFXEntity.getString());
}
@Test
public void testSetObjectList() throws NoSuchFieldException, IllegalAccessException {
JavaFXEntity javaFXEntity = new JavaFXEntity();
Field fieldFX = JavaFXEntity.class.getField("listFX");
List<String> content = Arrays.asList("a", "b", "c");
JavaFXUtils.setObject(fieldFX, javaFXEntity, content);
assertArrayEquals(new Object[]{"a", "b", "c"}, javaFXEntity.getListFX().toArray());
}
@Test
public void testSetObjectMap() throws NoSuchFieldException, IllegalAccessException {
JavaFXEntity javaFXEntity = new JavaFXEntity();
Field fieldFX = JavaFXEntity.class.getField("mapFX");
Map<String, Double> content = new HashMap<String, Double>();
content.put("a", 1.0);
content.put("b", 2.0);
content.put("c", 3.0);
JavaFXUtils.setObject(fieldFX, javaFXEntity, content);
assertArrayEquals(new Object[]{"a", "b", "c"}, javaFXEntity.getMapFX().keySet().toArray());
assertArrayEquals(new Object[]{1.0, 2.0, 3.0}, javaFXEntity.getMapFX().values().toArray());
}
@Test
public void testIsList() throws NoSuchFieldException {
JavaFXEntity javaFXEntity = new JavaFXEntity();
Field fieldStringFX = JavaFXEntity.class.getField("stringFX");
Field listFX = JavaFXEntity.class.getField("listFX");
Field list = JavaFXEntity.class.getField("list");
assertTrue(JavaFXUtils.isList(listFX));
assertTrue(JavaFXUtils.isList(list));
assertFalse(JavaFXUtils.isList(fieldStringFX));
}
@Test
public void testIsMap() throws NoSuchFieldException {
JavaFXEntity javaFXEntity = new JavaFXEntity();
Field fieldStringFX = JavaFXEntity.class.getField("stringFX");
Field mapFX = JavaFXEntity.class.getField("mapFX");
Field map = JavaFXEntity.class.getField("map");
assertTrue(JavaFXUtils.isMap(mapFX));
assertTrue(JavaFXUtils.isMap(map));
assertFalse(JavaFXUtils.isMap(fieldStringFX));
}
@Test
public void testIsNotString() throws NoSuchFieldException {
JavaFXEntity javaFXEntity = new JavaFXEntity();
Field fieldStringFX = JavaFXEntity.class.getField("stringFX");
Field fieldString = JavaFXEntity.class.getField("string");
Field listFX = JavaFXEntity.class.getField("listFX");
assertTrue(JavaFXUtils.isNotString(listFX));
assertFalse(JavaFXUtils.isNotString(fieldString));
assertFalse(JavaFXUtils.isNotString(fieldStringFX));
}
@Test
public void testGetType() throws NoSuchFieldException {
JavaFXEntity javaFXEntity = new JavaFXEntity();
Field fieldStringFX = JavaFXEntity.class.getField("stringFX");
Field fieldString = JavaFXEntity.class.getField("string");
Field fieldObjectProperty = JavaFXEntity.class.getField("objectProperty");
assertEquals(String.class, JavaFXUtils.getType(fieldString, javaFXEntity));
assertEquals(StringProperty.class, JavaFXUtils.getType(fieldStringFX, javaFXEntity));
assertEquals(JavaFXEntity.class, JavaFXUtils.getType(fieldObjectProperty, javaFXEntity));
}
}