X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=bundles%2Forg.simantics.graph%2Ftests%2Forg%2Fsimantics%2Fgraph%2Ftests%2Fdiff%2FTestDiff.java;h=08a498db987e5ec51def1e397d8358a7a0a427df;hb=refs%2Fchanges%2F38%2F238%2F2;hp=f8c2a8ec9c4bdb3d4aa903e0a281b04e33cd3a20;hpb=24e2b34260f219f0d1644ca7a138894980e25b14;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.graph/tests/org/simantics/graph/tests/diff/TestDiff.java b/bundles/org.simantics.graph/tests/org/simantics/graph/tests/diff/TestDiff.java index f8c2a8ec9..08a498db9 100644 --- a/bundles/org.simantics.graph/tests/org/simantics/graph/tests/diff/TestDiff.java +++ b/bundles/org.simantics.graph/tests/org/simantics/graph/tests/diff/TestDiff.java @@ -1,87 +1,87 @@ -package org.simantics.graph.tests.diff; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Random; - -import org.simantics.databoard.Bindings; -import org.simantics.databoard.type.Datatype; -import org.simantics.graph.diff.Diff; -import org.simantics.graph.representation.External; -import org.simantics.graph.representation.Identity; -import org.simantics.graph.representation.Internal; -import org.simantics.graph.representation.Optional; -import org.simantics.graph.representation.TransferableGraph1; -import org.simantics.graph.representation.Value; - -public class TestDiff { - - public static TransferableGraph1 load(String name) throws IOException { - InputStream stream = TestDiff.class.getResourceAsStream(name); - Bindings.getSerializerUnchecked(Datatype.class).skip(stream); - TransferableGraph1 result = (TransferableGraph1)TransferableGraph1.SERIALIZER.deserialize(stream); - stream.close(); - return result; - } - - public static int[] randomPermutation(int size) { - Random rand = new Random(); - int[] permutation = new int[size]; - for(int i=0;i0;--i) { - int j = rand.nextInt(i+1); - int temp = permutation[i]; - permutation[i] = permutation[j]; - permutation[j] = temp; - } - return permutation; - } - - public static void shuffle(TransferableGraph1 tg) { - int[] permutation = randomPermutation(tg.resourceCount); - - { - int[] statements = tg.statements; - for(int i=0;i= 0) - statements[i] = permutation[r]; - } - } - - for(Identity id : tg.identities) { - id.resource = permutation[id.resource]; - if(id.definition instanceof External) { - External def = (External)id.definition; - def.parent = permutation[def.parent]; - } - else if(id.definition instanceof Internal) { - Internal def = (Internal)id.definition; - def.parent = permutation[def.parent]; - } - else if(id.definition instanceof Optional) { - Optional def = (Optional)id.definition; - def.parent = permutation[def.parent]; - } - } - - for(Value value : tg.values) { - value.resource = permutation[value.resource]; - } - } - - public static void main(String[] args) throws Exception { - TransferableGraph1 graphOld = load("layer0.tg"); - TransferableGraph1 graphNew = load("layer0.tg"); - shuffle(graphNew); - long begin = System.nanoTime(); - Diff diff = new Diff(graphOld, graphNew); - /*TransferableGraphDelta1 result =*/ diff.diff(); - long end = System.nanoTime(); - - System.out.println("Total time: " + (end - begin)*1e-6 + "ms"); - //result.print(); - } - -} +package org.simantics.graph.tests.diff; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Random; + +import org.simantics.databoard.Bindings; +import org.simantics.databoard.type.Datatype; +import org.simantics.graph.diff.Diff; +import org.simantics.graph.representation.External; +import org.simantics.graph.representation.Identity; +import org.simantics.graph.representation.Internal; +import org.simantics.graph.representation.Optional; +import org.simantics.graph.representation.TransferableGraph1; +import org.simantics.graph.representation.Value; + +public class TestDiff { + + public static TransferableGraph1 load(String name) throws IOException { + InputStream stream = TestDiff.class.getResourceAsStream(name); + Bindings.getSerializerUnchecked(Datatype.class).skip(stream); + TransferableGraph1 result = (TransferableGraph1)TransferableGraph1.SERIALIZER.deserialize(stream); + stream.close(); + return result; + } + + public static int[] randomPermutation(int size) { + Random rand = new Random(); + int[] permutation = new int[size]; + for(int i=0;i0;--i) { + int j = rand.nextInt(i+1); + int temp = permutation[i]; + permutation[i] = permutation[j]; + permutation[j] = temp; + } + return permutation; + } + + public static void shuffle(TransferableGraph1 tg) { + int[] permutation = randomPermutation(tg.resourceCount); + + { + int[] statements = tg.statements; + for(int i=0;i= 0) + statements[i] = permutation[r]; + } + } + + for(Identity id : tg.identities) { + id.resource = permutation[id.resource]; + if(id.definition instanceof External) { + External def = (External)id.definition; + def.parent = permutation[def.parent]; + } + else if(id.definition instanceof Internal) { + Internal def = (Internal)id.definition; + def.parent = permutation[def.parent]; + } + else if(id.definition instanceof Optional) { + Optional def = (Optional)id.definition; + def.parent = permutation[def.parent]; + } + } + + for(Value value : tg.values) { + value.resource = permutation[value.resource]; + } + } + + public static void main(String[] args) throws Exception { + TransferableGraph1 graphOld = load("layer0.tg"); + TransferableGraph1 graphNew = load("layer0.tg"); + shuffle(graphNew); + long begin = System.nanoTime(); + Diff diff = new Diff(graphOld, graphNew); + /*TransferableGraphDelta1 result =*/ diff.diff(); + long end = System.nanoTime(); + + System.out.println("Total time: " + (end - begin)*1e-6 + "ms"); + //result.print(); + } + +}