~alan-griffiths/miral/fix-1645284

« back to all changes in this revision

Viewing changes to miral-qt/tests/modules/SessionManager/session_manager_test.cpp

  • Committer: Alan Griffiths
  • Date: 2016-11-07 17:59:19 UTC
  • mfrom: (436.1.1 miral2)
  • Revision ID: alan@octopull.co.uk-20161107175919-stbb64i7j1htgog2
[miral-qt] delete all as qtmir work on MirAL has shifted to lp:~unity-team/qtmir/miral-qt-integration and this is a needless distration

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Copyright (C) 2013-2015 Canonical, Ltd.
3
 
 *
4
 
 * This program is free software: you can redistribute it and/or modify it under
5
 
 * the terms of the GNU Lesser General Public License version 3, as published by
6
 
 * the Free Software Foundation.
7
 
 *
8
 
 * This program is distributed in the hope that it will be useful, but WITHOUT
9
 
 * ANY WARRANTY; without even the implied warranties of MERCHANTABILITY,
10
 
 * SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11
 
 * Lesser General Public License for more details.
12
 
 *
13
 
 * You should have received a copy of the GNU Lesser General Public License
14
 
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
15
 
 */
16
 
 
17
 
#include <thread>
18
 
#include <condition_variable>
19
 
#include <QSignalSpy>
20
 
 
21
 
#include "promptsession.h"
22
 
#include <Unity/Application/session.h>
23
 
 
24
 
#include "qtmir_test.h"
25
 
 
26
 
using namespace qtmir;
27
 
using mir::scene::MockSession;
28
 
 
29
 
namespace ms = mir::scene;
30
 
 
31
 
class SessionManagerTests : public ::testing::QtMirTest
32
 
{
33
 
public:
34
 
    SessionManagerTests()
35
 
    {}
36
 
 
37
 
    QList<qtmir::PromptSession> listPromptSessions(SessionInterface* session) {
38
 
        QList<qtmir::PromptSession> promptSessions;
39
 
        session->foreachPromptSession([&promptSessions](const qtmir::PromptSession &promptSession) {
40
 
            promptSessions << promptSession;
41
 
        });
42
 
        return promptSessions;
43
 
    }
44
 
 
45
 
    QList<SessionInterface*> listChildSessions(SessionInterface* session) {
46
 
        QList<SessionInterface*> sessions;
47
 
        session->foreachChildSession([&sessions](SessionInterface* session) {
48
 
            sessions << session;
49
 
        });
50
 
        return sessions;
51
 
    }
52
 
};
53
 
 
54
 
TEST_F(SessionManagerTests, sessionTracksPromptSession)
55
 
{
56
 
    using namespace testing;
57
 
 
58
 
    std::shared_ptr<ms::Session> mirAppSession = std::make_shared<MockSession>("mirAppSession", __LINE__);
59
 
    miral::Application app(mirAppSession);
60
 
    miral::ApplicationInfo appInfo(app);
61
 
    sessionManager.onSessionStarting(appInfo);
62
 
    SessionInterface* qtmirAppSession = sessionManager.findSession(mirAppSession.get());
63
 
    EXPECT_TRUE(qtmirAppSession != nullptr);
64
 
 
65
 
    qtmir::PromptSession promptSession{std::make_shared<ms::MockPromptSession>()};
66
 
    ON_CALL(*stubPromptSessionManager, application_for(_)).WillByDefault(Return(mirAppSession));
67
 
 
68
 
    sessionManager.onPromptSessionStarting(promptSession);
69
 
 
70
 
    EXPECT_EQ(qtmirAppSession->activePromptSession(), promptSession);
71
 
 
72
 
    sessionManager.onPromptSessionStopping(promptSession);
73
 
 
74
 
    EXPECT_EQ(qtmirAppSession->activePromptSession(), nullptr);
75
 
 
76
 
    delete qtmirAppSession;
77
 
}
78
 
 
79
 
 
80
 
TEST_F(SessionManagerTests, TestPromptSession)
81
 
{
82
 
    using namespace testing;
83
 
 
84
 
    std::shared_ptr<ms::Session> mirAppSession = std::make_shared<MockSession>("mirAppSession", __LINE__);
85
 
    miral::Application app(mirAppSession);
86
 
    miral::ApplicationInfo appInfo(app);
87
 
    sessionManager.onSessionStarting(appInfo);
88
 
    SessionInterface* qtmirAppSession = sessionManager.findSession(mirAppSession.get());
89
 
    EXPECT_TRUE(qtmirAppSession != nullptr);
90
 
 
91
 
    EXPECT_CALL(*stubPromptSessionManager, application_for(_)).WillRepeatedly(Return(mirAppSession));
92
 
    EXPECT_CALL(*stubPromptSessionManager, helper_for(_)).WillRepeatedly(Return(nullptr));
93
 
 
94
 
    std::shared_ptr<ms::PromptSession> mirPromptSession = std::make_shared<ms::MockPromptSession>();
95
 
    qtmir::PromptSession promptSession{mirPromptSession};
96
 
 
97
 
    // prompt provider session
98
 
    std::shared_ptr<ms::Session> mirProviderSession = std::make_shared<MockSession>("mirProviderSession", __LINE__);
99
 
    miral::Application providerApp(mirProviderSession);
100
 
    miral::ApplicationInfo providerAppInfo(providerApp);
101
 
    sessionManager.onSessionStarting(providerAppInfo);
102
 
    SessionInterface* qtmirProviderSession = sessionManager.findSession(mirProviderSession.get());
103
 
 
104
 
    EXPECT_CALL(*stubPromptSessionManager, for_each_provider_in(mirPromptSession,_)).WillRepeatedly(WithArgs<1>(Invoke(
105
 
        [&](std::function<void(std::shared_ptr<ms::Session> const& prompt_provider)> const& f) {
106
 
            f(mirProviderSession);
107
 
        })));
108
 
 
109
 
    EXPECT_THAT(listPromptSessions(qtmirAppSession), IsEmpty());
110
 
 
111
 
    sessionManager.onPromptSessionStarting(promptSession);
112
 
 
113
 
    EXPECT_THAT(listPromptSessions(qtmirAppSession), ElementsAre(mirPromptSession));
114
 
    EXPECT_THAT(listChildSessions(qtmirAppSession), IsEmpty());
115
 
 
116
 
    sessionManager.onPromptProviderAdded(promptSession, mirProviderSession);
117
 
 
118
 
    EXPECT_THAT(listChildSessions(qtmirAppSession), ElementsAre(qtmirProviderSession));
119
 
 
120
 
    EXPECT_CALL(*stubPromptSessionManager, for_each_provider_in(mirPromptSession,_)).WillRepeatedly(InvokeWithoutArgs([]{}));
121
 
 
122
 
    EXPECT_EQ(qtmirProviderSession->live(), true);
123
 
    sessionManager.onPromptProviderRemoved(promptSession, mirProviderSession);
124
 
    EXPECT_EQ(qtmirProviderSession->live(), false);
125
 
 
126
 
    sessionManager.onPromptSessionStopping(promptSession);
127
 
 
128
 
    EXPECT_THAT(listPromptSessions(qtmirAppSession), IsEmpty());
129
 
 
130
 
    delete qtmirProviderSession;
131
 
    delete qtmirAppSession;
132
 
}