001 package nl.cwi.sen1.visplugin.graphplugin; 002 003 import junit.framework.TestCase; 004 import nl.cwi.sen1.relationstores.Factory; 005 import nl.cwi.sen1.relationstores.types.RTuple; 006 import nl.cwi.sen1.relationstores.types.RType; 007 import nl.cwi.sen1.visplugin.VisualizationFactorySingleton; 008 import aterm.ATerm; 009 010 /** 011 * Test class for the GraphChartVisualization Plugin. Parts of the code copied 012 * and adapted from the PieCharVisualizationTest. 013 * 014 * @author Anton Gerdessen 015 * @date 09-3-2007 016 */ 017 public class GraphVisualizationTest extends TestCase { 018 019 private GraphVisualizationController m_controller; 020 private GraphVisualizationWindow m_window; 021 private Factory m_factory; 022 private RTuple m_relStrStr; 023 private RTuple m_relIntInt; 024 private RType m_typeRelStrStr; 025 private RType m_typeRelIntInt; 026 027 /** 028 * Test setup. 029 * 030 * @author Anton Gerdessen 031 * @date 09-3-2007 032 */ 033 protected void setUp() throws Exception { 034 super.setUp(); 035 036 // Create the visualisation itself. 037 m_factory = VisualizationFactorySingleton.getFactoryInstance(); 038 m_controller = new GraphVisualizationController(); 039 m_controller.initPluginController(VisualizationFactorySingleton 040 .getPureFactoryInstance()); 041 m_window = (GraphVisualizationWindow) m_controller.createWindow(); 042 m_window.setFactory(m_factory); 043 044 // Setup two Rtuples for the tests. 045 String relStrStr = "rtuple(\"OK_GRAPH\"," + 046 "relation([str,str])," + 047 "set([tuple([str(\"a\")," + 048 "str(\"b\")])," + 049 "tuple([str(\"b\")," + 050 "str(\"b\")])," + 051 "tuple([str(\"b\"),"+ 052 "str(\"c\")])," + 053 "tuple([str(\"c\")," + 054 "str(\"a\")])]))"; 055 056 String relIntInt = "rtuple(\"TEST_GRAPH\"," + 057 "relation([int,int])," + 058 "set([tuple([int(nat-con(10))," + 059 "int(nat-con(10))])]))"; 060 061 // Setup the relation type and relation themselves for the preivoulsy 062 // created RTuples. 063 m_typeRelStrStr = m_factory.RTypeFromString("relation([str,str])"); 064 m_relStrStr = m_factory.RTupleFromString(relStrStr); 065 m_typeRelIntInt = m_factory.RTypeFromString("relation([int,int])"); 066 m_relIntInt = m_factory.RTupleFromString(relIntInt); 067 068 } 069 070 /** 071 * Test to see whether the control returns the correct type Window. 072 * 073 * @author Anton Gerdessen 074 * @date 09-3-2007 075 */ 076 public void testPieChartVisualizationController() { 077 GraphVisualizationController controller = new GraphVisualizationController(); 078 assertEquals(GraphVisualizationWindow.class, controller.createWindow() 079 .getClass()); 080 } 081 082 /** 083 * Test to see if the supported types system works. 084 * 085 * @author Anton Gerdessen 086 * @date 09-3-2007 087 */ 088 public void testTypeCheck() { 089 assertTrue(m_window.isTypeSupported(m_relStrStr)); 090 assertFalse(m_window.isTypeSupported(m_relIntInt)); 091 } 092 093 /** 094 * Test to see if the name for the chart is correctly found. 095 * 096 * @author Anton Gerdessen 097 * @date 09-3-2007 098 */ 099 public void testGetChartName() { 100 assertEquals("OK_GRAPH", m_window.getRTupleName(m_relStrStr)); 101 assertEquals("TEST_GRAPH", m_window.getRTupleName(m_relIntInt)); 102 } 103 104 /** 105 * See if the controller correctly advertises a supported types. 106 * 107 * @author Anton Gerdessen 108 * @date 09-3-2007 109 */ 110 public void testControllerSupportedTypes() { 111 assertTrue(isRTypeInATermArray(m_controller.getSupportedTypes(), 112 m_typeRelStrStr)); 113 assertFalse(isRTypeInATermArray(m_controller.getSupportedTypes(), 114 m_typeRelIntInt)); 115 } 116 117 /** 118 * Test if a specific RType is part of an ATerm array. 119 * 120 * @author A. Belgraver 121 * @author R. van Remortel 122 * @author Aldert Boerhoop (reviewer) 123 * @author Anton Gerdessen (reviewer) 124 * @param arr 125 * Array of ATerms 126 * @param type 127 * RType to find in ATerm array 128 * @return true if it is in the array, false if it isn't 129 * @date 09-3-2007 130 */ 131 private boolean isRTypeInATermArray(ATerm[] arr, RType type) { 132 for (int i = 0; i < arr.length; i++) { 133 if (arr[i].equals(type)) { 134 return true; 135 } 136 } 137 return false; 138 } 139 }