Skip to content

Commit 10d7bd0

Browse files
committed
main window unit test files are added;
unit tests for tools on and off added; minor visibility bug fixes
1 parent 3475490 commit 10d7bd0

File tree

10 files changed

+224
-85
lines changed

10 files changed

+224
-85
lines changed

src/cherish/Data.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -472,7 +472,7 @@ const QIcon &Data::controlCanvasVisibilityIcon()
472472
Q_ASSERT_X(!QPixmap(cher::FA_ICON_PATH + "eye.svg").isNull(), Q_FUNC_INFO, "Required resource not available");
473473
Q_ASSERT_X(!QPixmap(cher::FA_ICON_PATH + "eye-slash.svg").isNull(), Q_FUNC_INFO, "Required resource not available");
474474
static QIcon icon;
475-
icon.addFile(cher::FA_ICON_PATH + "eye-slash.svg"); // Off by default
475+
icon.addFile(cher::FA_ICON_PATH + "eye-slash.svg");
476476
icon.addFile(cher::FA_ICON_PATH + "eye.svg", QSize(), QIcon::Normal, QIcon::On);
477477
return icon;
478478
}

src/libGUI/MainWindow.cpp

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,11 @@ void MainWindow::onRequestSceneStateSet(entity::SceneState *state)
294294
m_rootScene->setSceneState(state);
295295
}
296296

297+
void MainWindow::onRequestSceneToolStatus(bool &visibility)
298+
{
299+
visibility = m_actionTools->isChecked();
300+
}
301+
297302
/* Check whether the current scene is empty or not
298303
* If not - propose to save changes.
299304
* Clear the scene graph
@@ -451,12 +456,8 @@ void MainWindow::onPaste()
451456

452457
void MainWindow::onTools()
453458
{
454-
if (m_actionTools->isChecked()){
455-
m_rootScene->setToolsVisibility(true);
456-
}
457-
else{
458-
m_rootScene->setToolsVisibility(false);
459-
}
459+
qDebug() << "Tools: change status called to " << m_actionTools->isChecked();
460+
m_rootScene->setToolsVisibility(m_actionTools->isChecked()? true : false);
460461
this->recievedRequestUpdate();
461462
}
462463

@@ -974,6 +975,10 @@ void MainWindow::initializeCallbacks()
974975
this, SLOT(recievedRequestUpdate()),
975976
Qt::UniqueConnection);
976977

978+
QObject::connect(m_rootScene->getUserScene(), SIGNAL(requestSceneToolStatus(bool&)),
979+
this, SLOT(onRequestSceneToolStatus(bool&)),
980+
Qt::UniqueConnection);
981+
977982
/* bookmark widget data */
978983
QObject::connect(m_bookmarkWidget, SIGNAL(clicked(QModelIndex)),
979984
m_rootScene->getBookmarksModel(), SLOT(onClicked(QModelIndex)),

src/libGUI/MainWindow.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ public slots:
5151
void slotPhotoPushed(int parent, int start, int, int destination, int);
5252
void onRequestSceneData(entity::SceneState* state);
5353
void onRequestSceneStateSet(entity::SceneState* state);
54+
void onRequestSceneToolStatus(bool& visibility);
5455

5556
signals:
5657
void signalTabletActivity(bool active);

src/libSGEntities/RootScene.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ void RootScene::setToolsVisibility(bool vis)
8181
for (int i=0; i<m_userScene->getNumCanvases(); ++i){
8282
entity::Canvas* cnv = m_userScene->getCanvas(i);
8383
if (!cnv) qFatal("RootScene::setToolsVisibility() canvas is NULL");
84-
cnv->setVisibilityFrame(vis);
84+
cnv->setVisibilityFrameInternal(vis);
8585
}
8686
}
8787

src/libSGEntities/UserScene.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1550,6 +1550,9 @@ bool entity::UserScene::addCanvas(entity::Canvas *canvas)
15501550

15511551
// update frame and widget
15521552
canvas->updateFrame(this->getCanvasPrevious());
1553+
bool vis = true;
1554+
emit this->requestSceneToolStatus(vis);
1555+
canvas->setVisibilityFrameInternal(vis);
15531556
this->updateWidgets();
15541557

15551558
return result;

src/libSGEntities/UserScene.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -528,6 +528,11 @@ class UserScene : public QObject, public osg::Group
528528
* This value also corresponds to Canvas::getVisibilityData(). */
529529
void canvasVisibilitySet(int row, bool visibility);
530530

531+
/*! A signal to be emitted on addition of new canvas to the scene. It requests tool's status of MainWindow, and turns
532+
* the internal frame on or off depending on the result.
533+
* \param visibility is a boolean flag which indicated whether the tools are on (true) of off (false). */
534+
void requestSceneToolStatus(bool& visibility);
535+
531536
public slots:
532537
/*! A slot which is called when the canvas name was edited from CanvasPhotoWidget. Based on the edited item, the slot
533538
* edits the name of the corresponding canvas. This slot is connected to CanvasPhotoWidget::itemChanged() */

src/tests/CMakeLists.txt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,21 @@ set(BASEGUITEST_SRC BaseGuiTest.h BaseGuiTest.cpp )
4141

4242
# SceneState tests with relation to bookmarks (SG and GUI) and canvas-photo widget (GUI)
4343
set(SCENESTATE_SRC SceneStateTest.h SceneStateTest.cpp ${BASEGUITEST_SRC})
44-
set(SCENESTATE_NAME test_scenestate)
44+
set(SCENESTATE_NAME test_SceneState)
4545
add_executable(${SCENESTATE_NAME} ${SCENESTATE_SRC} ${CHERISH_SRC} ${IMAGE_RSC} ${BASEGUITEST_SRC})
4646
target_link_libraries(${SCENESTATE_NAME} ${TEST_LIBRARIES})
4747
add_test(${SCENESTATE_NAME} ${SCENESTATE_SRC} ${CHERISH_SRC} ${IMAGE_RSC} ${BASEGUITEST_SRC})
4848

4949
# UserScene tests
5050
set(USERSCENE_SRC UserSceneTest.h UserSceneTest.cpp ${BASEGUITEST_SRC})
51-
set(USERSCENE_NAME test_userscene)
51+
set(USERSCENE_NAME test_UserScene)
5252
add_executable(${USERSCENE_NAME} ${USERSCENE_SRC} ${CHERISH_SRC} ${IMAGE_RSC} ${BASEGUITEST_SRC})
5353
target_link_libraries(${USERSCENE_NAME} ${TEST_LIBRARIES})
5454
add_test(${USERSCENE_NAME} ${USERSCENE_SRC} ${CHERISH_SRC} ${IMAGE_RSC} ${BASEGUITEST_SRC})
55+
56+
# MainWindow tests
57+
set(MAINWINDOW_SRC MainWindowTest.h MainWindowTest.cpp ${BASEGUITEST_SRC})
58+
set(MAINWINDOW_NAME test_MainWindow)
59+
add_executable(${MAINWINDOW_NAME} ${MAINWINDOW_SRC} ${CHERISH_SRC} ${IMAGE_RSC} ${BASEGUITEST_SRC})
60+
target_link_libraries(${MAINWINDOW_NAME} ${TEST_LIBRARIES})
61+
add_test(${MAINWINDOW_NAME} ${MAINWINDOW_SRC} ${CHERISH_SRC} ${IMAGE_RSC} ${BASEGUITEST_SRC})

src/tests/MainWindowTest.cpp

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
#include "MainWindowTest.h"
2+
3+
#include <QTreeWidgetItem>
4+
#include <QSignalSpy>
5+
6+
void MainWindowTest::testToolsOnOff()
7+
{
8+
/* change current scene state: make canvas0 and canvas2 invisible */
9+
this->onVisibilitySetCanvas(0);
10+
this->onVisibilitySetCanvas(2);
11+
QCOMPARE(m_canvasWidget->topLevelItemCount(), 3);
12+
13+
QCOMPARE(m_canvas0->getVisibilityAll(), false);
14+
QCOMPARE(m_canvas0->getVisibilityData(), m_canvas0->getVisibilityFrame());
15+
QCOMPARE(m_canvas0->getVisibilityFrameInternal(), true);
16+
QTreeWidgetItem* item0 = m_canvasWidget->topLevelItem(0);
17+
QVERIFY(item0);
18+
QCOMPARE(item0->data(0, cher::DelegateVisibilityRole).toBool(), true);
19+
20+
QCOMPARE(m_canvas1->getVisibilityAll(), true);
21+
QCOMPARE(m_canvas1->getVisibilityData(), m_canvas1->getVisibilityFrame());
22+
QCOMPARE(m_canvas1->getVisibilityFrameInternal(), true);
23+
QTreeWidgetItem* item1 = m_canvasWidget->topLevelItem(1);
24+
QVERIFY(item1);
25+
QCOMPARE(item1->data(0, cher::DelegateVisibilityRole).toBool(), false);
26+
27+
QCOMPARE(m_canvas2->getVisibilityAll(), false);
28+
QCOMPARE(m_canvas2->getVisibilityData(), m_canvas2->getVisibilityFrame());
29+
QCOMPARE(m_canvas2->getVisibilityFrameInternal(), true);
30+
QTreeWidgetItem* item2 = m_canvasWidget->topLevelItem(2);
31+
QVERIFY(item2);
32+
QCOMPARE(item2->data(0, cher::DelegateVisibilityRole).toBool(), true);
33+
34+
QCOMPARE(m_rootScene->getAxesVisibility(), true);
35+
QCOMPARE(m_rootScene->getBookmarkToolVisibility(), true);
36+
QCOMPARE(m_actionTools->isChecked(), true);
37+
38+
39+
/* imitate tools off */
40+
QSignalSpy spy_tools(m_actionTools, SIGNAL(toggled(bool)));
41+
m_actionTools->setChecked(false);
42+
QCOMPARE(spy_tools.count(), 1);
43+
QList<QVariant> args_tools = spy_tools.takeFirst();
44+
QVERIFY(args_tools.at(0).toBool() == false);
45+
46+
QCOMPARE(m_canvas0->getVisibilityAll(), false);
47+
QCOMPARE(m_canvas0->getVisibilityData(), m_canvas0->getVisibilityFrame());
48+
QCOMPARE(m_canvas0->getVisibilityFrameInternal(), false);
49+
QCOMPARE(item0->data(0, cher::DelegateVisibilityRole).toBool(), true);
50+
51+
QCOMPARE(m_canvas1->getVisibilityAll(), true);
52+
QCOMPARE(m_canvas1->getVisibilityData(), m_canvas1->getVisibilityFrame());
53+
QCOMPARE(m_canvas1->getVisibilityFrameInternal(), false);
54+
QCOMPARE(item1->data(0, cher::DelegateVisibilityRole).toBool(), false);
55+
56+
QCOMPARE(m_canvas2->getVisibilityAll(), false);
57+
QCOMPARE(m_canvas2->getVisibilityData(), m_canvas2->getVisibilityFrame());
58+
QCOMPARE(m_canvas2->getVisibilityFrameInternal(), false);
59+
QCOMPARE(item2->data(0, cher::DelegateVisibilityRole).toBool(), true);
60+
61+
QCOMPARE(m_rootScene->getAxesVisibility(), false);
62+
QCOMPARE(m_rootScene->getBookmarkToolVisibility(), false);
63+
QCOMPARE(m_actionTools->isChecked(), false);
64+
65+
66+
/* turn visibility back for canvas0 while tools are off */
67+
this->onVisibilitySetCanvas(0);
68+
QCOMPARE(m_canvas0->getVisibilityAll(), true);
69+
QCOMPARE(m_canvas0->getVisibilityData(), m_canvas0->getVisibilityFrame());
70+
QCOMPARE(m_canvas0->getVisibilityFrameInternal(), false);
71+
QCOMPARE(item0->data(0, cher::DelegateVisibilityRole).toBool(), false);
72+
73+
74+
/* add another canvas */
75+
QSignalSpy spy_canvas(m_scene.get(), SIGNAL(requestSceneToolStatus(bool&)));
76+
this->onNewCanvasXY();
77+
QCOMPARE(spy_canvas.count(), 1);
78+
QCOMPARE(m_scene->getNumCanvases(), 4);
79+
entity::Canvas* m_canvas3 = m_scene->getCanvas(3);
80+
QVERIFY(m_canvas3);
81+
QTreeWidgetItem* item3 = m_canvasWidget->topLevelItem(3);
82+
QVERIFY(item3);
83+
QCOMPARE(m_canvas3->getVisibilityAll(), true);
84+
QCOMPARE(m_canvas3->getVisibilityData(), m_canvas3->getVisibilityFrame());
85+
QCOMPARE(m_canvas3->getVisibilityFrameInternal(), false);
86+
QCOMPARE(item3->data(0, cher::DelegateVisibilityRole).toBool(), false);
87+
88+
89+
/* imitate tools on */
90+
m_actionTools->setChecked(true);
91+
92+
QCOMPARE(m_canvas0->getVisibilityAll(), true);
93+
QCOMPARE(m_canvas0->getVisibilityData(), m_canvas0->getVisibilityFrame());
94+
QCOMPARE(m_canvas0->getVisibilityFrameInternal(), true);
95+
QCOMPARE(item0->data(0, cher::DelegateVisibilityRole).toBool(), false);
96+
97+
QCOMPARE(m_canvas1->getVisibilityAll(), true);
98+
QCOMPARE(m_canvas1->getVisibilityData(), m_canvas1->getVisibilityFrame());
99+
QCOMPARE(m_canvas1->getVisibilityFrameInternal(), true);
100+
QCOMPARE(item1->data(0, cher::DelegateVisibilityRole).toBool(), false);
101+
102+
QCOMPARE(m_canvas2->getVisibilityAll(), false);
103+
QCOMPARE(m_canvas2->getVisibilityData(), m_canvas2->getVisibilityFrame());
104+
QCOMPARE(m_canvas2->getVisibilityFrameInternal(), true);
105+
QCOMPARE(item2->data(0, cher::DelegateVisibilityRole).toBool(), true);
106+
107+
QCOMPARE(m_canvas3->getVisibilityAll(), true);
108+
QCOMPARE(m_canvas3->getVisibilityData(), m_canvas3->getVisibilityFrame());
109+
QCOMPARE(m_canvas3->getVisibilityFrameInternal(), true);
110+
QCOMPARE(item3->data(0, cher::DelegateVisibilityRole).toBool(), false);
111+
112+
QCOMPARE(m_rootScene->getAxesVisibility(), true);
113+
QCOMPARE(m_rootScene->getBookmarkToolVisibility(), true);
114+
QCOMPARE(m_actionTools->isChecked(), true);
115+
}
116+
117+
QTEST_MAIN(MainWindowTest)
118+
#include "MainWindowTest.moc"

src/tests/MainWindowTest.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#ifndef MAINWINDOWTEST_H
2+
#define MAINWINDOWTEST_H
3+
4+
#include <QObject>
5+
#include <QTest>
6+
7+
#include "BaseGuiTest.h"
8+
9+
class MainWindowTest : public BaseGuiTest
10+
{
11+
Q_OBJECT
12+
13+
private slots:
14+
void testToolsOnOff();
15+
};
16+
17+
#endif // MAINWINDOWTEST_H

0 commit comments

Comments
 (0)