• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

rocs/RocsCore

  • sources
  • kde-4.12
  • kdeedu
  • rocs
  • RocsCore
  • Tests
TestPlugins.cpp
Go to the documentation of this file.
1 /*
2  This file is part of Rocs.
3  Copyright 2010 Wagner Reck <wagner.reck@gmail.com>
4 
5  This program is free software; you can redistribute it and/or
6  modify it under the terms of the GNU General Public License as
7  published by the Free Software Foundation; either version 2 of
8  the License, or (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program. If not, see <http://www.gnu.org/licenses/>.
17  */
18 
19 #include "TestPlugins.h"
20 
21 #include <QtTest/QSignalSpy>
22 #include <qtest_kde.h>
23 #include "DataStructureBackendManager.h"
24 #include "Document.h"
25 #include "DocumentManager.h"
26 #include "DataStructure.h"
27 #include "DataStructureBackendInterface.h"
28 #include "CoreTypes.h"
29 #include <QDebug>
30 
31 void TestPlugins::inittestcase()
32 {
33  if (DataStructureBackendManager::self().backends().count() == 0) {
34  QFAIL("No plugin of DS, no way to continue!");
35  }
36 }
37 
38 
39 void TestPlugins::init()
40 {
41  DocumentManager::self().newDocument();
42 }
43 
44 void TestPlugins::cleanup()
45 {
46  DocumentManager::self().removeDocument(DocumentManager::self().activeDocument());
47 }
48 
49 void TestPlugins::standardPluginsLoaded()
50 {
51  QList<QString> pluginNames = DataStructureBackendManager::self().backends();
52  QVERIFY2(pluginNames.contains("Graph"), "Could not find Graph plugin");
53  QVERIFY2(pluginNames.contains("LinkedList"), "Could not find LinkedList plugin");
54  QVERIFY2(pluginNames.contains("RootedTree"), "Could not find Graph plugin");
55 }
56 
57 void TestPlugins::createGraph()
58 {
59  DataStructureBackendInterface * pl = DataStructureBackendManager::self().backend("Graph");
60  QVERIFY2(pl,"Could create data structure of type Graph");
61 
62  DataStructureBackendManager::self().setBackend(pl->internalName());
63  Document doc("TestDocument");
64  DataStructurePtr ds = doc.addDataStructure();
65  QCOMPARE(ds->metaObject()->className(), "Rocs::GraphStructure");
66 }
67 
68 void TestPlugins::createList()
69 {
70  DataStructureBackendInterface * pl = DataStructureBackendManager::self().backend("LinkedList");
71  QVERIFY2(pl,"Could create data structure of type LinkedList");
72 
73  DataStructureBackendManager::self().setBackend(pl->internalName());
74  Document doc("TestDocument");
75  DataStructurePtr ds = doc.addDataStructure();
76  QCOMPARE(ds->metaObject()->className(), "Rocs::ListStructure");
77 }
78 
79 void TestPlugins::createRootedTree()
80 {
81  DataStructureBackendInterface * pl = DataStructureBackendManager::self().backend("RootedTree");
82  QVERIFY2(pl,"Could create data structure of type RootedTree");
83 
84  DataStructureBackendManager::self().setBackend(pl->internalName());
85  Document doc("TestDocument");
86  DataStructurePtr ds = doc.addDataStructure();
87  QCOMPARE(ds->metaObject()->className(), "RootedTreeStructure");
88 }
89 
90 void TestPlugins::convertGraphToLinkedList()
91 {
92  DataStructureBackendInterface * plGraph = DataStructureBackendManager::self().backend("Graph");
93  QVERIFY2(plGraph,"Graph plugin not found");
94 
95  DataStructureBackendInterface * plList = DataStructureBackendManager::self().backend("LinkedList");
96  QVERIFY2(plList,"LinkedList plugin not found");
97 
98  DataStructureBackendManager::self().setBackend(plGraph->internalName());
99  Document doc("TestDocument");
100 
101  //Create a simple graph
102  DataStructurePtr tree = doc.addDataStructure("Graph1");
103  DataPtr a = tree->createData("node1", 0);
104  DataPtr b = tree->createData("node2", 0);
105  DataPtr c = tree->createData("node3", 0);
106  tree->createPointer(a, b, 0);
107  tree->createPointer(a, c, 0);
108 
109  //Change plugin.
110  DataStructureBackendManager::self().setBackend(plList->internalName());
111 
112  DataStructurePtr list = plList->convertToDataStructure(tree, &doc);
113 
114  QCOMPARE(list->dataList(0).count(), 3);
115  //FIXME the conversion scripts from graphs to lists must be rewritten, they cannot even handle acyclic graphs gracefully
116  QEXPECT_FAIL("", "wrong number of pointers after conversion.", Continue);
117  QCOMPARE(list->pointers(0).count(), 1);
118 }
119 
120 void TestPlugins::convertGraphToRootedTree()
121 {
122 
123  DataStructureBackendInterface *plGraph = DataStructureBackendManager::self().backend("Graph");
124  QVERIFY2(plGraph,"Graph plugin not found");
125 
126  DataStructureBackendInterface *plTree = DataStructureBackendManager::self().backend("RootedTree");
127  QVERIFY2(plTree,"Rooted plugin not found");
128 
129  DataStructureBackendManager::self().setBackend(plGraph->internalName());
130  Document doc("TestDocument");
131  // connect(DSPluginManager::instance(), SIGNAL(changingDS(QString)), &doc, SLOT(convertToDS(QString)));
132  //Create a simple graph
133  DataStructurePtr tree = doc.addDataStructure("Graph1");
134  DataPtr a = tree->createData("node1", 0);
135  DataPtr b = tree->createData("node2", 0);
136  DataPtr c = tree->createData("node3", 0);
137  tree->createPointer(a, b, 0);
138  tree->createPointer(a, c, 0);
139 
140  //Change plugin.
141  DataStructureBackendManager::self().setBackend(plTree->internalName());
142 
143  DataStructurePtr list = plTree->convertToDataStructure(tree, &doc);
144 
145  QCOMPARE(list->dataList(0).count(), 3);
146  QCOMPARE(list->pointers(0).count(), 4);
147 }
148 
149 
150 QTEST_KDEMAIN_CORE(TestPlugins)
DataStructureBackendManager::backends
const QStringList backends() const
Returns list of loaded backends.
Definition: DataStructureBackendManager.cpp:270
DocumentManager.h
DocumentManager::self
static DocumentManager & self()
Definition: DocumentManager.cpp:57
DataStructurePtr
boost::shared_ptr< DataStructure > DataStructurePtr
Definition: CoreTypes.h:38
TestPlugins.h
CoreTypes.h
DataStructureBackendManager::self
static DataStructureBackendManager & self()
Returns self reference to backend manager.
Definition: DataStructureBackendManager.cpp:233
DataStructureBackendInterface.h
Document.h
DocumentManager::newDocument
Document * newDocument()
Creates and loads a new graph document.
Definition: DocumentManager.cpp:215
DataStructure.h
Document
Definition: Document.h:41
DataStructureBackendManager::setBackend
void setBackend(const QString &pluginIdentifier)
Change the active backend.
Definition: DataStructureBackendManager.cpp:240
DataPtr
boost::shared_ptr< Data > DataPtr
Definition: CoreTypes.h:34
DataStructureBackendInterface::internalName
QString internalName()
return the internal name from plugin.
Definition: DataStructureBackendInterface.cpp:63
DataStructureBackendInterface
Definition: DataStructureBackendInterface.h:42
DataStructureBackendInterface::convertToDataStructure
virtual DataStructurePtr convertToDataStructure(DataStructurePtr, Document *parent)=0
TestPlugins
Definition: TestPlugins.h:23
DataStructureBackendManager.h
DocumentManager::removeDocument
void removeDocument(Document *document)
Remove document from document list.
Definition: DocumentManager.cpp:173
DataStructureBackendManager::backend
DataStructureBackendInterface * backend(const QString &internalName) const
Returns data structure backend identified by its identifier internalName.
Definition: DataStructureBackendManager.cpp:280
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:42:26 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

rocs/RocsCore

Skip menu "rocs/RocsCore"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • kstars
  • libkdeedu
  •   keduvocdocument
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal