001    package nl.cwi.sen1.visbase.factbrowser;
002    
003    import javax.swing.tree.DefaultMutableTreeNode;
004    
005    import junit.framework.TestCase;
006    import nl.cwi.sen1.relationstores.Factory;
007    import nl.cwi.sen1.visbase.factbrowser.data.FactBrowserDataManager;
008    import nl.cwi.sen1.visbase.factbrowser.data.RStore;
009    import nl.cwi.sen1.visbase.factbrowser.data.RStoreFact;
010    import nl.cwi.sen1.visbase.factbrowser.data.RStoreFactType;
011    import nl.cwi.sen1.visbase.factbrowser.data.VisualisationPlugin;
012    import aterm.pure.PureFactory;
013    
014    /**
015     * This is the class which tests the toolbus interfaces as far as is possible.
016     * 
017     * <br>
018     * <b>Classes not tested</b> FactBrowserDemo - This class was not tested
019     * because it only contains visual items FactBrowserTif - This class was not
020     * tested because toolbus generated file FactBrowserTool - This class was not
021     * tested because toolbus generated file FactBrowserBridge - This class was not
022     * tested because toolbus generated file
023     * 
024     * <br>
025     * <b>methods not tested</b> FactBrowser.fbShowRstoreFacts - Not tested because
026     * of complex RStoreFacts which must be composed FactBrowser.recAckEvent - This
027     * is a blank method simply for toolbus compatibility FactBrowser.recTerminate -
028     * This is a method which is called when the toolbus is terminating
029     * FactBrowser.initStudioPlugin - Can only be tested when connected to the
030     * MetaStudio FactBrowser.initFactBrowserLayout - This is a visual method so can
031     * only be tested with a visual environment FactBrowser.openRstore - Can only be
032     * tested when connected to the MetaStudio FactBrowser.connectPanelWithMenu -
033     * Can only be tested when connected to the MetaStudio
034     * 
035     * @author Renze de Vries
036     * @date 22-02-2007
037     * 
038     */
039    public class FactBrowserTest extends TestCase {
040            private PureFactory pureFactory = null;
041    
042            private Factory factory = null;
043    
044            private FactBrowser factBrowser = null;
045    
046            /**
047             * This method sets up the Unit Test so the nessecary factory instances are
048             * present.
049             * 
050             * @author Renze de Vries
051             * @date 22-02-2007
052             */
053            protected void setUp() {
054                    pureFactory = FactBrowserFactorySingleton.getPureFactoryInstance();
055                    factory = FactBrowserFactorySingleton.getFactoryInstance();
056                    factBrowser = new FactBrowser();
057            }
058    
059            /**
060             * Test if the correct toolname is given for the FactBrowser
061             * 
062             * @author Renze de Vries
063             * @date 22-02-2007
064             */
065            public void testToolName() {
066                    assertEquals("This is not the correct toolname", "factbrowser",
067                                    factBrowser.getName());
068            }
069    
070            /**
071             * This method tests is the initialisations in the "SetUp" are working as
072             * should be.
073             * 
074             * @author Renze de Vries
075             * @date 12-03-2007
076             */
077            public void testFactory() {
078                    assertNotNull("The factory should not be null", factory);
079    
080                    assertNotNull("The FactBrowser should not be null", factBrowser);
081    
082                    assertNotNull("The pureFactory should not be null", pureFactory);
083            }
084    
085            /**
086             * This method tests if it is possible to add a visualisation plugin to the
087             * FactBrowser
088             * 
089             * @author Renze de Vries
090             * @date 22-02-2007
091             */
092            public void testAddVisualisation() {
093                    factBrowser.fbAddVisualizationPlugin(pureFactory.make("<str>",
094                                    "<str>,<str>"), 1, "Visualisatie Test Plugin");
095    
096                    RStoreFactType factType = FactBrowserDataManager.getInstance()
097                                    .addFactType("\"<str>,<str>\"");
098    
099                    RStoreFactType factTypeCompare = FactBrowserDataManager.getInstance()
100                                    .addFactType("<str>,<str>");
101    
102                    assertNotSame("The two given factTypes should not be the same",
103                                    factType, factTypeCompare);
104    
105                    assertEquals("There should be a added visualisation plugin", 1,
106                                    factType.getVisualisationPlugins().size());
107            }
108    
109            /**
110             * Test it the visualisationWindow will create
111             * 
112             * @author Renze de Vries
113             * @date 07-03-2007
114             */
115            public void testVisualisationWindow() {
116                    FactBrowserWindow factBrowserWindow = new FactBrowserWindow();
117    
118                    assertNotNull("Visualisation Windows not created", factBrowserWindow);
119            }
120    
121            /**
122             * This test checks if the retrieval of data is succesfull when a double
123             * click should happen. It cannot simulate the mouseclick itself but does do
124             * the same interanlly as the mouseClicked method.
125             * 
126             * @author Renze de Vries
127             * @date 11-03-2007
128             */
129            public void testMouseClicked() {
130                    FactBrowserDataManager dataManager = FactBrowserDataManager
131                                    .getInstance();
132    
133                    RStore rstore = new RStore("rstore1", 4);
134    
135                    DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("root");
136                    DefaultMutableTreeNode rstoreNode = new DefaultMutableTreeNode(rstore);
137                    rootNode.add(rstoreNode);
138    
139                    RStoreFact rstoreFact = new RStoreFact("fact1", 5, dataManager
140                                    .addFactType("<str,bool>"));
141                    rstoreNode.add(rstoreFact);
142    
143                    VisualisationPlugin visPlugin = new VisualisationPlugin("plugin1", 2);
144                    dataManager.createVisualisation(visPlugin, dataManager
145                                    .addFactType("<str,bool>"));
146    
147                    assertEquals("This node should be the visualisationPlugin", "plugin1",
148                                    rstoreFact.getFirstLeaf().toString());
149    
150                    DefaultMutableTreeNode selectedNode = rstoreFact.getFirstLeaf();
151    
152                    assertEquals("The selectedNode should be a valid visualisationPlugin",
153                                    true, dataManager.checkValidVisualisationPlugin(selectedNode));
154    
155                    assertEquals("The visualisationPlugin identifier should be 2", 2,
156                                    dataManager.getVisPluginID(selectedNode));
157    
158                    assertEquals("The RstoreFact identifier should be 5", 5, dataManager
159                                    .getFactID(selectedNode));
160    
161                    assertEquals("The RStore identifier should be 4", 4, dataManager
162                                    .getRStoreID(selectedNode));
163    
164                    assertEquals("This TreeNode should not be an RStoreFact", false,
165                                    dataManager.checkValidRStoreFact(selectedNode));
166    
167                    assertEquals("This TreeNode should be a RStoreFact", true, dataManager
168                                    .checkValidRStoreFact(rstoreFact));
169            }
170    }