|
1 /* |
|
2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: Unit test for mpmpxdetailsframeworkwrapper |
|
15 * |
|
16 */ |
|
17 |
|
18 #include <QSignalSpy> |
|
19 #include <hbapplication.h> |
|
20 #include <hbmainwindow.h> |
|
21 |
|
22 #include <mpxmessagegeneraldefs.h> |
|
23 #include <mpxplaybackmessage.h> |
|
24 #include <mpxmediamusicdefs.h> |
|
25 #include <mpxmediageneraldefs.h> |
|
26 #include <mpxmediaaudiodefs.h> |
|
27 |
|
28 #include <e32std.h> |
|
29 #include <e32des8.h> |
|
30 |
|
31 #include "unittest_mpmpxdetailsframeworkwrapper.h" |
|
32 #include "stub/inc/mpxplaybackutility.h" |
|
33 #include "stub/inc/mpsongdata.h" |
|
34 #include "logger.h" |
|
35 #include "mpcommondefs.h" |
|
36 |
|
37 // classes under test |
|
38 #define private public |
|
39 #include "mpmpxdetailsframeworkwrapper.h" |
|
40 #include "mpmpxdetailsframeworkwrapper_p.h" |
|
41 #undef private |
|
42 |
|
43 struct TTestAttrs |
|
44 { |
|
45 const wchar_t* GeneralTitle; // MpSongData::mTitle |
|
46 const wchar_t* MusicArtist; // MpSongData::mArtist |
|
47 const wchar_t* MusicAlbum; // MpSongData::mAlbum |
|
48 const wchar_t* MusicAlbumArtFileName; // MpSongData::mAlbumArt (TODO: not tested yet) |
|
49 const wchar_t* Composer; // MpSongData::mComposer |
|
50 const TInt Year; // MpSongData::mYear |
|
51 const wchar_t* MusicAlbumTrack; // MpSongData::mAlbumTrack |
|
52 const wchar_t* MusicGenre; // MpSongData::mGenre |
|
53 const wchar_t* MusicUri; // N/A in MpSongData (TODO: not tested yet) |
|
54 const wchar_t* MimeType; // MpSongData::mMimeType |
|
55 const TInt Duration; // MpSongData::mDuration |
|
56 const TInt MediaAudioBitRate; // MpSongData::mbitRate |
|
57 const TInt MediaAudioSampleRate; // MpSongData::mSampleRate |
|
58 const wchar_t* Copyright; // MpSongData::mCopyright |
|
59 const wchar_t* Url; // MpSongData::mMusicURL |
|
60 }; |
|
61 |
|
62 // title |
|
63 const TInt KTitleZeroSized = 0; |
|
64 const TInt KTitleVeryLarge = 1; |
|
65 const TInt KTitleOff = 2; |
|
66 |
|
67 // artist |
|
68 const TInt KMusicArtistZeroSized = 3; |
|
69 const TInt KMusicArtistLarge = 4; |
|
70 const TInt KMusicArtistOff = 5; |
|
71 |
|
72 // album |
|
73 const TInt KAlbumZeroSized = 6; |
|
74 const TInt KAlbumLarge = 7; |
|
75 const TInt KAlbumOff = 8; |
|
76 |
|
77 // comment |
|
78 const TInt KCommentZeroSized = 9; |
|
79 const TInt KCommentLarge = 10; |
|
80 const TInt KCommentOff = 11; |
|
81 |
|
82 // composer |
|
83 const TInt KComposerZeroSized = 12; |
|
84 const TInt KComposerLarge = 13; |
|
85 const TInt KComposerOff = 14; |
|
86 |
|
87 // year |
|
88 const TInt KYearNegative = 15; |
|
89 const TInt KYearZero = 16; |
|
90 const TInt KYearPositive = 17; |
|
91 const TInt KYearOff = 18; |
|
92 |
|
93 // album track |
|
94 const TInt KAlbumTrackZeroSized = 19; |
|
95 const TInt KAlbumTrackLarge = 20; |
|
96 const TInt KAlbumTrackOff = 21; |
|
97 |
|
98 // genre |
|
99 const TInt KGenreZeroSized = 22; |
|
100 const TInt KGenreLarge = 23; |
|
101 const TInt KGenreOff = 24; |
|
102 |
|
103 // everything is OFF |
|
104 const TInt KAllFieldsOFF = 25; |
|
105 |
|
106 // MIME Type |
|
107 const TInt KMimeTypeZeroSized = 26; |
|
108 const TInt KMimeTypeMP3 = 27; |
|
109 const TInt KMimeTypeLarge = 28; |
|
110 const TInt KMimeTypeOff = 29; |
|
111 |
|
112 // duration |
|
113 const TInt KDuration = 30; |
|
114 |
|
115 // bit rate |
|
116 const TInt KMediaAudioBitrate = 31; |
|
117 |
|
118 // sample rate |
|
119 const TInt KMediaAudioSampleRate = 32; |
|
120 |
|
121 // sample rate |
|
122 const TInt KMediaGeneralCopyright = 33; |
|
123 const TInt KMediaMusicURL = 34; |
|
124 |
|
125 _LIT(KOff,"OFF"); |
|
126 |
|
127 const TTestAttrs KAllSongsTestData[] = |
|
128 { |
|
129 // Title |
|
130 { L"", L"Artist 1", L"Album 1", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2009, L"Track 1", L"Genre", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
131 ,{ L"LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM", L"Artist 1", L"Album 1", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2009, L"Track 1", L"Genre", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
132 ,{ L"OFF", L"Artist 1", L"Album 1", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2009, L"Track 1", L"", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
133 // Artist |
|
134 , { L"Title", L"", L"Album 1", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2009, L"Track 1", L"", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
135 , { L"Title", L"LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM", L"Album 1", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2009, L"Track 1", L"Genre", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
136 ,{ L"Title", L"OFF", L"Album 1", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2009, L"Track 1", L"", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
137 // Album |
|
138 , { L"Title", L"Artist", L"", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2009, L"Track 1", L"", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
139 , { L"Title", L"Artist", L"LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2009, L"Track 1", L"Genre", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
140 , { L"Title", L"Artist", L"OFF", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2009, L"Track 1", L"", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
141 // Comment |
|
142 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2009, L"Track 1", L"", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
143 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2009, L"Track 1", L"Genre", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
144 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2009, L"Track 1", L"", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
145 // Composer |
|
146 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2009, L"Track 1", L"", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
147 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM", 2009, L"Track 1", L"Genre", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
148 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"OFF", 2009, L"Track 1", L"", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
149 // Year |
|
150 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", -200, L"Track 1", L"Genre", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
151 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", 0, L"Track 1", L"Genre", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
152 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", 3000, L"Track 1", L"Genre", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
153 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", -1, L"Track 1", L"Genre", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
154 // Album Track |
|
155 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2000, L"", L"Genre", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
156 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2000, L"LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM", L"Genre", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
157 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2000, L"OFF", L"Genre", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
158 // Genre |
|
159 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2000, L"Track", L"", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
160 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2000, L"Track", L"LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
161 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2000, L"Track", L"OFF", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
162 // all fields OFF |
|
163 , { L"OFF", L"OFF", L"OFF", L"OFF", L"OFF", -1, L"OFF", L"OFF", L"OFF", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
164 // MIME TYPE - FORMAT |
|
165 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2000, L"Track", L"Genre", L"Uri 1", L"", -1,-1,-1, L"OFF", L"OFF"} |
|
166 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2000, L"Track", L"Genre", L"Uri 1", L"MP3", -1,-1,-1, L"OFF", L"OFF"} |
|
167 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2000, L"Track", L"Genre", L"Uri 1", L"LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM LOREM IPSUM", -1,-1,-1, L"OFF", L"OFF"} |
|
168 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2000, L"Track", L"Genre", L"Uri 1", L"OFF", -1,-1,-1, L"OFF", L"OFF"} |
|
169 // duration |
|
170 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2000, L"Track", L"Genre", L"Uri 1", L"", 0,-1,-1, L"OFF", L"OFF"} |
|
171 // KMediaAudioBitrate |
|
172 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2000, L"Track", L"Genre", L"Uri 1", L"", 0,0, -1, L"OFF", L"OFF"} |
|
173 // KMPXMediaAudioSamplerate |
|
174 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2000, L"Track", L"Genre", L"Uri 1", L"", -1,-1, 0, L"OFF", L"OFF"} |
|
175 // KMPXMediaGeneralCopyright |
|
176 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2000, L"Track", L"Genre", L"Uri 1", L"", -1,-1, 0, L"Copyright", L"OFF"} |
|
177 // KMPXMediaMusicURL |
|
178 , { L"Title", L"Artist", L"Album", L"e:\\data\\images\\art1.jpg", L"Composer 1", 2000, L"Track", L"Genre", L"Uri 1", L"", -1,-1, 0, L"OFF", L"URL"} |
|
179 |
|
180 }; |
|
181 |
|
182 |
|
183 QString referenceGeneralCopyright(int index) |
|
184 { |
|
185 QString result; |
|
186 const TDesC& copyright = TPtrC(reinterpret_cast<const TUint16*>(KAllSongsTestData[index].Copyright)); |
|
187 if(copyright.Match(KOff) == KErrNotFound) |
|
188 { |
|
189 result = QString::fromUtf16( copyright.Ptr(), copyright.Length() ); |
|
190 } |
|
191 return result; |
|
192 } |
|
193 |
|
194 QString referenceUrl(int index) |
|
195 { |
|
196 QString result; |
|
197 const TDesC& url = TPtrC(reinterpret_cast<const TUint16*>(KAllSongsTestData[index].Url)); |
|
198 if(url.Match(KOff) == KErrNotFound) |
|
199 { |
|
200 result = QString::fromUtf16( url.Ptr(), url.Length() ); |
|
201 } |
|
202 return result; |
|
203 } |
|
204 |
|
205 QString referenceMimeType(int index) |
|
206 { |
|
207 QString result; |
|
208 const TDesC& title = TPtrC(reinterpret_cast<const TUint16*>(KAllSongsTestData[index].MimeType)); |
|
209 _LIT(KMime, "audio/aac"); |
|
210 if(title.Match(KMime) == KErrNone) |
|
211 { |
|
212 result = QString("AAC"); |
|
213 } |
|
214 return result; |
|
215 } |
|
216 |
|
217 QString referenceGeneralTitle(int index) |
|
218 { |
|
219 QString result; |
|
220 const TDesC& title = TPtrC(reinterpret_cast<const TUint16*>(KAllSongsTestData[index].GeneralTitle)); |
|
221 if(title.Match(KOff) == KErrNotFound) |
|
222 { |
|
223 result = QString::fromUtf16( title.Ptr(), title.Length() ); |
|
224 } |
|
225 return result; |
|
226 } |
|
227 |
|
228 QString referenceMusicArtist(int index) |
|
229 { |
|
230 QString result; |
|
231 const TDesC& artist = TPtrC(reinterpret_cast<const TUint16*>(KAllSongsTestData[index].MusicArtist)); |
|
232 if(artist.Match(KOff) == KErrNotFound) |
|
233 { |
|
234 result = QString::fromUtf16( artist.Ptr(), artist.Length()); |
|
235 } |
|
236 return result; |
|
237 } |
|
238 |
|
239 QString referenceMusicAlbum(int index) |
|
240 { |
|
241 QString result; |
|
242 const TDesC& album = TPtrC(reinterpret_cast<const TUint16*>(KAllSongsTestData[index].MusicAlbum)); |
|
243 if(album.Match(KOff) == KErrNotFound) |
|
244 { |
|
245 result = QString::fromUtf16( album.Ptr(), album.Length() ); |
|
246 } |
|
247 return result; |
|
248 } |
|
249 |
|
250 QString referenceMusicAlbumArtFileName(int index) |
|
251 { |
|
252 QString result; |
|
253 const TDesC& musicAlbumArtFileName = TPtrC(reinterpret_cast<const TUint16*>(KAllSongsTestData[index].MusicAlbumArtFileName)); |
|
254 if(musicAlbumArtFileName.Match(KOff) == KErrNotFound) |
|
255 { |
|
256 result = QString::fromUtf16( musicAlbumArtFileName.Ptr(), musicAlbumArtFileName.Length() ); |
|
257 } |
|
258 return result; |
|
259 } |
|
260 |
|
261 QString referenceComposer(int index) |
|
262 { |
|
263 QString result; |
|
264 const TDesC& composer = TPtrC(reinterpret_cast<const TUint16*>(KAllSongsTestData[index].Composer)); |
|
265 if(composer.Match(KOff) == KErrNotFound) |
|
266 { |
|
267 result = QString::fromUtf16( composer.Ptr(), composer.Length() ); |
|
268 } |
|
269 return result; |
|
270 } |
|
271 |
|
272 int referenceYear(int index) |
|
273 { |
|
274 return (KAllSongsTestData[index].Year >= 0) ? KAllSongsTestData[index].Year : 0; |
|
275 } |
|
276 |
|
277 QString referenceMusicAlbumTrack(int index) |
|
278 { |
|
279 QString result; |
|
280 const TDesC& musicAlbumTrack = TPtrC(reinterpret_cast<const TUint16*>(KAllSongsTestData[index].MusicAlbumTrack)); |
|
281 if(musicAlbumTrack.Match(KOff) == KErrNotFound) |
|
282 { |
|
283 result = QString::fromUtf16( musicAlbumTrack.Ptr(), musicAlbumTrack.Length() ); |
|
284 } |
|
285 return result; |
|
286 } |
|
287 |
|
288 QString referenceMusicGenre(int index) |
|
289 { |
|
290 QString result; |
|
291 const TDesC& musicGenre = TPtrC(reinterpret_cast<const TUint16*>(KAllSongsTestData[index].MusicGenre)); |
|
292 if(musicGenre.Match(KOff) == KErrNotFound) |
|
293 { |
|
294 result = QString::fromUtf16( musicGenre.Ptr(), musicGenre.Length() ); |
|
295 } |
|
296 return result; |
|
297 } |
|
298 |
|
299 QString referenceMusicUri(int index) |
|
300 { |
|
301 QString result; |
|
302 const TDesC& musicUri = TPtrC(reinterpret_cast<const TUint16*>(KAllSongsTestData[index].MusicUri)); |
|
303 if(musicUri.Match(KOff) == KErrNotFound) |
|
304 { |
|
305 result = QString::fromUtf16( musicUri.Ptr(), musicUri.Length() ); |
|
306 } |
|
307 return result; |
|
308 } |
|
309 |
|
310 /*! |
|
311 Make our test case a stand-alone executable that runs all the test functions. |
|
312 */ |
|
313 int main(int argc, char *argv[]) |
|
314 { |
|
315 HbApplication app(argc, argv); |
|
316 HbMainWindow window; |
|
317 |
|
318 TestMpMpxDetailsFrameworkWrapper tv; |
|
319 |
|
320 if ( argc > 1 ) { |
|
321 return QTest::qExec( &tv, argc, argv); |
|
322 } |
|
323 else { |
|
324 char *pass[3]; |
|
325 pass[0] = argv[0]; |
|
326 pass[1] = "-o"; |
|
327 pass[2] = "c:\\data\\unittest_mpmpxdetailsframeworkwrapper.txt"; |
|
328 |
|
329 return QTest::qExec(&tv, 3, pass); |
|
330 } |
|
331 |
|
332 } |
|
333 |
|
334 TestMpMpxDetailsFrameworkWrapper::TestMpMpxDetailsFrameworkWrapper() |
|
335 : mTest(0), |
|
336 iMediaTestData(0), |
|
337 mSongDetailInfoChanged(false), |
|
338 mPlaybackInfoChanged(false) |
|
339 { |
|
340 } |
|
341 |
|
342 TestMpMpxDetailsFrameworkWrapper::~TestMpMpxDetailsFrameworkWrapper() |
|
343 { |
|
344 delete mTest; |
|
345 } |
|
346 |
|
347 /*! |
|
348 Called before the first testfunction is executed. |
|
349 */ |
|
350 void TestMpMpxDetailsFrameworkWrapper::initTestCase() |
|
351 { |
|
352 } |
|
353 |
|
354 /*! |
|
355 Called after the last testfunction was executed. |
|
356 */ |
|
357 void TestMpMpxDetailsFrameworkWrapper::cleanupTestCase() |
|
358 { |
|
359 QCoreApplication::processEvents(); |
|
360 } |
|
361 |
|
362 /*! |
|
363 Called before each testfunction is executed. |
|
364 */ |
|
365 void TestMpMpxDetailsFrameworkWrapper::init() |
|
366 { |
|
367 User::__DbgMarkStart(RHeap::EUser); |
|
368 TInt freeCount(0); |
|
369 mAllocCells = User::CountAllocCells(freeCount); |
|
370 TRACE3("TestMpMpxDetailsFrameworkWrapper::init() -- allocCount: %d, freeCount: %d", |
|
371 mAllocCells, freeCount ); |
|
372 |
|
373 mTest = new MpMpxDetailsFrameworkWrapper( TUid::Uid( MpCommon::KMusicPlayerUid ) ); |
|
374 mTestPrivate = mTest->d_ptr; |
|
375 } |
|
376 |
|
377 /*! |
|
378 Called after every testfunction. |
|
379 */ |
|
380 void TestMpMpxDetailsFrameworkWrapper::cleanup() |
|
381 { |
|
382 delete mTest; |
|
383 mTest = 0; |
|
384 mTestPrivate = 0; |
|
385 |
|
386 TInt freeCount(0); |
|
387 TInt allocCount = User::CountAllocCells(freeCount); |
|
388 TRACE3( "TestMpMpxDetailsFrameworkWrapper::cleanup() -- allocCount: %d, freeCount: %d", |
|
389 allocCount, freeCount ); |
|
390 User::__DbgMarkEnd(RHeap::EUser,0); // this should panic if leak |
|
391 } |
|
392 |
|
393 /*! |
|
394 Tests constructor. |
|
395 */ |
|
396 void TestMpMpxDetailsFrameworkWrapper::testConstructor() |
|
397 { |
|
398 QVERIFY( mTestPrivate->q_ptr ); |
|
399 QVERIFY( mTestPrivate->iPlaybackUtility ); |
|
400 QVERIFY( mTestPrivate->iSongData ); |
|
401 // TODO: test observer? |
|
402 } |
|
403 |
|
404 /*! |
|
405 Tests playbackData |
|
406 */ |
|
407 void TestMpMpxDetailsFrameworkWrapper::testSongData() |
|
408 { |
|
409 QCOMPARE(mTestPrivate->iSongData, mTest->songData()); |
|
410 } |
|
411 |
|
412 void TestMpMpxDetailsFrameworkWrapper::testHandleProperty() |
|
413 { |
|
414 // dummy call just to get coverage up. Empty imp in function under test |
|
415 mTestPrivate->HandlePropertyL(EPbPropertyVolume, 0, 0); |
|
416 } |
|
417 |
|
418 void TestMpMpxDetailsFrameworkWrapper::testHandleSubPlayerNames() |
|
419 { |
|
420 // dummy call just to get coverage up. Empty imp in function under test |
|
421 mTestPrivate->HandleSubPlayerNamesL(TUid::Null(), 0, 0, 0); |
|
422 } |
|
423 |
|
424 /*! |
|
425 Tests testHandlePlaybackMessage |
|
426 */ |
|
427 void TestMpMpxDetailsFrameworkWrapper::testHandlePlaybackMessage() |
|
428 { |
|
429 RArray<TInt> supportedIds; |
|
430 CleanupClosePushL( supportedIds ); |
|
431 supportedIds.AppendL( KMPXMessageContentIdGeneral ); |
|
432 CMPXMedia* testMessage = CMPXMedia::NewL(supportedIds.Array()); |
|
433 CleanupStack::PopAndDestroy(&supportedIds); |
|
434 CleanupStack::PushL(testMessage); |
|
435 testMessage->SetTObjectValueL<TMPXMessageId>( KMPXMessageGeneralId, KMPXMessageGeneral); |
|
436 |
|
437 //Media change |
|
438 testMessage->SetTObjectValueL<TInt>(KMPXMessageGeneralEvent,TMPXPlaybackMessage::EMediaChanged); |
|
439 testMessage->SetTObjectValueL<TInt>(KMPXMessageGeneralType,0); |
|
440 testMessage->SetTObjectValueL<TInt>(KMPXMessageGeneralData,0); |
|
441 mTestPrivate->HandlePlaybackMessage(testMessage, KErrNone); |
|
442 CleanupStack::PopAndDestroy(testMessage); |
|
443 } |
|
444 |
|
445 void TestMpMpxDetailsFrameworkWrapper::verifyEmptyTestData() |
|
446 { |
|
447 QVERIFY(mTestPrivate->iSongData->title().isEmpty()); |
|
448 QVERIFY(mTestPrivate->iSongData->album().isEmpty()); |
|
449 QVERIFY(mTestPrivate->iSongData->artist().isEmpty()); |
|
450 QVERIFY(mTestPrivate->iSongData->comment().isEmpty()); |
|
451 QVERIFY(mTestPrivate->iSongData->year().isEmpty()); |
|
452 QVERIFY(mTestPrivate->iSongData->genre().isEmpty()); |
|
453 QVERIFY(mTestPrivate->iSongData->composer().isEmpty()); |
|
454 QVERIFY(mTestPrivate->iSongData->albumTrack().isEmpty()); |
|
455 QVERIFY(mTestPrivate->iSongData->link().isEmpty()); |
|
456 QVERIFY(mTestPrivate->iSongData->mimeType().isEmpty()); |
|
457 QVERIFY(mTestPrivate->songData()->duration().isEmpty()); |
|
458 QVERIFY(mTestPrivate->songData()->bitRate().isEmpty()); |
|
459 QVERIFY(mTestPrivate->songData()->sampleRate().isEmpty()); |
|
460 QVERIFY(mTestPrivate->songData()->copyright().isEmpty()); |
|
461 QVERIFY(mTestPrivate->songData()->musicURL().isEmpty()); |
|
462 } |
|
463 |
|
464 void TestMpMpxDetailsFrameworkWrapper::verify(int index) |
|
465 { |
|
466 QCOMPARE(mTestPrivate->songData()->title(), referenceGeneralTitle( index )); |
|
467 QCOMPARE(mTestPrivate->songData()->album(), referenceMusicAlbum( index )); |
|
468 QCOMPARE(mTestPrivate->songData()->artist(), referenceMusicArtist( index )); |
|
469 // TODO: how to verify albumArt ? |
|
470 QCOMPARE(mTestPrivate->songData()->composer(), referenceComposer( index )); |
|
471 QCOMPARE(mTestPrivate->songData()->year().toInt(), referenceYear( index )); |
|
472 QCOMPARE(mTestPrivate->songData()->albumTrack(), referenceMusicAlbumTrack( index )); |
|
473 QCOMPARE(mTestPrivate->songData()->genre(), referenceMusicGenre( index )); |
|
474 QCOMPARE(mTestPrivate->songData()->mimeType(), referenceMimeType( index )); |
|
475 QVERIFY(mTestPrivate->songData()->duration().isEmpty()); |
|
476 QVERIFY(mTestPrivate->songData()->bitRate().isEmpty()); |
|
477 QVERIFY(mTestPrivate->songData()->sampleRate().isEmpty()); |
|
478 QCOMPARE(mTestPrivate->songData()->copyright(), referenceGeneralCopyright(index) ); |
|
479 QCOMPARE(mTestPrivate->songData()->musicURL(), referenceUrl(index) ); |
|
480 |
|
481 } |
|
482 |
|
483 void TestMpMpxDetailsFrameworkWrapper::doTestHandleMedia(int dataIndex, TInt aResult) |
|
484 { |
|
485 init(); |
|
486 loadTestData(dataIndex); |
|
487 mTestPrivate->HandleMediaL(*iMediaTestData, aResult); |
|
488 if(aResult != KErrNone) |
|
489 { |
|
490 verifyEmptyTestData(); |
|
491 } |
|
492 else |
|
493 { |
|
494 verify(dataIndex); |
|
495 } |
|
496 cleanup(); |
|
497 } |
|
498 |
|
499 /* |
|
500 Tests handleMedia |
|
501 */ |
|
502 void TestMpMpxDetailsFrameworkWrapper::testHandleMedia() |
|
503 { |
|
504 // testing passing error code. iSongData should not be modified |
|
505 // as it got constructed fresh with init(), all its string |
|
506 // members must be empty |
|
507 doTestHandleMedia(KTitleZeroSized, KErrGeneral); |
|
508 |
|
509 // Testing zero sized title |
|
510 doTestHandleMedia(KTitleZeroSized, KErrNone); |
|
511 |
|
512 // very large title |
|
513 doTestHandleMedia(KTitleVeryLarge, KErrNone); |
|
514 |
|
515 // Testing title field OFF |
|
516 doTestHandleMedia(KTitleOff, KErrNone); |
|
517 |
|
518 // Testing artist empty string |
|
519 doTestHandleMedia(KMusicArtistZeroSized, KErrNone); |
|
520 |
|
521 // Testing artist long |
|
522 doTestHandleMedia(KMusicArtistLarge, KErrNone); |
|
523 |
|
524 // Testing artist field OFF |
|
525 doTestHandleMedia(KMusicArtistOff, KErrNone); |
|
526 |
|
527 // Testing album zero sized |
|
528 doTestHandleMedia(KAlbumZeroSized, KErrNone); |
|
529 |
|
530 // Testing album long |
|
531 doTestHandleMedia(KAlbumLarge, KErrNone); |
|
532 |
|
533 // Testing album off |
|
534 doTestHandleMedia(KAlbumOff, KErrNone); |
|
535 |
|
536 // Testing comment zero sized |
|
537 doTestHandleMedia(KCommentZeroSized, KErrNone); |
|
538 |
|
539 // Testing comment large |
|
540 doTestHandleMedia(KCommentLarge, KErrNone); |
|
541 |
|
542 // Testing comment OFF |
|
543 doTestHandleMedia(KCommentOff, KErrNone); |
|
544 |
|
545 // Testing composer zero sized |
|
546 doTestHandleMedia(KComposerZeroSized, KErrNone); |
|
547 |
|
548 // Testing composer large |
|
549 doTestHandleMedia(KComposerLarge, KErrNone); |
|
550 |
|
551 // Testing composer OFF |
|
552 doTestHandleMedia(KComposerOff, KErrNone); |
|
553 |
|
554 // Testing year negative |
|
555 doTestHandleMedia(KYearNegative, KErrNone); |
|
556 |
|
557 // Testing year 0 |
|
558 doTestHandleMedia(KYearZero, KErrNone); |
|
559 |
|
560 // Testing year + |
|
561 doTestHandleMedia(KYearPositive, KErrNone); |
|
562 |
|
563 // Testing year OFF |
|
564 doTestHandleMedia(KYearOff, KErrNone); |
|
565 |
|
566 // Testing album track zero sized |
|
567 doTestHandleMedia(KAlbumTrackZeroSized, KErrNone); |
|
568 |
|
569 // Testing album track large |
|
570 doTestHandleMedia(KAlbumTrackLarge, KErrNone); |
|
571 |
|
572 // Testing album track OFF |
|
573 doTestHandleMedia(KAlbumTrackOff, KErrNone); |
|
574 |
|
575 // Testing genre zero sized |
|
576 doTestHandleMedia(KGenreZeroSized, KErrNone); |
|
577 |
|
578 // Testing genre large |
|
579 doTestHandleMedia(KGenreLarge, KErrNone); |
|
580 |
|
581 // Testing genre OFF |
|
582 doTestHandleMedia(KGenreOff, KErrNone); |
|
583 |
|
584 // Testing all fields OFF |
|
585 doTestHandleMedia(KAllFieldsOFF, KErrNone); |
|
586 |
|
587 // Zero sized Mime Type |
|
588 doTestHandleMedia(KMimeTypeZeroSized, KErrNone); |
|
589 |
|
590 // audio/aac mime type |
|
591 doTestHandleMedia(KMimeTypeMP3, KErrNone); |
|
592 |
|
593 // Damn long mime type |
|
594 doTestHandleMedia(KMimeTypeLarge, KErrNone); |
|
595 |
|
596 // no mime type |
|
597 doTestHandleMedia(KMimeTypeOff, KErrNone); |
|
598 |
|
599 doTestNoChange(); |
|
600 |
|
601 // duration |
|
602 doTestHandleMedia(KDuration, KErrNone); |
|
603 |
|
604 // media audio bit rate |
|
605 doTestHandleMedia(KMediaAudioBitrate, KErrNone); |
|
606 |
|
607 // audio sample rate |
|
608 doTestHandleMedia(KMediaAudioSampleRate, KErrNone); |
|
609 |
|
610 // copyright |
|
611 doTestHandleMedia(KMediaGeneralCopyright, KErrNone); |
|
612 |
|
613 // url |
|
614 doTestHandleMedia(KMediaMusicURL, KErrNone); |
|
615 |
|
616 } |
|
617 |
|
618 void TestMpMpxDetailsFrameworkWrapper::doTestNoChange() |
|
619 { |
|
620 init(); |
|
621 mPlaybackInfoChanged = false; |
|
622 loadTestData(KYearPositive); |
|
623 connect( mTestPrivate->iSongData, SIGNAL( songDetailInfoChanged() ), this, SLOT( handleCommitPlaybackInfo() ) ); |
|
624 mTestPrivate->HandleMediaL(*iMediaTestData, KErrNone); |
|
625 QCOMPARE( mPlaybackInfoChanged, true ); |
|
626 mPlaybackInfoChanged = false; |
|
627 mTestPrivate->HandleMediaL(*iMediaTestData, KErrNone); |
|
628 QCOMPARE( mPlaybackInfoChanged, true ); // TODO: this must be false, donno why we get songDetailInfoChanged signal |
|
629 cleanup(); |
|
630 } |
|
631 |
|
632 void TestMpMpxDetailsFrameworkWrapper::handleCommitPlaybackInfo() |
|
633 { |
|
634 mPlaybackInfoChanged = true; |
|
635 } |
|
636 |
|
637 /*! |
|
638 Tests retrieveSong |
|
639 */ |
|
640 void TestMpMpxDetailsFrameworkWrapper::testRetrieveSong() |
|
641 { |
|
642 mTest->retrieveSong(); // async |
|
643 // no need to verify the data received. As we already |
|
644 // tested them in testHandleMedia |
|
645 } |
|
646 |
|
647 void TestMpMpxDetailsFrameworkWrapper::handleSongDetailInfoChanged() |
|
648 { |
|
649 mSongDetailInfoChanged = true; |
|
650 } |
|
651 |
|
652 /*! |
|
653 Used to load test data |
|
654 */ |
|
655 void TestMpMpxDetailsFrameworkWrapper::loadTestData( TInt aPos ) |
|
656 { |
|
657 TRACE("TestMpMpxDetailsFrameworkWrapper::loadTestData entry"); |
|
658 if( iMediaTestData ){ |
|
659 delete iMediaTestData; |
|
660 iMediaTestData=0; |
|
661 } |
|
662 RArray<TInt> supportedIds; |
|
663 CleanupClosePushL( supportedIds ); |
|
664 supportedIds.AppendL( KMPXMediaIdMusic ); |
|
665 supportedIds.AppendL( KMPXMediaIdGeneral ); |
|
666 iMediaTestData = CMPXMedia::NewL( supportedIds.Array() ); |
|
667 CleanupStack::PopAndDestroy( &supportedIds ); |
|
668 |
|
669 TRACE2("TestMpMpxDetailsFrameworkWrapper::loadTestData Loading %d.th data entry", aPos); |
|
670 TPtrC title( reinterpret_cast<const TUint16*>( KAllSongsTestData[aPos].GeneralTitle ) ); |
|
671 if(title.Match(KOff) == KErrNotFound) { |
|
672 TRACE2("TestMpMpxDetailsFrameworkWrapper::loadTestData Adding title: %S to iMediaTestData", &title); |
|
673 iMediaTestData->SetTextValueL( KMPXMediaGeneralTitle, title ); |
|
674 } |
|
675 |
|
676 TPtrC artist( reinterpret_cast<const TUint16*>( KAllSongsTestData[aPos].MusicArtist ) ); |
|
677 if(artist.Match(KOff) == KErrNotFound) { |
|
678 TRACE2("TestMpMpxDetailsFrameworkWrapper::loadTestData Adding artist: %S to iMediaTestData", &artist); |
|
679 iMediaTestData->SetTextValueL( KMPXMediaMusicArtist, artist ); |
|
680 } |
|
681 |
|
682 TPtrC musicAlbum( reinterpret_cast<const TUint16*>( KAllSongsTestData[aPos].MusicAlbum ) ); |
|
683 if(musicAlbum.Match(KOff) == KErrNotFound) { |
|
684 TRACE2("TestMpMpxDetailsFrameworkWrapper::loadTestData Adding musicAlbum: %S to iMediaTestData", &musicAlbum); |
|
685 iMediaTestData->SetTextValueL( KMPXMediaMusicAlbum, musicAlbum ); |
|
686 } |
|
687 |
|
688 TPtrC musicAlbumArtFileName( reinterpret_cast<const TUint16*>( KAllSongsTestData[aPos].MusicAlbumArtFileName ) ); |
|
689 if(musicAlbumArtFileName.Match(KOff) == KErrNotFound) { |
|
690 TRACE2("TestMpMpxDetailsFrameworkWrapper::loadTestData Adding musicAlbumArtFileName: %S to iMediaTestData", &musicAlbumArtFileName); |
|
691 iMediaTestData->SetTextValueL( KMPXMediaMusicAlbumArtFileName, musicAlbumArtFileName ); |
|
692 } |
|
693 |
|
694 TPtrC composer( reinterpret_cast<const TUint16*>( KAllSongsTestData[aPos].Composer ) ); |
|
695 if(composer.Match(KOff) == KErrNotFound) { |
|
696 TRACE2("TestMpMpxDetailsFrameworkWrapper::loadTestData Adding composer: %S to iMediaTestData", &composer); |
|
697 iMediaTestData->SetTextValueL( KMPXMediaMusicComposer, composer); |
|
698 } |
|
699 |
|
700 if(KAllSongsTestData[aPos].Year != -1) { |
|
701 TDateTime date_time; |
|
702 date_time.SetYear(KAllSongsTestData[aPos].Year); |
|
703 date_time.SetMonth(EJanuary); |
|
704 date_time.SetDay(1); |
|
705 date_time.SetHour(0); |
|
706 date_time.SetMinute(0); |
|
707 date_time.SetSecond(0); |
|
708 date_time.SetMicroSecond(0); |
|
709 TTime date(date_time); |
|
710 TRACE3("TestMpMpxDetailsFrameworkWrapper::loadTestData Adding year: %d in %LD to iMediaTestData", KAllSongsTestData[aPos].Year, date.Int64()); |
|
711 TRACE3("TestMpMpxDetailsFrameworkWrapper::loadTestData Is year %d equal to %d", KAllSongsTestData[aPos].Year, date.DateTime().Year()); |
|
712 iMediaTestData->SetTObjectValueL<TInt64>( KMPXMediaMusicYear, date.Int64() ); |
|
713 } |
|
714 |
|
715 TPtrC musicAlbumTrack( reinterpret_cast<const TUint16*>( KAllSongsTestData[aPos].MusicAlbumTrack ) ); |
|
716 if(musicAlbumTrack.Match(KOff) == KErrNotFound) { |
|
717 TRACE2("TestMpMpxDetailsFrameworkWrapper::loadTestData Adding musicAlbumTrack: %S to iMediaTestData", &musicAlbumTrack); |
|
718 iMediaTestData->SetTextValueL( KMPXMediaMusicAlbumTrack, musicAlbumTrack); |
|
719 } |
|
720 |
|
721 TPtrC genre( reinterpret_cast<const TUint16*>( KAllSongsTestData[aPos].MusicGenre ) ); |
|
722 if(genre.Match(KOff) == KErrNotFound) { |
|
723 TRACE2("TestMpMpxDetailsFrameworkWrapper::loadTestData Adding genre: %S to iMediaTestData", &genre); |
|
724 iMediaTestData->SetTextValueL( KMPXMediaMusicGenre, genre); |
|
725 } |
|
726 |
|
727 TPtrC musicUri( reinterpret_cast<const TUint16*>( KAllSongsTestData[aPos].MusicUri ) ); |
|
728 if(musicUri.Match(KOff) == KErrNotFound) { |
|
729 TRACE2("TestMpMpxDetailsFrameworkWrapper::loadTestData Adding musicUri: %S to iMediaTestData", &musicUri); |
|
730 iMediaTestData->SetTextValueL( KMPXMediaGeneralUri, musicUri); |
|
731 } |
|
732 |
|
733 TPtrC mimeType( reinterpret_cast<const TUint16*>( KAllSongsTestData[aPos].MimeType ) ); |
|
734 if(mimeType.Match(KOff) == KErrNotFound) { |
|
735 TRACE2("TestMpMpxDetailsFrameworkWrapper::loadTestData Adding mimeType: %S to iMediaTestData", &mimeType); |
|
736 iMediaTestData->SetTextValueL( KMPXMediaGeneralMimeType, mimeType); |
|
737 } |
|
738 |
|
739 if(KAllSongsTestData[aPos].Duration != -1) { |
|
740 TRACE2("TestMpMpxDetailsFrameworkWrapper::loadTestData Adding duration: %d to iMediaTestData", KAllSongsTestData[aPos].Duration ); |
|
741 iMediaTestData->SetTObjectValueL<TInt>( KMPXMediaGeneralDuration, KAllSongsTestData[aPos].Duration ); |
|
742 } |
|
743 |
|
744 if(KAllSongsTestData[aPos].MediaAudioBitRate != -1) { |
|
745 TRACE2("TestMpMpxDetailsFrameworkWrapper::loadTestData Adding MediaAudioBitRate: %d to iMediaTestData", KAllSongsTestData[aPos].MediaAudioBitRate ); |
|
746 iMediaTestData->SetTObjectValueL<TInt>( KMPXMediaAudioBitrate, KAllSongsTestData[aPos].MediaAudioBitRate ); |
|
747 } |
|
748 |
|
749 if(KAllSongsTestData[aPos].MediaAudioSampleRate != -1) { |
|
750 TRACE2("TestMpMpxDetailsFrameworkWrapper::loadTestData Adding MediaAudioBitRate: %d to iMediaTestData", KAllSongsTestData[aPos].MediaAudioSampleRate ); |
|
751 iMediaTestData->SetTObjectValueL<TInt>( KMPXMediaAudioSamplerate, KAllSongsTestData[aPos].MediaAudioSampleRate ); |
|
752 } |
|
753 |
|
754 TPtrC copyright( reinterpret_cast<const TUint16*>( KAllSongsTestData[aPos].Copyright ) ); |
|
755 if(copyright.Match(KOff) == KErrNotFound) { |
|
756 TRACE2("TestMpMpxDetailsFrameworkWrapper::loadTestData Adding copyright: %S to iMediaTestData", ©right); |
|
757 iMediaTestData->SetTextValueL( KMPXMediaGeneralCopyright, copyright); |
|
758 } |
|
759 |
|
760 TPtrC url( reinterpret_cast<const TUint16*>( KAllSongsTestData[aPos].Url ) ); |
|
761 if(url.Match(KOff) == KErrNotFound) { |
|
762 TRACE2("TestMpMpxDetailsFrameworkWrapper::loadTestData Adding url: %S to iMediaTestData", &url); |
|
763 iMediaTestData->SetTextValueL( KMPXMediaMusicURL, url ); |
|
764 } |
|
765 |
|
766 TRACE("TestMpMpxDetailsFrameworkWrapper::loadTestData exit"); |
|
767 } |
|
768 |
|
769 //end of file |