From 4b9be0f985d5a96209d97456689e3fbe0291da25 Mon Sep 17 00:00:00 2001 From: Mathieu Bastian Date: Sat, 25 Mar 2023 22:01:38 +0100 Subject: [PATCH] Add processor tests --- .../io/importer/impl/ColumnDraftImpl.java | 5 + modules/ImportPlugin/pom.xml | 6 + .../plugin/DefaultProcessorTest.java | 2 +- .../plugin/DynamicEdgeWeightTest.java | 69 +++++++++++ .../io/processor/plugin/EdgeWeightTest.java | 107 ++++++++++++++++++ .../org/gephi/io/processor/plugin/Utils.java | 29 +++++ 6 files changed, 217 insertions(+), 1 deletion(-) rename modules/ImportPlugin/src/test/java/org/gephi/io/{importer => processor}/plugin/DefaultProcessorTest.java (98%) create mode 100644 modules/ImportPlugin/src/test/java/org/gephi/io/processor/plugin/DynamicEdgeWeightTest.java create mode 100644 modules/ImportPlugin/src/test/java/org/gephi/io/processor/plugin/EdgeWeightTest.java create mode 100644 modules/ImportPlugin/src/test/java/org/gephi/io/processor/plugin/Utils.java 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 70cccb6bb..01b90032e 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 a6296f146..97af5592e 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 8a81f57f4..2b0ebceab 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 000000000..12c82be10 --- /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 000000000..738adf89d --- /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 000000000..23597b519 --- /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; + } + } +} -- GitLab