PageRenderTime 25ms CodeModel.GetById 10ms RepoModel.GetById 1ms app.codeStats 0ms

/projects/geotools-9.2/modules/extension/graph/src/test/java/org/geotools/graph/io/standard/OptDirectedGraphSerializerTest.java

https://gitlab.com/essere.lab.public/qualitas.class-corpus
Java | 192 lines | 124 code | 31 blank | 37 comment | 29 complexity | 82905ee8a4fe7617533306df50febb2c MD5 | raw file
  1. /*
  2. * GeoTools - The Open Source Java GIS Toolkit
  3. * http://geotools.org
  4. *
  5. * (C) 2002-2008, Open Source Geospatial Foundation (OSGeo)
  6. *
  7. * This library is free software; you can redistribute it and/or
  8. * modify it under the terms of the GNU Lesser General Public
  9. * License as published by the Free Software Foundation;
  10. * version 2.1 of the License.
  11. *
  12. * This library is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  15. * Lesser General Public License for more details.
  16. */
  17. package org.geotools.graph.io.standard;
  18. import java.io.File;
  19. import java.util.Map;
  20. import junit.framework.TestCase;
  21. import org.geotools.graph.GraphTestUtil;
  22. import org.geotools.graph.build.opt.OptDirectedGraphBuilder;
  23. import org.geotools.graph.build.opt.OptGraphBuilder;
  24. import org.geotools.graph.structure.DirectedNode;
  25. import org.geotools.graph.structure.Graph;
  26. import org.geotools.graph.structure.GraphVisitor;
  27. import org.geotools.graph.structure.Graphable;
  28. /**
  29. *
  30. *
  31. * @source $URL$
  32. */
  33. public class OptDirectedGraphSerializerTest extends TestCase {
  34. private OptDirectedGraphBuilder m_builder;
  35. private OptDirectedGraphBuilder m_rebuilder;
  36. private SerializedReaderWriter m_serializer;
  37. public OptDirectedGraphSerializerTest(String name) {
  38. super(name);
  39. }
  40. protected void setUp() throws Exception {
  41. super.setUp();
  42. m_builder = createBuilder();
  43. m_rebuilder = createBuilder();
  44. m_serializer = new SerializedReaderWriter();
  45. m_serializer.setProperty(SerializedReaderWriter.BUILDER, rebuilder());
  46. }
  47. /**
  48. * Create a simple graph with no bifurcations and serialize, then deserialize
  49. * <BR>
  50. * <BR>
  51. * Expected: 1. before and after graph should have same structure.
  52. *
  53. */
  54. public void test_0() {
  55. final int nnodes = 100;
  56. Object[] obj = GraphTestUtil.buildNoBifurcations(builder(), nnodes);
  57. final Map node2id = (Map)obj[2];
  58. final Map edge2id = (Map)obj[3];
  59. try {
  60. File victim = File.createTempFile( "graph", null );
  61. victim.deleteOnExit();
  62. serializer().setProperty(SerializedReaderWriter.FILENAME, victim.getAbsolutePath());
  63. serializer().write(builder().getGraph());
  64. Graph before = builder().getGraph();
  65. Graph after = serializer().read();
  66. //ensure same number of nodes and edges
  67. assertTrue(before.getNodes().size() == after.getNodes().size());
  68. assertTrue(before.getEdges().size() == after.getEdges().size());
  69. //ensure two nodes of degree 1, and nnodes-2 nodes of degree 2
  70. GraphVisitor visitor = new GraphVisitor() {
  71. public int visit(Graphable component) {
  72. DirectedNode node = (DirectedNode)component;
  73. if (node.getInDegree() == 0 || node.getOutDegree() == 0)
  74. return(Graph.PASS_AND_CONTINUE);
  75. return(Graph.FAIL_QUERY);
  76. }
  77. };
  78. assertTrue(after.queryNodes(visitor).size() == 2);
  79. visitor = new GraphVisitor() {
  80. public int visit(Graphable component) {
  81. DirectedNode node = (DirectedNode)component;
  82. if (node.getInDegree() == 1 || node.getOutDegree() == 1)
  83. return(Graph.PASS_AND_CONTINUE);
  84. return(Graph.FAIL_QUERY);
  85. }
  86. };
  87. assertTrue(after.getNodesOfDegree(2).size() == nnodes-2);
  88. }
  89. catch(Exception e) {
  90. e.printStackTrace();
  91. assertTrue(false);
  92. }
  93. }
  94. /**
  95. * Create a perfect binary tree, serialize it and deserialize it. <BR>
  96. * <BR>
  97. * Expected: 1. Same structure before and after.
  98. *
  99. */
  100. public void test_1() {
  101. final int k = 5;
  102. GraphTestUtil.buildPerfectBinaryTree(builder(), k);
  103. try {
  104. File victim = File.createTempFile( "graph", null );
  105. victim.deleteOnExit();
  106. serializer().setProperty(SerializedReaderWriter.FILENAME, victim.getAbsolutePath());
  107. serializer().write(builder().getGraph());
  108. Graph before = builder().getGraph();
  109. Graph after = serializer().read();
  110. //ensure same number of nodes and edges
  111. assertTrue(before.getNodes().size() == after.getNodes().size());
  112. assertTrue(before.getEdges().size() == after.getEdges().size());
  113. GraphVisitor visitor = new GraphVisitor() {
  114. public int visit(Graphable component) {
  115. DirectedNode node = (DirectedNode)component;
  116. if (node.getInDegree() == 0 && node.getOutDegree() == 2)
  117. return(Graph.PASS_AND_CONTINUE);
  118. return(Graph.FAIL_QUERY);
  119. }
  120. };
  121. assertTrue(after.queryNodes(visitor).size() == 1); //root
  122. visitor = new GraphVisitor() {
  123. public int visit(Graphable component) {
  124. DirectedNode node = (DirectedNode)component;
  125. if (node.getInDegree() == 1 && node.getOutDegree() == 2)
  126. return(Graph.PASS_AND_CONTINUE);
  127. return(Graph.FAIL_QUERY);
  128. }
  129. };
  130. assertTrue(after.queryNodes(visitor).size() == Math.pow(2,k)-2); //internal
  131. visitor = new GraphVisitor() {
  132. public int visit(Graphable component) {
  133. DirectedNode node = (DirectedNode)component;
  134. if (node.getInDegree() == 1 && node.getOutDegree() == 0)
  135. return(Graph.PASS_AND_CONTINUE);
  136. return(Graph.FAIL_QUERY);
  137. }
  138. };
  139. assertTrue(after.queryNodes(visitor).size() == Math.pow(2,k)); //leaves
  140. }
  141. catch(Exception e) {
  142. e.printStackTrace();
  143. assertTrue(false);
  144. }
  145. }
  146. protected OptDirectedGraphBuilder createBuilder() {
  147. return(new OptDirectedGraphBuilder());
  148. }
  149. protected OptDirectedGraphBuilder builder() {
  150. return(m_builder);
  151. }
  152. protected OptGraphBuilder createRebuilder() {
  153. return(new OptGraphBuilder());
  154. }
  155. protected OptDirectedGraphBuilder rebuilder() {
  156. return(m_rebuilder);
  157. }
  158. protected SerializedReaderWriter serializer() {
  159. return(m_serializer);
  160. }
  161. }