on xenial help sign in
add tests
commitbc0a41036d7e761be4f8ea97fbcf76a729b70e19 authorMichael Zanetti <michael.zanetti@canonical.com> dateTue 12 Nov 2013, 13:54 (13 years ago) parent8dec5c7
5 files changed+174
Dash/Music/MusicPreview.qml+6 tests/qmltests/CMakeLists.txt+1 tests/qmltests/Dash/Music/data/testsound.ogg tests/qmltests/Dash/Music/tst_MusicPreview.qml+159 tests/qmltests/Dash/tst_GenericScopeView.qml+8
Dash/Music/MusicPreview.qml+6
@@ -56,14 +56,17 @@ GenericPreview {
5656 height: childrenRect.height
5757
5858 ThinDivider {
59+ objectName: "topDivider"
5960 anchors {
6061 left: parent.left
6162 right: parent.right
6263 }
64+ visible: trackRepeater.count > 0
6365 }
6466
6567 Repeater {
6668 id: trackRepeater
69+ objectName: "trackRepeater"
6770
6871 model: previewData.tracks
6972
@@ -84,6 +87,7 @@ GenericPreview {
8487
8588 UbuntuShape {
8689 id: playButtonShape
90+ objectName: "playButton"
8791 width: trackRow.column1Width
8892 height: width
8993 Icon {
@@ -124,6 +128,7 @@ GenericPreview {
124128
125129 UbuntuShape {
126130 id: progressBarFill
131+ objectName: "progressBarFill"
127132 color: UbuntuColors.orange
128133 anchors.left: progressBarImage.left
129134 anchors.right: progressBarImage.right
@@ -172,6 +177,7 @@ GenericPreview {
172177
173178 Audio {
174179 id: audioPlayer
180+ objectName: "audioPlayer"
175181 source: uri
176182 property real percent: audioPlayer.position * 100 / audioPlayer.duration
177183
tests/qmltests/CMakeLists.txt+1
@@ -53,6 +53,7 @@ add_qml_test(Dash FilterGrids IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMA
5353add_qml_test(Dash/Apps RunningApplicationsGrid IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
5454add_qml_test(Dash/Apps AppPreview IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
5555add_qml_test(Dash/Movie MoviePreview IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
56+add_qml_test(Dash/Music MusicPreview IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
5657add_qml_test(Greeter Lockscreen IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS}
5758 PROPERTIES ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/full")
5859add_qml_test(Greeter Tablet IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS}
tests/qmltests/Dash/Music/data/testsound.oggnew file

Binary file not shown.

tests/qmltests/Dash/Music/tst_MusicPreview.qmlnew file+159
@@ -0,0 +1,159 @@
1+/*
2+ * Copyright 2013 Canonical Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
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 General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+import QtQuick 2.0
18+import QtTest 1.0
19+import "../../../../Dash/Music"
20+import Unity.Test 0.1 as UT
21+import QtMultimedia 5.0
22+
23+Rectangle {
24+ id: root
25+ width: units.gu(60)
26+ height: units.gu(80)
27+ color: "lightgrey"
28+
29+ MusicPreview {
30+ id: musicPreview
31+ anchors.fill: parent
32+ isCurrent: true
33+
34+ previewData: QtObject {
35+ property string rendererName: "preview-music"
36+ property string title: "Music Preview"
37+ property string subtitle: "Subtitle"
38+ property string description: "This is the description"
39+ property string image: "../../tests/qmltests/Components/tst_LazyImage/square.png"
40+ property var actions: [
41+ { id: 123, displayName: "Play"},
42+ { id: 456, displayName: "Show in folder"}
43+ ]
44+ property var execute: fake_callback
45+
46+ property var tracks: tracksModel3
47+ }
48+ }
49+
50+ ListModel {
51+ id: tracksModel0
52+ }
53+ ListModel {
54+ id: tracksModel1
55+ ListElement { uri: "../../tests/qmltests/Dash/Music/data/testsound.ogg"; trackNo: 1; title: "Some track name"; length: "0:30"}
56+ }
57+ ListModel {
58+ id: tracksModel3
59+ ListElement { uri: "../../tests/qmltests/Dash/Music/data/testsound.ogg"; trackNo: 1; title: "Some track name"; length: "0:30"}
60+ ListElement { uri: "../../tests/qmltests/Dash/Music/data/testsound.ogg"; trackNo: 2; title: "Some other track name"; length: "1:23"}
61+ ListElement { uri: "../../tests/qmltests/Dash/Music/data/testsound.ogg"; trackNo: 3; title: "And another one"; length: "123:45"}
62+ }
63+
64+ UT.UnityTestCase {
65+ name: "MusicPreviewTest"
66+ when: windowShown
67+
68+ function init() {
69+ waitForRendering(musicPreview);
70+ }
71+
72+ function test_tracks_data() {
73+ return [
74+ {tag: "0 tracks", tracksModel: tracksModel0, dividerVisible: false},
75+ {tag: "1 track", tracksModel: tracksModel1, dividerVisible: true},
76+ {tag: "3 track", tracksModel: tracksModel1, dividerVisible: true}
77+ ];
78+ }
79+
80+ function test_tracks(data) {
81+ musicPreview.previewData.tracks = data.tracksModel;
82+ waitForRendering(musicPreview);
83+
84+ var trackRepeater = findChild(musicPreview, "trackRepeater");
85+ compare(trackRepeater.count, data.tracksModel.count)
86+
87+ var topDivider = findChild(musicPreview, "topDivider");
88+ compare(topDivider.visible, data.dividerVisible);
89+
90+ for (var i = 0; i < data.tracksModel.count; ++i) {
91+ var trackItem = findChild(musicPreview, "trackItem" + i);
92+ var titleLabel = findChild(trackItem, "trackTitleLabel");
93+ compare(titleLabel.text, data.tracksModel.get(i).title)
94+ var timeLabel = findChild(trackItem, "timeLabel");
95+ compare(timeLabel.text, data.tracksModel.get(i).length)
96+ }
97+ }
98+
99+ function test_playback() {
100+ musicPreview.previewData.tracks = tracksModel3;
101+ waitForRendering(musicPreview);
102+
103+ var track0Item = findChild(musicPreview, "trackItem0");
104+ var track1Item = findChild(musicPreview, "trackItem1");
105+ var track2Item = findChild(musicPreview, "trackItem2");
106+
107+ var track0ProgressBar = findChild(track0Item, "progressBarFill");
108+ var track1ProgressBar = findChild(track1Item, "progressBarFill");
109+ var track2ProgressBar = findChild(track2Item, "progressBarFill");
110+
111+ var track0PlayButton = findChild(track0Item, "playButton");
112+ var track1PlayButton = findChild(track1Item, "playButton");
113+ var track2PlayButton = findChild(track2Item, "playButton");
114+
115+ var track0AudioPlayer = findInvisibleChild(track0Item, "audioPlayer");
116+ var track1AudioPlayer = findInvisibleChild(track1Item, "audioPlayer");
117+ var track2AudioPlayer = findInvisibleChild(track1Item, "audioPlayer");
118+
119+ // All progress bars must be hidden in the beginning
120+ compare(track0ProgressBar.visible, false);
121+ compare(track1ProgressBar.visible, false);
122+ compare(track2ProgressBar.visible, false);
123+
124+ // Playing track 0 should make progress bar 0 visible
125+ mouseClick(track0PlayButton, track0PlayButton.width / 2, track0PlayButton.height / 2);
126+
127+ tryCompare(track0AudioPlayer, "playbackState", Audio.PlayingState);
128+
129+ tryCompare(track0ProgressBar, "visible", true);
130+ tryCompare(track1ProgressBar, "visible", false);
131+ tryCompare(track2ProgressBar, "visible", false);
132+
133+ // Clicking the button again should pause it. The progress bar should stay visible
134+ mouseClick(track0PlayButton, track0PlayButton.width / 2, track0PlayButton.height / 2);
135+ tryCompare(track0AudioPlayer, "playbackState", Audio.PausedState);
136+ tryCompare(track0ProgressBar, "visible", true);
137+
138+ // Continue playback
139+ mouseClick(track0PlayButton, track0PlayButton.width / 2, track0PlayButton.height / 2);
140+ tryCompare(track0AudioPlayer, "playbackState", Audio.PlayingState);
141+
142+ // Playing track 1 should make progress bar 1 visible and hide progress bar 0 again
143+ mouseClick(track1PlayButton, track1PlayButton.width / 2, track1PlayButton.height / 2);
144+
145+ tryCompare(track0AudioPlayer, "playbackState", Audio.StoppedState)
146+ tryCompare(track1AudioPlayer, "playbackState", Audio.PlayingState)
147+
148+ tryCompare(track0ProgressBar, "visible", false);
149+ tryCompare(track1ProgressBar, "visible", true);
150+ tryCompare(track2ProgressBar, "visible", false);
151+
152+ // Switching away from this preview should make all players shut up!
153+ musicPreview.isCurrent = false
154+ tryCompare(track0AudioPlayer, "playbackState", Audio.StoppedState)
155+ tryCompare(track1AudioPlayer, "playbackState", Audio.StoppedState)
156+ tryCompare(track2AudioPlayer, "playbackState", Audio.StoppedState)
157+ }
158+ }
159+}
tests/qmltests/Dash/tst_GenericScopeView.qml+8
@@ -169,6 +169,14 @@ Item {
169169 waitForRendering(nextPreviewItem);
170170
171171 checkArrowPosition(i);
172+
173+ // Make sure only the new one has isCurrent set to true
174+ if (currentPreviewItem.item) {
175+ compare(currentPreviewItem.item.isCurrent, false);
176+ }
177+ compare(nextPreviewItem.item.isCurrent, true);
178+
179+ currentPreviewItem = nextPreviewItem;
172180 }
173181
174182 closePreview();