1 #include "testparser.h"
2 #include "graph.h"
3 #include "tikzassembler.h"
4
5 #include <QTest>
6 #include <QVector>
7
8 //void TestParser::initTestCase()
9 //{
10
11 //}
12
13 //void TestParser::cleanupTestCase()
14 //{
15
16 //}
17
parseEmptyGraph()18 void TestParser::parseEmptyGraph()
19 {
20 Graph *g = new Graph();
21 TikzAssembler ga(g);
22 bool res = ga.parse("\\begin{tikzpicture}\n\\end{tikzpicture}");
23 QVERIFY(res);
24 QVERIFY(g->nodes().size() == 0);
25 QVERIFY(g->edges().size() == 0);
26 delete g;
27 }
28
parseNodeGraph()29 void TestParser::parseNodeGraph()
30 {
31 Graph *g = new Graph();
32 TikzAssembler ga(g);
33 bool res = ga.parse(
34 "\\begin{tikzpicture}\n"
35 " \\node (node0) at (1.1, -2.2) {};\n"
36 " \\node (node1) at (3, 4) {test};\n"
37 "\\end{tikzpicture}");
38 QVERIFY(res);
39 QVERIFY(g->nodes().size() == 2);
40 QVERIFY(g->edges().size() == 0);
41 QVERIFY(g->nodes()[0]->name() == "node0");
42 QVERIFY(g->nodes()[0]->label() == "");
43 QVERIFY(g->nodes()[0]->point() == QPointF(1.1,-2.2));
44 QVERIFY(g->nodes()[1]->name() == "node1");
45 QVERIFY(g->nodes()[1]->label() == "test");
46 QVERIFY(g->nodes()[1]->point() == QPointF(3,4));
47 delete g;
48 }
49
parseEdgeGraph()50 void TestParser::parseEdgeGraph()
51 {
52 Graph *g = new Graph();
53 TikzAssembler ga(g);
54 bool res = ga.parse(
55 "\\begin{tikzpicture}\n"
56 " \\begin{pgfonlayer}{nodelayer}\n"
57 " \\node [style=x, {foo++}] (0) at (-1, -1) {};\n"
58 " \\node [style=y] (1) at (0, 1) {};\n"
59 " \\node [style=z] (2) at (1, -1) {};\n"
60 " \\end{pgfonlayer}\n"
61 " \\begin{pgfonlayer}{edgelayer}\n"
62 " \\draw [style=a] (1.center) to (2);\n"
63 " \\draw [style=b, foo] (2) to (0.west);\n"
64 " \\draw [style=c] (0) to (1);\n"
65 " \\end{pgfonlayer}\n"
66 "\\end{tikzpicture}\n");
67 QVERIFY(res);
68 QVERIFY(g->nodes().size() == 3);
69 QVERIFY(g->edges().size() == 3);
70 QVERIFY(g->nodes()[0]->data()->atom("foo++"));
71 QVERIFY(g->edges()[0]->data()->property("style") == "a");
72 QVERIFY(!g->edges()[0]->data()->atom("foo"));
73 QVERIFY(g->edges()[1]->data()->property("style") == "b");
74 QVERIFY(g->edges()[1]->data()->atom("foo"));
75 QVERIFY(g->edges()[2]->data()->property("style") == "c");
76 Node *en = g->edges()[0]->edgeNode();
77 QVERIFY(en == 0);
78 delete g;
79 }
80
parseEdgeNode()81 void TestParser::parseEdgeNode()
82 {
83 Graph *g = new Graph();
84 TikzAssembler ga(g);
85 bool res = ga.parse(
86 "\\begin{tikzpicture}\n"
87 " \\begin{pgfonlayer}{nodelayer}\n"
88 " \\node [style=none] (0) at (-1, 0) {};\n"
89 " \\node [style=none] (1) at (1, 0) {};\n"
90 " \\end{pgfonlayer}\n"
91 " \\begin{pgfonlayer}{edgelayer}\n"
92 " \\draw [style=diredge] (0.center) to node[foo, bar=baz baz]{test} (1.center);\n"
93 " \\end{pgfonlayer}\n"
94 "\\end{tikzpicture}\n");
95 QVERIFY(res);
96 QVERIFY(g->nodes().size() == 2);
97 QVERIFY(g->edges().size() == 1);
98 Node *en = g->edges()[0]->edgeNode();
99 QVERIFY(en != 0);
100 QVERIFY(en->label() == "test");
101 QVERIFY(en->data()->atom("foo"));
102 QVERIFY(en->data()->property("bar") == "baz baz");
103 delete g;
104 }
105
parseEdgeBends()106 void TestParser::parseEdgeBends()
107 {
108 Graph *g = new Graph();
109 TikzAssembler ga(g);
110 bool res = ga.parse(
111 "\\begin{tikzpicture}\n"
112 " \\begin{pgfonlayer}{nodelayer}\n"
113 " \\node [style=white] (0) at (-1, 0) {};\n"
114 " \\node [style=black] (1) at (1, 0) {};\n"
115 " \\end{pgfonlayer}\n"
116 " \\begin{pgfonlayer}{edgelayer}\n"
117 " \\draw [style=diredge,bend left] (0) to (1);\n"
118 " \\draw [style=diredge,bend right] (0) to (1);\n"
119 " \\draw [style=diredge,bend left=20] (0) to (1);\n"
120 " \\draw [style=diredge,bend right=80] (0) to (1);\n"
121 " \\draw [style=diredge,in=10,out=150,looseness=2] (0) to (1);\n"
122 " \\end{pgfonlayer}\n"
123 "\\end{tikzpicture}\n");
124 QVERIFY(res);
125 QVERIFY(g->nodes().size() == 2);
126 QVERIFY(g->edges().size() == 5);
127 QVERIFY(g->edges()[0]->bend() == -30);
128 QVERIFY(g->edges()[1]->bend() == 30);
129 QVERIFY(g->edges()[2]->bend() == -20);
130 QVERIFY(g->edges()[3]->bend() == 80);
131 QVERIFY(g->edges()[4]->inAngle() == 10);
132 QVERIFY(g->edges()[4]->outAngle() == 150);
133 QVERIFY(g->edges()[4]->weight() == 2.0f/2.5f);
134 }
135
parseBbox()136 void TestParser::parseBbox()
137 {
138 Graph *g = new Graph();
139 TikzAssembler ga(g);
140 bool res = ga.parse(
141 "\\begin{tikzpicture}\n"
142 " \\path [use as bounding box] (-1.5,-1.5) rectangle (1.5,1.5);\n"
143 " \\begin{pgfonlayer}{nodelayer}\n"
144 " \\node [style=white dot] (0) at (-1, -1) {};\n"
145 " \\node [style=white dot] (1) at (0, 1) {};\n"
146 " \\node [style=white dot] (2) at (1, -1) {};\n"
147 " \\end{pgfonlayer}\n"
148 " \\begin{pgfonlayer}{edgelayer}\n"
149 " \\draw [style=diredge] (1) to (2);\n"
150 " \\draw [style=diredge] (2) to (0);\n"
151 " \\draw [style=diredge] (0) to (1);\n"
152 " \\end{pgfonlayer}\n"
153 "\\end{tikzpicture}\n");
154 QVERIFY(res);
155 QVERIFY(g->nodes().size() == 3);
156 QVERIFY(g->edges().size() == 3);
157 QVERIFY(g->hasBbox());
158 QVERIFY(g->bbox() == QRectF(QPointF(-1.5,-1.5), QPointF(1.5,1.5)));
159
160 delete g;
161 }
162
163
164