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