mpengine/tsrc/unittest_mpmpxdetailsframeworkwrapper/src/unittest_mpmpxdetailsframeworkwrapper.cpp
changeset 43 0f32e550d9d8
parent 38 b93f525c9244
child 45 612c4815aebe
equal deleted inserted replaced
38:b93f525c9244 43:0f32e550d9d8
     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", &copyright);        
       
   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