01: /*
02: * DGUtilsTest.java
03: * JUnit based test
04: *
05: * Created on February 1, 2006, 2:18 PM
06: */
07:
08: package org.netbeans.modules.languages.parser;
09:
10: import java.util.Collections;
11: import junit.framework.*;
12:
13: /**
14: *
15: * @author Jan Jancura
16: */
17: public class DGUtilsTest extends TestCase {
18:
19: public DGUtilsTest(String testName) {
20: super (testName);
21: }
22:
23: public void testReduce() {
24: DG dg = DG.createDG(new Integer(1));
25: dg.addNode(new Integer(2));
26: dg.addNode(new Integer(3));
27: dg.addNode(new Integer(4));
28: dg.addEdge(new Integer(1), new Integer(2), new Character('a'));
29: dg.addEdge(new Integer(2), new Integer(3), new Character('b'));
30: dg.addEdge(new Integer(3), new Integer(4), new Character('a'));
31: dg.addEdge(new Integer(4), new Integer(3), new Character('b'));
32: dg.setStart(new Integer(1));
33: dg.setEnds(Collections.singleton(new Integer(3)));
34:
35: dg.setProperty(new Integer(1), "jedna", "jedna");
36: dg.setProperty(new Integer(2), "dve", "dve");
37: dg.setProperty(new Integer(3), "tri", "tri");
38: dg.setProperty(new Integer(4), "ctyri", "ctyri");
39: dg.setProperty(new Integer(1), new Character('a'), "jedna a",
40: "jedna a");
41: dg.setProperty(new Integer(2), new Character('b'), "dve b",
42: "dve b");
43: dg.setProperty(new Integer(3), new Character('a'), "tri a",
44: "tri a");
45: dg.setProperty(new Integer(4), new Character('b'), "ctyri b",
46: "ctyri b");
47: dg = DGUtils.reduce(dg, nodeFactory);
48:
49: //S ystem.out.println(dg);
50:
51: assertEquals(3, dg.getNodes().size());
52: Object n1 = dg.getStartNode();
53: assertEquals(1, dg.getEdges(n1).size());
54: assertEquals(1, dg.getProperties(n1).size());
55: assertEquals("jedna", dg.getProperty(n1, "jedna"));
56:
57: Object e1 = dg.getEdge(n1, 'a');
58: assertEquals(1, dg.getProperties(n1, e1).size());
59: assertEquals("jedna a", dg.getProperty(n1, e1, "jedna a"));
60: Object n2 = dg.getNode(n1, e1);
61: assertNotNull(n2);
62: assertEquals(1, dg.getEdges(n2).size());
63: assertNull(dg.getEdge(n1, 'b'));
64: assertEquals(2, dg.getProperties(n2).size());
65: assertEquals("dve", dg.getProperty(n2, "dve"));
66: assertEquals("ctyri", dg.getProperty(n2, "ctyri"));
67:
68: Object e2 = dg.getEdge(n2, 'b');
69: assertEquals(2, dg.getProperties(n2, e2).size());
70: assertEquals("dve b", dg.getProperty(n2, e2, "dve b"));
71: assertEquals("ctyri b", dg.getProperty(n2, e2, "ctyri b"));
72: Object n3 = dg.getNode(n2, e2);
73: assertNotNull(n3);
74: assertEquals(1, dg.getEdges(n3).size());
75: assertNull(dg.getEdge(n2, 'a'));
76: assertEquals(1, dg.getEnds().size());
77: assertEquals(n3, dg.getEnds().iterator().next());
78: assertEquals(1, dg.getProperties(n3).size());
79: assertEquals("tri", dg.getProperty(n3, "tri"));
80:
81: Object e3 = dg.getEdge(n3, 'a');
82: assertEquals(1, dg.getProperties(n3, e3).size());
83: assertEquals("tri a", dg.getProperty(n3, e3, "tri a"));
84: Object n4 = dg.getNode(n3, e3);
85: assertEquals(n2, n4);
86: }
87:
88: private NodeFactory nodeFactory = new NodeFactory<Integer>() {
89: public Integer createNode() {
90: return Integer.valueOf(counter++);
91: }
92:
93: private int counter = 1;
94: };
95: }
|