001 package nl.cwi.sen1.visbase.factbrowser.data;
002
003 import junit.framework.TestCase;
004
005 /**
006 * This is the class for JUnit testing of the FactBrowser system. It tests the
007 * in memory data structure and also tests the creation of the visualisation
008 * component;
009 *
010 * @author Renze de Vries
011 * @date 14-02-2007
012 *
013 */
014 public class FactBrowserDataTest extends TestCase {
015 private FactBrowserDataManager dataManager;
016
017 public FactBrowserDataTest() {
018 dataManager = FactBrowserDataManager.getInstance();
019 }
020
021 /**
022 * For the FactBrowser testing it is very important to test if the
023 * datamanger which manages the in memory data tree is present and will
024 * initialize.
025 *
026 * @author Renze de Vries
027 * @date 14-02-2007
028 */
029 public void testDataManager() {
030 assertNotNull("DataManager is NULL", dataManager);
031 }
032
033 /**
034 * This method is here pure for testing of the RStore creation
035 *
036 * @author Renze de Vries
037 * @date 14-02-2007
038 */
039 public void testCreateRStore() {
040 RStore rstoreNode1 = new RStore("Rstore1", 1);
041
042 assertNotNull("The created RStoreNode1 is NULL", rstoreNode1);
043 assertEquals("The RStoreId should be 1", 1, rstoreNode1.getRstoreId());
044 assertEquals("The RStoreName should be Rstore1", "Rstore1", rstoreNode1
045 .toString());
046 assertEquals("The FactNode ArrayList should be empty", 0, rstoreNode1
047 .getFactNodes().size());
048
049 RStore rstoreNode2 = new RStore("Rstore2", 2);
050 assertNotNull("This Rstore should not be null", rstoreNode2);
051 }
052
053 /**
054 * This method will test if the RStoreFactType registration is working and
055 * it will test for different type of scenarios from nullpointers to string
056 * equality and testing the size of the initial plugin container
057 *
058 * @author Renze de Vries
059 * @date 14-02-2007
060 */
061 public void testFactTypes() {
062 RStoreFactType factType1 = dataManager.addFactType("<str, str>");
063 RStoreFactType factType2 = dataManager.addFactType("<str, bool>");
064 RStoreFactType factType3 = dataManager.addFactType("<str, str, int>");
065 RStoreFactType factType4 = dataManager.addFactType("<int, int>");
066
067 assertNotNull("The created FactType is NULL", factType1);
068 assertEquals("The FactType should be <str, str>", "<str, str>",
069 factType1.getFactType());
070 assertEquals("The number of visualisations should be 0", 0, factType1
071 .getVisualisationPlugins().size());
072
073 assertNotSame("FactTypes should be different object instants",
074 factType1, factType4);
075
076 RStoreFactType factType5 = dataManager.addFactType("<str, str>");
077 assertEquals(
078 "The factTypes <str, str> and <str, str> should provide the same object",
079 factType1, factType5);
080 assertNotSame(
081 "The factTypes <str, str, int> should give a different object than <str, str>",
082 factType1, factType3);
083 assertSame(
084 "The factType <str, bool> should be the same as <str, bool>",
085 factType2, dataManager.addFactType("<str, bool>"));
086
087 RStoreFactType emptyFactType = new RStoreFactType();
088 assertNotNull("This instance should not be null", emptyFactType);
089 }
090
091 /**
092 * This method tests the creation of a fact node and the coupling of this
093 * fact node to the RStore parent. It will test the basic properties of the
094 * FactNode and if the RStore registers the FactNode properly.
095 *
096 * @author Renze de Vries
097 * @date 14-02-2007
098 */
099 public void testFactNode() {
100 RStore rstoreNode1 = new RStore("Rstore1", 1);
101
102 RStoreFactType rstoreFactType = dataManager.addFactType("<str, str>");
103
104 RStoreFact factNode1 = new RStoreFact("Fact1", 1, rstoreFactType);
105 assertNotNull("The created Fact1 is NULL", factNode1);
106 assertEquals("The FactId should be 1", 1, factNode1.getFactId());
107 assertEquals("The FactName should be Fact1(<str, str>)",
108 "Fact1(<str, str>)", factNode1.toString());
109
110 rstoreNode1.addFactNode(factNode1);
111
112 assertEquals("The FactNode ArrayList should be 1", 1, rstoreNode1
113 .getFactNodes().size());
114
115 assertEquals("These factTypes should be the same instance",
116 rstoreFactType, factNode1.getFactType());
117 }
118
119 /**
120 * This tests the constructor checking if the factname and factype are
121 * correctly initialized
122 *
123 * @author Raymond Bergen
124 * @date 21-02-2007
125 */
126 public void testFactNodeConstructor() {
127 RStoreFact factnode = new RStoreFact();
128 assertEquals("The factname should be empty ", factnode.getFactName(),
129 "");
130 }
131
132 /**
133 * This node tests the registration of the VisualisationPlugins. It is
134 * basicly a test of all combined tests in this class. If this works all the
135 * tests should work in this class.
136 *
137 * @author Renze de Vries
138 * @date 14-02-2007
139 */
140 public void testVisualisations() {
141 RStoreFactType factType1 = dataManager.addFactType("<str, str>");
142 RStoreFactType factType2 = dataManager.addFactType("<str, bool>");
143 RStoreFactType factType3 = dataManager.addFactType("<str, str, int>");
144 RStoreFactType factType4 = dataManager.addFactType("<int, int>");
145
146 RStore rstoreNode1 = new RStore("Rstore1", 1);
147
148 RStoreFact factNode1 = new RStoreFact("Fact1", 1, factType1);
149 RStoreFact factNode2 = new RStoreFact("Fact2", 2, factType2);
150 rstoreNode1.addFactNode(factNode1);
151 rstoreNode1.addFactNode(factNode2);
152
153 RStore rstoreNode2 = new RStore("Rstore2", 2);
154 RStoreFact factNode3 = new RStoreFact("Fact3", 3, factType3);
155 RStoreFact factNode4 = new RStoreFact("Fact4", 4, factType4);
156 rstoreNode2.addFactNode(factNode3);
157 rstoreNode2.addFactNode(factNode4);
158
159 VisualisationPlugin visPlugin1 = new VisualisationPlugin("BarChart", 1);
160 VisualisationPlugin visPlugin2 = new VisualisationPlugin("GraphChart",
161 2);
162 VisualisationPlugin visPlugin3 = new VisualisationPlugin("TreeView", 3);
163 VisualisationPlugin visPlugin4 = new VisualisationPlugin("BarChart", 1);
164
165 assertNotNull("The created visPlugin1 is NULL", visPlugin1);
166 assertEquals("The name of the visPlugin1 should be BarChart",
167 "BarChart", visPlugin1.toString());
168 assertEquals("The Id of the visPlugin1 should be 1", 1, visPlugin1
169 .getPluginId());
170
171 assertEquals("The FactType should be the same according to cache",
172 factType1, dataManager.addFactType("<str, str>"));
173 assertEquals("The FactType should be the same according to cache",
174 factType2, dataManager.addFactType("<str, bool>"));
175 assertEquals("The FactType should be the same according to cache",
176 factType3, dataManager.addFactType("<str, str, int>"));
177 assertEquals("The FactType should be the same according to cache",
178 factType4, dataManager.addFactType("<int, int>"));
179
180 assertEquals("The number of visualisations of factType1 should be 0",
181 0, factType1.getVisualisationPlugins().size());
182 assertEquals("The number of visualisations of factType2 should be 0",
183 0, factType2.getVisualisationPlugins().size());
184 assertEquals("The number of visualisations of factType3 should be 0",
185 0, factType3.getVisualisationPlugins().size());
186 assertEquals("The number of visualisations of factType4 should be 0",
187 0, factType4.getVisualisationPlugins().size());
188
189 dataManager.createVisualisation(visPlugin1, factType1);
190
191 assertEquals("The number of visualisations of factType1 should be 1",
192 1, factType1.getVisualisationPlugins().size());
193
194 dataManager.createVisualisation(visPlugin2, dataManager
195 .addFactType("<str, str, int>"));
196
197 assertEquals("The number of visualisations of factType3 should be 1",
198 1, factType3.getVisualisationPlugins().size());
199
200 dataManager.createVisualisation(visPlugin3, dataManager
201 .addFactType("<str, bool>"));
202
203 assertEquals("The number of visualisations of factType2 should be 1",
204 1, factType2.getVisualisationPlugins().size());
205
206 dataManager.createVisualisation(visPlugin4, dataManager
207 .addFactType("<str, bool>"));
208
209 assertEquals("The number of visualisations of factType2 should be 2",
210 2, factType2.getVisualisationPlugins().size());
211
212 VisualisationPlugin emptyVisPlugin = new VisualisationPlugin();
213 assertNotNull("The visualisationPlugin should not be null", emptyVisPlugin);
214
215 }
216
217 /**
218 * This test checks if the reset of the dataManager works and checks it
219 *
220 * @author Renze de Vries
221 * @date 12-03-2007
222 */
223 public void testResetDataManager() {
224 RStoreFactType rstoreFactType = dataManager
225 .addFactType("<str, str, int>");
226
227 dataManager.resetDataManager();
228
229 RStoreFactType rstoreFactType2 = dataManager
230 .addFactType("<str, str, int>");
231
232 assertNotSame("These instances should be different", rstoreFactType,
233 rstoreFactType2);
234 }
235 }