package org.gradoop.common.model.impl.properties;
import com.google.common.collect.Lists;
import org.junit.Test;
import java.util.List;
import java.util.Map;
import static org.gradoop.common.GradoopTestUtils.*;
import static org.junit.Assert.*;
@SuppressWarnings("Duplicates")
public class PropertiesTest {
@Test
public void testCreateFromMap() throws Exception {
Properties properties = Properties.createFromMap(SUPPORTED_PROPERTIES);
assertEquals(SUPPORTED_PROPERTIES.size(), properties.size());
for (Map.Entry<String, Object> entry : SUPPORTED_PROPERTIES.entrySet()) {
String k = entry.getKey();
assertTrue(properties.containsKey(k));
assertEquals(entry.getValue(), properties.get(k).getObject());
}
}
@Test
public void testGetKeys() throws Exception {
Properties properties = Properties.createFromMap(SUPPORTED_PROPERTIES);
List<String> keyList = Lists.newArrayList(properties.getKeys());
assertEquals(SUPPORTED_PROPERTIES.size(), keyList.size());
for (String expectedKey : SUPPORTED_PROPERTIES.keySet()) {
assertTrue("key was not in key list", keyList.contains(expectedKey));
}
}
@Test
public void testContainsKey() throws Exception {
Properties properties = Properties.create();
assertFalse("unexpected key found", properties.containsKey(KEY_1));
properties.set(KEY_1, BOOL_VAL_1);
assertTrue("key not found", properties.containsKey(KEY_1));
assertFalse("unexpected key found", properties.containsKey("1234"));
}
@Test
public void testGet() throws Exception {
Properties properties = Properties.createFromMap(SUPPORTED_PROPERTIES);
assertNotNull("property was null", properties.get(KEY_1));
assertEquals("wrong property", BOOL_VAL_1, properties.get(KEY_1).getBoolean());
assertNull("unexpected property", properties.get("1234"));
}
@Test
public void testSet() throws Exception {
Properties properties = Properties.create();
properties.set(Property.create(KEY_1, BOOL_VAL_1));
assertEquals(BOOL_VAL_1, properties.get(KEY_1).getObject());
// override
properties.set(Property.create(KEY_1, INT_VAL_2));
assertEquals(INT_VAL_2, properties.get(KEY_1).getObject());
}
@Test
public void testSet1() throws Exception {
Properties properties = Properties.create();
properties.set(KEY_1, PropertyValue.create(BOOL_VAL_1));
assertEquals(BOOL_VAL_1, properties.get(KEY_1).getObject());
// override
properties.set(KEY_1, PropertyValue.create(INT_VAL_2));
assertEquals(INT_VAL_2, properties.get(KEY_1).getObject());
}
@Test
public void testSet2() throws Exception {
Properties properties = Properties.create();
properties.set(KEY_1, BOOL_VAL_1);
assertEquals(BOOL_VAL_1, properties.get(KEY_1).getObject());
// override
properties.set(KEY_1, INT_VAL_2);
assertEquals(INT_VAL_2, properties.get(KEY_1).getObject());
}
@Test
public void testRemove() throws Exception {
Properties properties = Properties.create();
PropertyValue removed;
properties.set(KEY_1, BOOL_VAL_1);
removed = properties.remove(KEY_1);
assertEquals(0, properties.size());
assertNotNull(removed);
properties.set(KEY_1, BOOL_VAL_1);
removed = properties.remove(KEY_2);
assertEquals(1, properties.size());
assertNull(removed);
}
@Test
public void testRemove2() throws Exception {
Properties properties = Properties.create();
PropertyValue removed;
properties.set(KEY_1, BOOL_VAL_1);
removed = properties.remove(Property.create(KEY_1, BOOL_VAL_1));
assertEquals(0, properties.size());
assertNotNull(removed);
properties.set(KEY_1, BOOL_VAL_1);
removed = properties.remove(Property.create(KEY_2, BOOL_VAL_1));
assertEquals(1, properties.size());
assertNull(removed);
}
@Test
public void testClear() throws Exception {
Properties properties = Properties.create();
properties.set(KEY_1, BOOL_VAL_1);
properties.clear();
assertEquals("wrong size", 0, properties.size());
}
@Test
public void testSize() throws Exception {
Properties properties = Properties.create();
assertEquals("wrong size", 0, properties.size());
properties.set(KEY_1, BOOL_VAL_1);
assertEquals("wrong size", 1, properties.size());
properties.set(KEY_2, INT_VAL_2);
assertEquals("wrong size", 2, properties.size());
// add existing
properties.set(KEY_2, LONG_VAL_3);
assertEquals("wrong size", 2, properties.size());
}
@Test
public void testIsEmpty() throws Exception {
Properties properties = Properties.create();
assertTrue("properties was not empty", properties.isEmpty());
properties.set(KEY_1, BOOL_VAL_1);
assertFalse("properties was empty", properties.isEmpty());
}
@Test
public void testEqualsAndHashCode() throws Exception {
Properties properties1 = Properties.createFromMap(SUPPORTED_PROPERTIES);
Properties properties2 = Properties.createFromMap(SUPPORTED_PROPERTIES);
Properties properties3 = Properties.createFromMap(SUPPORTED_PROPERTIES);
// override property
properties3.set(KEY_1, INT_VAL_2);
assertTrue("properties were not equal", properties1.equals(properties2));
assertFalse("properties were equal", properties1.equals(properties3));
assertTrue("different hash code", properties1.hashCode() == properties2.hashCode());
assertTrue("same hash code", properties1.hashCode() != properties3.hashCode());
properties1 = Properties.create();
properties1.set(KEY_1, BOOL_VAL_1);
properties1.set(KEY_2, INT_VAL_2);
properties2 = Properties.create();
properties2.set(KEY_1, BOOL_VAL_1);
assertFalse("properties were equal", properties1.equals(properties2));
assertTrue("same hash code", properties1.hashCode() != properties2.hashCode());
}
@Test
public void testIterator() throws Exception {
Properties properties = Properties.createFromMap(SUPPORTED_PROPERTIES);
for (Property property : properties) {
assertTrue(SUPPORTED_PROPERTIES.containsKey(property.getKey()));
assertEquals(SUPPORTED_PROPERTIES.get(property.getKey()),
property.getValue().getObject());
}
}
@Test
public void testWriteAndReadFields() throws Exception {
Properties propertiesIn = Properties.createFromMap(SUPPORTED_PROPERTIES);
Properties propertiesOut = writeAndReadFields(Properties.class, propertiesIn);
assertEquals(propertiesIn, propertiesOut);
}
}