2 * Copyright 2013 Canonical Ltd.
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published by
6 * the Free Software Foundation; version 3.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Lesser General Public License for more details.
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/>.
17 * Nick Dedekind <nick.dedekind@canonical.com>
20#include "menucontentactivator.h"
25class FakeTimer : public UnityIndicators::AbstractTimer
29 FakeTimer(QObject *parent = 0)
30 : UnityIndicators::AbstractTimer(parent)
33 int interval() const override { return m_duration; }
34 void setInterval(int msecs) override { m_duration = msecs; }
46class MenuConentActivatorTest : public QObject
50 void init() // called right before each and every test function is executed
52 m_fakeTimeSource = new FakeTimer(this);
55 void cleanup() // called right after each and every test function is executed
57 delete m_fakeTimeSource;
62 * Tests the ordering of activation
64 void testContentActiveChange()
66 MenuContentActivator activator;
67 activator.setContentTimer(m_fakeTimeSource);
68 activator.setCount(10);
69 activator.setBaseIndex(5);
72 QCOMPARE(activator.isMenuContentActive(4), false);
73 QCOMPARE(activator.isMenuContentActive(5), true); // always active at base index.
74 QCOMPARE(activator.isMenuContentActive(6), false);
76 m_fakeTimeSource->emitTimeout();
77 QCOMPARE(activator.isMenuContentActive(4), false);
78 QCOMPARE(activator.isMenuContentActive(5), true);
79 QCOMPARE(activator.isMenuContentActive(6), true);
80 QCOMPARE(activator.isMenuContentActive(7), false);
82 m_fakeTimeSource->emitTimeout();
83 QCOMPARE(activator.isMenuContentActive(3), false);
84 QCOMPARE(activator.isMenuContentActive(4), true);
85 QCOMPARE(activator.isMenuContentActive(5), true);
86 QCOMPARE(activator.isMenuContentActive(6), true);
87 QCOMPARE(activator.isMenuContentActive(7), false);
89 m_fakeTimeSource->emitTimeout();
90 QCOMPARE(activator.isMenuContentActive(3), false);
91 QCOMPARE(activator.isMenuContentActive(4), true);
92 QCOMPARE(activator.isMenuContentActive(5), true);
93 QCOMPARE(activator.isMenuContentActive(6), true);
94 QCOMPARE(activator.isMenuContentActive(7), true);
95 QCOMPARE(activator.isMenuContentActive(8), false);
97 m_fakeTimeSource->emitTimeout();
98 QCOMPARE(activator.isMenuContentActive(2), false);
99 QCOMPARE(activator.isMenuContentActive(3), true);
100 QCOMPARE(activator.isMenuContentActive(4), true);
101 QCOMPARE(activator.isMenuContentActive(5), true);
102 QCOMPARE(activator.isMenuContentActive(6), true);
103 QCOMPARE(activator.isMenuContentActive(7), true);
104 QCOMPARE(activator.isMenuContentActive(8), false);
106 m_fakeTimeSource->emitTimeout();
107 QCOMPARE(activator.isMenuContentActive(2), false);
108 QCOMPARE(activator.isMenuContentActive(3), true);
109 QCOMPARE(activator.isMenuContentActive(4), true);
110 QCOMPARE(activator.isMenuContentActive(5), true);
111 QCOMPARE(activator.isMenuContentActive(6), true);
112 QCOMPARE(activator.isMenuContentActive(7), true);
113 QCOMPARE(activator.isMenuContentActive(8), true);
114 QCOMPARE(activator.isMenuContentActive(9), false);
116 m_fakeTimeSource->emitTimeout();
117 QCOMPARE(activator.isMenuContentActive(1), false);
118 QCOMPARE(activator.isMenuContentActive(2), true);
119 QCOMPARE(activator.isMenuContentActive(3), true);
120 QCOMPARE(activator.isMenuContentActive(4), true);
121 QCOMPARE(activator.isMenuContentActive(5), true);
122 QCOMPARE(activator.isMenuContentActive(6), true);
123 QCOMPARE(activator.isMenuContentActive(7), true);
124 QCOMPARE(activator.isMenuContentActive(8), true);
125 QCOMPARE(activator.isMenuContentActive(9), false);
127 m_fakeTimeSource->emitTimeout();
128 QCOMPARE(activator.isMenuContentActive(1), false);
129 QCOMPARE(activator.isMenuContentActive(2), true);
130 QCOMPARE(activator.isMenuContentActive(3), true);
131 QCOMPARE(activator.isMenuContentActive(4), true);
132 QCOMPARE(activator.isMenuContentActive(5), true);
133 QCOMPARE(activator.isMenuContentActive(6), true);
134 QCOMPARE(activator.isMenuContentActive(7), true);
135 QCOMPARE(activator.isMenuContentActive(8), true);
136 QCOMPARE(activator.isMenuContentActive(9), true);
137 QCOMPARE(activator.isMenuContentActive(10), false);
139 m_fakeTimeSource->emitTimeout();
140 QCOMPARE(activator.isMenuContentActive(0), false);
141 QCOMPARE(activator.isMenuContentActive(1), true);
142 QCOMPARE(activator.isMenuContentActive(2), true);
143 QCOMPARE(activator.isMenuContentActive(3), true);
144 QCOMPARE(activator.isMenuContentActive(4), true);
145 QCOMPARE(activator.isMenuContentActive(5), true);
146 QCOMPARE(activator.isMenuContentActive(6), true);
147 QCOMPARE(activator.isMenuContentActive(7), true);
148 QCOMPARE(activator.isMenuContentActive(8), true);
149 QCOMPARE(activator.isMenuContentActive(9), true);
150 QCOMPARE(activator.isMenuContentActive(10), false);
152 m_fakeTimeSource->emitTimeout();
153 QCOMPARE(activator.isMenuContentActive(-1), false);
154 QCOMPARE(activator.isMenuContentActive(0), true);
155 QCOMPARE(activator.isMenuContentActive(1), true);
156 QCOMPARE(activator.isMenuContentActive(2), true);
157 QCOMPARE(activator.isMenuContentActive(3), true);
158 QCOMPARE(activator.isMenuContentActive(4), true);
159 QCOMPARE(activator.isMenuContentActive(5), true);
160 QCOMPARE(activator.isMenuContentActive(6), true);
161 QCOMPARE(activator.isMenuContentActive(7), true);
162 QCOMPARE(activator.isMenuContentActive(8), true);
163 QCOMPARE(activator.isMenuContentActive(9), true);
164 QCOMPARE(activator.isMenuContentActive(10), false);
168 * Tests the delta calculation for each timeout.
172 MenuContentActivator activator;
173 activator.setContentTimer(m_fakeTimeSource);
174 activator.setCount(9);
175 activator.setBaseIndex(3);
177 connect(&activator, &MenuContentActivator::deltaChanged,
178 this, &MenuConentActivatorTest::onDeltaChange);
181 QCOMPARE(m_deltas, QList<int>()); // empty
182 QCOMPARE(getIndexList(&activator), QList<int>()); // empty
184 m_fakeTimeSource->emitTimeout();
185 QCOMPARE(m_deltas, QList<int>() << 1);
186 QCOMPARE(getIndexList(&activator), QList<int>() << 4);
188 m_fakeTimeSource->emitTimeout();
189 QCOMPARE(m_deltas, QList<int>() << 1 << -1);
190 QCOMPARE(getIndexList(&activator), QList<int>() << 4 << 2);
192 m_fakeTimeSource->emitTimeout();
193 QCOMPARE(m_deltas, QList<int>() << 1 << -1 << 2);
194 QCOMPARE(getIndexList(&activator), QList<int>() << 4 << 2 << 5);
196 m_fakeTimeSource->emitTimeout();
197 QCOMPARE(m_deltas, QList<int>() << 1 << -1 << 2 << -2);
198 QCOMPARE(getIndexList(&activator), QList<int>() << 4 << 2 << 5 << 1);
200 m_fakeTimeSource->emitTimeout();
201 QCOMPARE(m_deltas, QList<int>() << 1 << -1 << 2 << -2 << 3);
202 QCOMPARE(getIndexList(&activator), QList<int>() << 4 << 2 << 5 << 1 << 6);
204 m_fakeTimeSource->emitTimeout();
205 QCOMPARE(m_deltas, QList<int>() << 1 << -1 << 2 << -2 << 3 << -3);
206 QCOMPARE(getIndexList(&activator), QList<int>() << 4 << 2 << 5 << 1 << 6 << 0);
208 m_fakeTimeSource->emitTimeout();
209 QCOMPARE(m_deltas, QList<int>() << 1 << -1 << 2 << -2 << 3 << -3 << 4);
210 QCOMPARE(getIndexList(&activator), QList<int>() << 4 << 2 << 5 << 1 << 6 << 0 << 7);
212 m_fakeTimeSource->emitTimeout();
213 QCOMPARE(m_deltas, QList<int>() << 1 << -1 << 2 << -2 << 3 << -3 << 4 << 5);
214 QCOMPARE(getIndexList(&activator), QList<int>() << 4 << 2 << 5 << 1 << 6 << 0 << 7 << 8);
216 m_fakeTimeSource->emitTimeout();
217 QCOMPARE(m_deltas, QList<int>() << 1 << -1 << 2 << -2 << 3 << -3 << 4 << 5);
218 QCOMPARE(getIndexList(&activator), QList<int>() << 4 << 2 << 5 << 1 << 6 << 0 << 7 << 8);
222 * Tests that changing the base index re-prioritizes the activation
223 * around the base index.
225 void testBaseIndexChange()
227 MenuContentActivator activator;
228 activator.setContentTimer(m_fakeTimeSource);
229 activator.setCount(12);
230 activator.setBaseIndex(5);
233 m_fakeTimeSource->emitTimeout();
234 m_fakeTimeSource->emitTimeout();
235 QCOMPARE(activator.isMenuContentActive(3), false);
236 QCOMPARE(activator.isMenuContentActive(4), true);
237 QCOMPARE(activator.isMenuContentActive(5), true); // always active at base index.
238 QCOMPARE(activator.isMenuContentActive(6), true);
239 QCOMPARE(activator.isMenuContentActive(7), false);
241 activator.setBaseIndex(8);
242 QCOMPARE(activator.isMenuContentActive(3), false);
243 QCOMPARE(activator.isMenuContentActive(4), true);
244 QCOMPARE(activator.isMenuContentActive(5), true);
245 QCOMPARE(activator.isMenuContentActive(6), true);
246 QCOMPARE(activator.isMenuContentActive(7), false);
247 QCOMPARE(activator.isMenuContentActive(8), true);
248 QCOMPARE(activator.isMenuContentActive(9), false);
250 m_fakeTimeSource->emitTimeout();
251 QCOMPARE(activator.isMenuContentActive(3), false);
252 QCOMPARE(activator.isMenuContentActive(4), true);
253 QCOMPARE(activator.isMenuContentActive(5), true);
254 QCOMPARE(activator.isMenuContentActive(6), true);
255 QCOMPARE(activator.isMenuContentActive(7), false);
256 QCOMPARE(activator.isMenuContentActive(8), true);
257 QCOMPARE(activator.isMenuContentActive(9), true);
258 QCOMPARE(activator.isMenuContentActive(10), false);
260 m_fakeTimeSource->emitTimeout();
261 QCOMPARE(activator.isMenuContentActive(3), false);
262 QCOMPARE(activator.isMenuContentActive(4), true);
263 QCOMPARE(activator.isMenuContentActive(5), true);
264 QCOMPARE(activator.isMenuContentActive(6), true);
265 QCOMPARE(activator.isMenuContentActive(7), true);
266 QCOMPARE(activator.isMenuContentActive(8), true);
267 QCOMPARE(activator.isMenuContentActive(9), true);
268 QCOMPARE(activator.isMenuContentActive(10), false);
270 m_fakeTimeSource->emitTimeout();
271 QCOMPARE(activator.isMenuContentActive(3), false);
272 QCOMPARE(activator.isMenuContentActive(4), true);
273 QCOMPARE(activator.isMenuContentActive(5), true);
274 QCOMPARE(activator.isMenuContentActive(6), true);
275 QCOMPARE(activator.isMenuContentActive(7), true);
276 QCOMPARE(activator.isMenuContentActive(8), true);
277 QCOMPARE(activator.isMenuContentActive(9), true);
278 QCOMPARE(activator.isMenuContentActive(10), true);
279 QCOMPARE(activator.isMenuContentActive(11), false);
282 void onDeltaChange(int delta)
288 QList<int> getIndexList(MenuContentActivator* activator)
291 Q_FOREACH(int delta, m_deltas) {
292 list << (activator->baseIndex() + delta);
297 FakeTimer* m_fakeTimeSource;
301QTEST_GUILESS_MAIN(MenuConentActivatorTest)
302#include "MenuContentActivatorTest.moc"
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list