diff --git a/modules/ImportAPI/src/main/java/org/gephi/io/importer/impl/ColumnDraftImpl.java b/modules/ImportAPI/src/main/java/org/gephi/io/importer/impl/ColumnDraftImpl.java
index 70cccb6bbce9bd36abe2e40284a52a94bc968092..01b90032ec8ad42d14afd757b5ac1f4110064a23 100644
--- a/modules/ImportAPI/src/main/java/org/gephi/io/importer/impl/ColumnDraftImpl.java
+++ b/modules/ImportAPI/src/main/java/org/gephi/io/importer/impl/ColumnDraftImpl.java
@@ -141,4 +141,9 @@ public class ColumnDraftImpl implements ColumnDraft {
public boolean isDynamic() {
return dynamic;
}
+
+ @Override
+ public String toString() {
+ return title + " (" + typeClass.toString() + ")";
+ }
}
diff --git a/modules/ImportPlugin/pom.xml b/modules/ImportPlugin/pom.xml
index a6296f1469e3d360ca7d2e27cefa6c03cf26ca45..97af5592eb3f415834e67a6254a33042e2ea0c8d 100644
--- a/modules/ImportPlugin/pom.xml
+++ b/modules/ImportPlugin/pom.xml
@@ -77,6 +77,12 @@
org-netbeans-modules-masterfs
test
+
+ org.gephi
+ graph-api
+ test
+ test-jar
+
org.gephi
io-exporter-plugin
diff --git a/modules/ImportPlugin/src/test/java/org/gephi/io/importer/plugin/DefaultProcessorTest.java b/modules/ImportPlugin/src/test/java/org/gephi/io/processor/plugin/DefaultProcessorTest.java
similarity index 98%
rename from modules/ImportPlugin/src/test/java/org/gephi/io/importer/plugin/DefaultProcessorTest.java
rename to modules/ImportPlugin/src/test/java/org/gephi/io/processor/plugin/DefaultProcessorTest.java
index 8a81f57f41189a40914820ab8a9f63ebe959037b..2b0ebceabd36d9534c97b2ebe600413540cb3ba7 100644
--- a/modules/ImportPlugin/src/test/java/org/gephi/io/importer/plugin/DefaultProcessorTest.java
+++ b/modules/ImportPlugin/src/test/java/org/gephi/io/processor/plugin/DefaultProcessorTest.java
@@ -1,4 +1,4 @@
-package org.gephi.io.importer.plugin;
+package org.gephi.io.processor.plugin;
import org.gephi.graph.api.GraphModel;
import org.gephi.graph.api.Node;
diff --git a/modules/ImportPlugin/src/test/java/org/gephi/io/processor/plugin/DynamicEdgeWeightTest.java b/modules/ImportPlugin/src/test/java/org/gephi/io/processor/plugin/DynamicEdgeWeightTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..12c82be10867bcbe3a1f17ab7458957f11b01599
--- /dev/null
+++ b/modules/ImportPlugin/src/test/java/org/gephi/io/processor/plugin/DynamicEdgeWeightTest.java
@@ -0,0 +1,69 @@
+package org.gephi.io.processor.plugin;
+
+import java.util.Collections;
+import org.gephi.graph.GraphGenerator;
+import org.gephi.graph.api.Configuration;
+import org.gephi.graph.api.Edge;
+import org.gephi.graph.api.TimeRepresentation;
+import org.gephi.graph.api.types.TimestampDoubleMap;
+import org.gephi.io.importer.impl.EdgeDraftImpl;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class DynamicEdgeWeightTest {
+
+ private Utils.TestProcessor processor;
+ private EdgeDraftImpl edgeDraft;
+ private Edge edge;
+
+ @Before
+ public void setUp() {
+ Configuration configuration = new Configuration();
+ configuration.setEdgeWeightType(TimestampDoubleMap.class);
+ configuration.setTimeRepresentation(TimeRepresentation.TIMESTAMP);
+ processor = new Utils.TestProcessor(
+ GraphGenerator.build(configuration).generateTinyGraph().getGraphModel()
+ );
+ edgeDraft = new EdgeDraftImpl(processor.getContainer(), GraphGenerator.FIRST_EDGE);
+ processor.getContainer().setTimeRepresentation(TimeRepresentation.TIMESTAMP);
+ edge = processor.graphModel.getGraph().getEdge(GraphGenerator.FIRST_EDGE);
+
+ }
+
+ @Test
+ public void testNewEdge() {
+ processor.getContainer().addEdgeColumn("weight", Double.class, true);
+
+ edgeDraft.setValue("weight", new TimestampDoubleMap(new double[] {2.0}, new double[] {4.0}));
+
+ processor.flushEdgeWeight(processor.getContainer(), edgeDraft, edge, true);
+
+ Assert.assertEquals(Collections.EMPTY_LIST, processor.getReport().getIssuesList(100));
+ Assert.assertEquals(4.0, edge.getWeight(2.0), 0.0);
+ }
+
+ @Test
+ public void testMergeWeight() {
+ edge.setWeight(5.0, 1.0);
+ processor.getContainer().addEdgeColumn("weight", Double.class, true);
+ edgeDraft.setValue("weight", new TimestampDoubleMap(new double[] {2.0}, new double[] {4.0}));
+
+ processor.flushEdgeWeight(processor.getContainer(), edgeDraft, edge, false);
+
+ Assert.assertEquals(Collections.EMPTY_LIST, processor.getReport().getIssuesList(100));
+ Assert.assertEquals(4.0, edge.getWeight(2.0), 0.0);
+ Assert.assertEquals(5.0, edge.getWeight(1.0), 0.0);
+ }
+
+ @Test
+ public void testPreserveEdgeWeight() {
+ processor.getContainer().addEdgeColumn("weight", Double.class, true);
+ edge.setWeight(5.0, 1.0);
+
+ processor.flushEdgeWeight(processor.getContainer(), edgeDraft, edge, false);
+
+ Assert.assertEquals(Collections.EMPTY_LIST, processor.getReport().getIssuesList(100));
+ Assert.assertEquals(5.0, edge.getWeight(1.0), 0.0);
+ }
+}
diff --git a/modules/ImportPlugin/src/test/java/org/gephi/io/processor/plugin/EdgeWeightTest.java b/modules/ImportPlugin/src/test/java/org/gephi/io/processor/plugin/EdgeWeightTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..738adf89da8a8ea1a4454e69e1d1ed53aff938b2
--- /dev/null
+++ b/modules/ImportPlugin/src/test/java/org/gephi/io/processor/plugin/EdgeWeightTest.java
@@ -0,0 +1,107 @@
+package org.gephi.io.processor.plugin;
+
+import org.gephi.graph.GraphGenerator;
+import org.gephi.graph.api.Edge;
+import org.gephi.io.importer.api.EdgeMergeStrategy;
+import org.gephi.io.importer.impl.EdgeDraftImpl;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class EdgeWeightTest {
+
+ private Utils.TestProcessor processor;
+ private EdgeDraftImpl edgeDraft;
+ private Edge edge;
+
+ @Before
+ public void setUp() {
+ processor = new Utils.TestProcessor(
+ GraphGenerator.build().generateTinyGraph().getGraphModel()
+ );
+ edgeDraft = new EdgeDraftImpl(processor.getContainer(), GraphGenerator.FIRST_EDGE);
+ edge = processor.graphModel.getGraph().getEdge(GraphGenerator.FIRST_EDGE);
+ }
+
+ @Test
+ public void testSumMergeStrategy() {
+ edgeDraft.setWeight(42.0);
+
+ processor.flushEdgeWeight(processor.getContainer(), edgeDraft, edge, false);
+
+ Assert.assertEquals(edgeDraft.getWeight() + 1, edge.getWeight(), 0.0);
+ }
+
+ @Test
+ public void testFirstMergeStrategy() {
+ edgeDraft.setWeight(42.0);
+ processor.getContainer().setEdgesMergeStrategy(EdgeMergeStrategy.FIRST);
+
+ processor.flushEdgeWeight(processor.getContainer(), edgeDraft, edge, false);
+
+ Assert.assertEquals(1, edge.getWeight(), 0.0);
+ }
+
+ @Test
+ public void testLastMergeStrategy() {
+ edgeDraft.setWeight(42.0);
+ processor.getContainer().setEdgesMergeStrategy(EdgeMergeStrategy.LAST);
+
+ processor.flushEdgeWeight(processor.getContainer(), edgeDraft, edge, false);
+
+ Assert.assertEquals(edgeDraft.getWeight(), edge.getWeight(), 0.0);
+ }
+
+ @Test
+ public void testNoMergeStrategy() {
+ edgeDraft.setWeight(42.0);
+ processor.getContainer().setEdgesMergeStrategy(EdgeMergeStrategy.NO_MERGE);
+
+ processor.flushEdgeWeight(processor.getContainer(), edgeDraft, edge, false);
+
+ Assert.assertEquals(1, edge.getWeight(), 0.0);
+ }
+
+ @Test
+ public void testAvgMergeStrategy() {
+ edgeDraft.setWeight(42.0);
+ processor.getContainer().setEdgesMergeStrategy(EdgeMergeStrategy.AVG);
+
+ processor.flushEdgeWeight(processor.getContainer(), edgeDraft, edge, false);
+
+ Assert.assertEquals((edgeDraft.getWeight() + 1) / 2, edge.getWeight(), 0.0);
+ }
+
+ @Test
+ public void testAvgMergeStrategyWithThree() {
+ processor.getContainer().setEdgesMergeStrategy(EdgeMergeStrategy.AVG);
+ edge.setWeight(4);
+
+ edgeDraft = new EdgeDraftImpl(processor.getContainer(), GraphGenerator.FIRST_EDGE);
+ edgeDraft.setWeight(10.0);
+ processor.flushEdgeWeight(processor.getContainer(), edgeDraft, edge, false);
+ processor.flushEdgeWeight(processor.getContainer(), edgeDraft, edge, false);
+
+ Assert.assertEquals((24.0) / 3, edge.getWeight(), 0.0);
+ }
+
+ @Test
+ public void testMinMergeStrategy() {
+ edgeDraft.setWeight(42.0);
+ processor.getContainer().setEdgesMergeStrategy(EdgeMergeStrategy.MIN);
+
+ processor.flushEdgeWeight(processor.getContainer(), edgeDraft, edge, false);
+
+ Assert.assertEquals(1, edge.getWeight(), 0.0);
+ }
+
+ @Test
+ public void testMaxMergeStrategy() {
+ edgeDraft.setWeight(42.0);
+ processor.getContainer().setEdgesMergeStrategy(EdgeMergeStrategy.MAX);
+
+ processor.flushEdgeWeight(processor.getContainer(), edgeDraft, edge, false);
+
+ Assert.assertEquals(edgeDraft.getWeight(), edge.getWeight(), 0.0);
+ }
+}
diff --git a/modules/ImportPlugin/src/test/java/org/gephi/io/processor/plugin/Utils.java b/modules/ImportPlugin/src/test/java/org/gephi/io/processor/plugin/Utils.java
new file mode 100644
index 0000000000000000000000000000000000000000..23597b519822bc1f4739f57f2df85c2fad8f94c1
--- /dev/null
+++ b/modules/ImportPlugin/src/test/java/org/gephi/io/processor/plugin/Utils.java
@@ -0,0 +1,29 @@
+package org.gephi.io.processor.plugin;
+
+import org.gephi.graph.api.GraphModel;
+import org.gephi.io.importer.impl.ImportContainerImpl;
+
+public class Utils {
+
+ protected static class TestProcessor extends AbstractProcessor {
+
+ public TestProcessor(GraphModel graphModel) {
+ this.graphModel = graphModel;
+ this.containers = new ImportContainerImpl[] {new ImportContainerImpl()};
+ }
+
+ public ImportContainerImpl getContainer() {
+ return (ImportContainerImpl) containers[0];
+ }
+
+ @Override
+ public void process() {
+
+ }
+
+ @Override
+ public String getDisplayName() {
+ return null;
+ }
+ }
+}