diff -r 000000000000 -r 96612d01cf9f videofeeds/server/tsrc/VCXVodContentApiTest/src/VCXVodContentApiTestLogic.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videofeeds/server/tsrc/VCXVodContentApiTest/src/VCXVodContentApiTestLogic.cpp Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,1245 @@ +/* +* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Test module for IptvVodContentClient* +*/ + + + +#include "VCXVodContentApiTest.h" +#include "VCXTestLog.h" +#include "CIptvTestTimer.h" +#include "CIptvMyVideosGlobalFileId.h" +#include "CIptvTestUtilities.h" +#include "CIptvTestEcgUpdateInfo.h" +#include "CIptvMediaContent.h" + +#include + +// ----------------------------------------------------------------------------- +// CIptvVodContentApiTest::TestGetEcgList +// ----------------------------------------------------------------------------- +// +TInt CIptvVodContentApiTest::TestGetEcgList(TIptvCategoryId aCategoryId, TDesC& aSearchString, TUint32 aFrom, TUint32 aAmount) + { + VCXLOGLO1(">>>CIptvVodContentApiTest::TestGetEcgList"); + TInt testCaseStatus(KErrNone); + + if(!iIptvVodContenClient) + { + VCXLOGLO1("No iIptvVodContenClient instance, error in testlogic"); + iLog->Log(_L("*** FAIL *** No iIptvVodContenClient instance, error in testlogic")); + VCXLOGLO1("<< data; + CleanupResetAndDestroyPushL(data); + TUint32 totalAmount = 0; + + TRAPD(err, testCaseStatus = iIptvVodContenClient->GetEcgListL(aCategoryId, aSearchString, aFrom, aAmount, totalAmount, data)); + if(err != KErrNone) + { + VCXLOGLO2("* FAIL * GetEcgListL caused a leave: %d.", err); + testCaseStatus = err; + } + else + if(testCaseStatus != KErrNone) + { + VCXLOGLO2("* FAIL * GetEcgListL returned an error: %d.", testCaseStatus); + } + else + { + VCXLOGLO2("totalAmount = %d", totalAmount); + + for (TInt i = 0; i < data.Count(); i++) + { + PrintVodContentBriefDetails(*(data[i])); + } + } + + CleanupStack::PopAndDestroy(&data); + + VCXLOGLO1("<<>>CIptvVodContentApiTest::TestGetEcgCategoryList"); + TInt testCaseStatus(KErrNone); + + if(!iIptvVodContenClient) + { + VCXLOGLO1("No iIptvVodContenClient instance, error in testlogic"); + iLog->Log(_L("*** FAIL *** No iIptvVodContenClient instance, error in testlogic")); + VCXLOGLO1("<< data; + CleanupResetAndDestroyPushL(data); + + TRAPD(err, testCaseStatus = iIptvVodContenClient->GetEcgCategoryListL(aParentCategoryId, data)); + if(err != KErrNone) + { + VCXLOGLO2("* FAIL * GetEcgCategoryListL caused a leave: %d.", err); + testCaseStatus = err; + } + else + if(testCaseStatus != KErrNone) + { + VCXLOGLO2("* FAIL * GetEcgCategoryListL returned an error: %d.", testCaseStatus); + } + else + { + TInt count = data.Count(); + + for (TInt i = 0; i < count; i++) + { + PrintVodContentCategoryBriefDetails(*(data[i])); + } + } + + CleanupStack::PopAndDestroy(&data); + + VCXLOGLO1("<<>>CIptvVodContentApiTest::TestGetCategoryDetails"); + TInt testCaseStatus(KErrNone); + + if(!iIptvVodContenClient) + { + VCXLOGLO1("No iIptvVodContenClient instance, error in testlogic"); + iLog->Log(_L("*** FAIL *** No iIptvVodContenClient instance, error in testlogic")); + VCXLOGLO1("<<GetCategoryDetailsL(aCategoryId, *data)); + if(err != KErrNone) + { + VCXLOGLO2("* FAIL * GetCategoryDetailsL caused a leave: %d.", err); + testCaseStatus = err; + } + else + if(testCaseStatus != KErrNone) + { + VCXLOGLO2("* FAIL * GetCategoryDetailsL returned an error: %d.", testCaseStatus); + } + else + { + PrintVodContentCategoryBriefDetails(*data); + } + } + CleanupStack::PopAndDestroy(data); + + VCXLOGLO1("<<>>CIptvVodContentApiTest::TestGetEcgAllList"); + TInt testCaseStatus(KErrNone); + + if(!iIptvVodContenClient) + { + VCXLOGLO1("No iIptvVodContenClient instance, error in testlogic"); + iLog->Log(_L("*** FAIL *** No iIptvVodContenClient instance, error in testlogic")); + VCXLOGLO1("<< data; + CleanupResetAndDestroyPushL(data); + + TUint32 total=0; + + TRAPD(err, testCaseStatus = iIptvVodContenClient->GetEcgAllListL(aSearchString, aFrom, aAmount, total, data)); + if(err != KErrNone) + { + VCXLOGLO2("* FAIL * GetEcgAllListL caused a leave: %d.", err); + testCaseStatus = err; + } + else + if(testCaseStatus != KErrNone) + { + VCXLOGLO2("* FAIL * GetEcgAllListL returned an error: %d.", testCaseStatus); + } + else + { + VCXLOGLO2("totalAmount = %d", total); + + for (TInt i = 0; i < data.Count(); i++) + { + if(!(data[i])) + { + VCXLOGLO2("data at %d is NULL!", i); + testCaseStatus = KErrCorrupt; + } + else + { + PrintVodContentBriefDetails(*(data[i])); + } + } + } + + CleanupStack::PopAndDestroy(&data); + + VCXLOGLO1("<<>>CIptvVodContentApiTest::TestGetParentCategory: aParentCategoryId = %d",aParentCategoryId ); + TInt testCaseStatus(KErrNone); + TInt rv = KErrNone; + TIptvCategoryId parent = 0; + + if(!iIptvVodContenClient) + { + VCXLOGLO1("No iIptvVodContenClient instance, error in testlogic"); + iLog->Log(_L("*** FAIL *** No iIptvVodContenClient instance, error in testlogic")); + VCXLOGLO1("<< data; + CleanupResetAndDestroyPushL(data); + + VCXLOGLO2("Getting category list for: %d.", aParentCategoryId); + TRAPD(err, testCaseStatus = iIptvVodContenClient->GetEcgCategoryListL(aParentCategoryId, data)); + if(err != KErrNone) + { + VCXLOGLO2("* FAIL * GetEcgCategoryListL caused a leave: %d.", err); + testCaseStatus = err; + CleanupStack::PopAndDestroy(&data); + VCXLOGLO1("<<iCategoryId); + TRAP(err, rv = iIptvVodContenClient->GetParentCategoryL(data[i]->iCategoryId, parent)); + VCXLOGLO2("Parent = %d", parent); + + if(err != KErrNone) + { + VCXLOGLO2("* FAIL * GetParentCategoryL caused a leave: %d.", err); + testCaseStatus = err; + break; + } + if(rv != KErrNone) + { + VCXLOGLO2("CIptvVodContentApiTest::TestGetParentCategory: GetParentCategoryL returned an error: %d", rv); + testCaseStatus = rv; + break; + } + if(parent != aParentCategoryId) + { + VCXLOGLO1("CIptvVodContentApiTest::TestGetParentCategory: ParentCategory id doesn't match"); + testCaseStatus = KErrGeneral; + break; + } + + } + + + CleanupStack::PopAndDestroy(&data); + + if(count == 0) + { + VCXLOGLO1("No Categories found!!!"); + } + + VCXLOGLO1("<<>>CIptvVodContentApiTest::TestVerifyAllCategoryContentL: aParentCategoryId = %d",aParentCategoryId ); + + TInt testCaseStatus(KErrNone); + + if(!iIptvVodContenClient) + { + VCXLOGLO1("No iIptvVodContenClient instance, error in testlogic"); + iLog->Log(_L("*** FAIL *** No iIptvVodContenClient instance, error in testlogic")); + VCXLOGLO1("<< categoryList; + CleanupResetAndDestroyPushL(categoryList); + + testCaseStatus = iIptvVodContenClient->GetEcgCategoryListL(aParentCategoryId, categoryList); + if(testCaseStatus != KErrNone) + { + VCXLOGLO2("* FAIL * GetEcgCategoryListL returned an error: %d.", testCaseStatus); + CleanupStack::PopAndDestroy(&categoryList); + VCXLOGLO1("<<iCategoryId); + + PrintVodContentCategoryBriefDetails( *categoryList[i] ); + + testCaseStatus = TestGetEcgCategoryDetails(categoryList[i]->iCategoryId); + if(testCaseStatus != KErrNone) break; + + RPointerArray ecgList; + CleanupResetAndDestroyPushL(ecgList); + TUint32 totalAmount = 0; + + TBuf<10> searchString(_L("") ); + testCaseStatus = iIptvVodContenClient->GetEcgListL(categoryList[i]->iCategoryId, searchString, 0, 0, totalAmount, ecgList); + if(testCaseStatus != KErrNone) + { + VCXLOGLO2("* FAIL * GetEcgListL returned an error: %d.", testCaseStatus); + CleanupStack::PopAndDestroy(&ecgList); + break; + } + + VCXLOGLO2("totalAmount = %d", totalAmount); + + for (TInt e = 0; e < ecgList.Count(); e++) + { + PrintVodContentBriefDetails(*(ecgList[e])); + + CIptvVodContentContentFullDetails* contentDetails = CIptvVodContentContentFullDetails::NewL(); + + CleanupStack::PushL(contentDetails); + + testCaseStatus = iIptvVodContenClient->GetContentDetailsL(ecgList[e]->iContentId, *contentDetails); + if(testCaseStatus != KErrNone) + { + VCXLOGLO2("* FAIL * GetContentDetailsL returned an error: %d.", testCaseStatus); + CleanupStack::PopAndDestroy(contentDetails); + CleanupStack::PopAndDestroy(&ecgList); + i = 100000; + break; + } + + PrintVodContentFullDetails(ecgList[e]->iContentId, *contentDetails); + + CleanupStack::PopAndDestroy(contentDetails); + + } + + CleanupStack::PopAndDestroy(&ecgList); + } + + CleanupStack::PopAndDestroy(&categoryList); + + if(count == 0) + { + VCXLOGLO1("No Categories found!!!"); + } + + VCXLOGLO1("<<>>CIptvVodContentApiTest::TestGetContentDetailsList"); + TInt testCaseStatus(KErrNone); + + if(!iIptvVodContenClient) + { + VCXLOGLO1("No iIptvVodContenClient instance, error in testlogic"); + iLog->Log(_L("*** FAIL *** No iIptvVodContenClient instance, error in testlogic")); + VCXLOGLO1("<<GetContentDetailsL(aContentId, *contentDetails)); + if(err != KErrNone) + { + VCXLOGLO2("* FAIL * GetContentDetailsL caused a leave: %d.", err); + testCaseStatus = err; + } + else + if(testCaseStatus != KErrNone) + { + VCXLOGLO2("* FAIL * GetContentDetailsL returned an error: %d.", testCaseStatus); + } + else + { + PrintVodContentFullDetails(aContentId, *contentDetails); + } + + CleanupStack::PopAndDestroy(contentDetails); + + VCXLOGLO1("<<>>CIptvVodContentApiTest::TestUpdateEcg"); + TInt testCaseStatus(KErrNone); + + if(!iIptvVodContenClient) + { + VCXLOGLO1("No iIptvVodContenClient instance, error in testlogic"); + iLog->Log(_L("*** FAIL *** No iIptvVodContenClient instance, error in testlogic")); + VCXLOGLO1("<<UpdateEcgL( )); + + if(err != KErrNone) + { + VCXLOGLO2("* FAIL * UpdateEcgL caused a leave: %d.", err); + testCaseStatus = err; + } + else + if(testCaseStatus != KErrNone) + { + VCXLOGLO2("* FAIL * UpdateEcgL returned an error: %d.", testCaseStatus); + } + else + { + iIptvTestEcgUpdateInfo->EcgUpdateStart(iServiceId, iIapId); + } + + VCXLOGLO1("<<>>CIptvVodContentApiTest::TestCategoryCountL"); + + TInt err( KErrNone ); + + if( !iIptvVodContenClient ) + { + err = KErrNotReady; + VCXLOGLO1("No iIptvVodContenClient instance, error in testlogic"); + iLog->Log(_L("*** FAIL *** No iIptvVodContenClient instance, error in testlogic")); + } + + RPointerArray categoryList; + CleanupResetAndDestroyPushL( categoryList ); + + err = iIptvVodContenClient->GetEcgCategoryListL( 0 /* all categories */, categoryList ); + if( err!= KErrNone ) + { + VCXLOGLO2("* FAIL * GetEcgCategoryListL returned an error: %d.", err); + } + else + { + if( categoryList.Count() != aExpectedCount ) + { + VCXLOGLO3("* FAIL * Count of categories (%d) is not expected (%d).", categoryList.Count(), aExpectedCount ); + } + } + CleanupStack::PopAndDestroy( &categoryList ); + + VCXLOGLO1("<<>>CIptvVodContentApiTest::TestContentCountL"); + + TInt err( KErrNone ); + + if( !iIptvVodContenClient ) + { + VCXLOGLO1("No iIptvVodContenClient instance, error in testlogic"); + iLog->Log(_L("*** FAIL *** No iIptvVodContenClient instance, error in testlogic")); + User::Leave( KErrNotReady ); + } + + RPointerArray categoryList; + CleanupResetAndDestroyPushL( categoryList ); + + err = iIptvVodContenClient->GetEcgCategoryListL( 0 /* all categories */, categoryList ); + + TInt contentCount( 0 ); + + TInt categoryCount = categoryList.Count(); + + if( err!= KErrNone ) + { + VCXLOGLO2("* FAIL * GetEcgCategoryListL returned an error: %d.", err); + } + else + for (TInt i = 0; i < categoryCount; i++) + { + RPointerArray ecgList; + CleanupResetAndDestroyPushL(ecgList); + + TBuf<10> searchString(_L("") ); + TUint32 totalAmount; + err = iIptvVodContenClient->GetEcgListL( categoryList[i]->iCategoryId, searchString, 0, 0, totalAmount, ecgList ); + if(err != KErrNone) + { + VCXLOGLO2("* FAIL * GetEcgListL returned an error: %d.", err); + CleanupStack::PopAndDestroy( &ecgList ); + break; + } + + VCXLOGLO4("Category: %d content count: %d (ta: %d).", i, ecgList.Count(), totalAmount); + + contentCount += totalAmount; + CleanupStack::PopAndDestroy( &ecgList ); + } + + if( err == KErrNone ) + { + if( contentCount != aExpectedCount ) + { + VCXLOGLO3("* FAIL * Count of content (%d) is not expected (%d).", contentCount, aExpectedCount ); + err = KErrCorrupt; + } + } + CleanupStack::PopAndDestroy( &categoryList ); + + VCXLOGLO1("<<>>CIptvVodContentApiTest::CreateInstanceL"); + TInt rv(KErrNone); + TInt error(KErrNone); + + TRAP(error, iIptvTestUtilities = CIptvTestUtilities::NewL( )); + if(KErrNone != error)//Leave + { + if(iIptvTestUtilities) + { + delete iIptvTestUtilities; + iIptvTestUtilities = NULL; + } + VCXLOGLO1("Leave in creating CIptvTestUtilities instance"); + iLog->Log(_L("*** Fail *** Leave in creating CIptvTestUtilities instance")); + return error; + } + + TUint32 serviceId = 0; + TInt err = KErrNone; + + TBuf<256> sname(serviceName); + TInt sid; + TRAP(err, rv = iIptvTestUtilities->GetServiceIdByNameL(sname, sid)); + serviceId = sid; + if(KErrNone != err) + { + VCXLOGLO2("GetServiceIdByNameL caused a leave: %d.", err); + VCXLOGLO1("<<Log(_L("*** Fail *** Leave in creating CIptvVodContentClient instance")); + return error; + } + + iServiceId = serviceId; + TRAP(error, iIptvTestTimer = CIptvTestTimer::NewL( *this, 0 )); + + if(KErrNone != error)//Leave + { + if(iIptvTestTimer) + { + delete iIptvTestTimer; + iIptvTestTimer = NULL; + } + VCXLOGLO1("Leave in creating CIptvTestTimer instance"); + iLog->Log(_L("*** Fail *** Leave in creating CIptvTestTimer instance")); + return error; + } + + iIptvTestEcgUpdateInfo = CIptvTestEcgUpdateInfo::NewL(); + + VCXLOGLO1("<<>>CIptvVodContentApiTest::DeAllocateResources"); + if(iIptvVodContenClient) + { + delete iIptvVodContenClient; + iIptvVodContenClient = NULL; + } + + if(iIptvTestTimer) + { + delete iIptvTestTimer; + iIptvTestTimer = NULL; + } + + if(iIptvTestUtilities) + { + delete iIptvTestUtilities; + iIptvTestUtilities = NULL; + } + + if(iIptvTestEcgUpdateInfo) + { + delete iIptvTestEcgUpdateInfo; + iIptvTestEcgUpdateInfo = NULL; + } + + VCXLOGLO1("<<>>CIptvVodContentApiTest::PrintVodContentBriefDetails"); + + TInt year, month, day, hour, minute, seconds; + GetDateInts(aDetails.iPubDate.DateTime(), year, month, day, hour, minute, seconds); + + VCXLOGLO3("Id: %d Name = %S", aDetails.iContentId, &aDetails.iName); + VCXLOGLO2("iThumbnailPath: %S", &aDetails.iThumbnailPath); + + VCXLOGLO2("iPlaytime: %d", aDetails.iPlaytime); + VCXLOGLO2("iSize: %d", aDetails.iSize); + + if(aDetails.iFileId) + { + VCXLOGLO3("iFileId.iDrive = %d, iFileId: %d", aDetails.iFileId->iDrive, aDetails.iFileId->iFileId); + } + + VCXLOGLO4("Pub date = %d.%d.%d", year, month, day); + + + TPtrC browserUrl = aDetails.GetBrowserUrlL(); + + VCXLOGLO2("iBrowserUrl: %S",&browserUrl); + + + WriteVerifyVodContentBriefDetails(aDetails); + + VCXLOGLO1("<<>>CIptvVodContentApiTest::PrintVodContentFullDetails"); + + // + // REL 1.1 MEDIACONTENT + // + + VCXLOGLO2("Description = %S", &aDetails.iDescription); + VCXLOGLO2("iContentProtection = %d", aDetails.iContentProtection); + VCXLOGLO2("iLangugage = %S", &aDetails.iLanguage); + VCXLOGLO2("iAuthor = %S", &aDetails.iAuthor); + VCXLOGLO2("iCopyright = %S", &aDetails.iCopyright); + + // + // copied from PrintVodContentBriefDetails + // + + TInt year, month, day, hour, minute, seconds; + GetDateInts(aDetails.iPubDate.DateTime(), year, month, day, hour, minute, seconds); + + VCXLOGLO3("Id: %d Name = %S", aDetails.iContentId, &aDetails.iName); + VCXLOGLO2("iThumbnailPath: %S", &aDetails.iThumbnailPath); + VCXLOGLO2("iPlaytime: %d", aDetails.iPlaytime); + VCXLOGLO2("iSize: %d", aDetails.iSize); + + if(aDetails.iFileId) + { + VCXLOGLO3("iFileId.iDrive = %d, iFileId: %d", aDetails.iFileId->iDrive, aDetails.iFileId->iFileId); + } + + VCXLOGLO4("Pub date = %d.%d.%d", year, month, day); + + TPtrC browserUrl = aDetails.GetBrowserUrlL(); + VCXLOGLO2("iBrowserUrl: %S",&browserUrl); + + // + // Write to the verify file + // + WriteVerifyVodContentFullDetails(aContentId, aDetails); + + VCXLOGLO1("<<>>CIptvVodContentApiTest::PrintVodContentCategoryBriefDetails"); + + TInt year, month, day, hour, minute, seconds; + GetDateInts(aDetails.iPubDate.DateTime(), year, month, day, hour, minute, seconds); + + VCXLOGLO3("Id: %d Name = %S",aDetails.iCategoryId, &aDetails.iName); + VCXLOGLO4("Pub date = %d.%d.%d", year, month, day); + VCXLOGLO2("iThumbnailPath: %S", &aDetails.iThumbnailPath); + VCXLOGLO2("iContentCount: %d", aDetails.iContentCount); + VCXLOGLO2("iIsSearchCategory: %d", aDetails.iIsSearchCategory); + + WriteVerifyVodContentCategoryBriefDetails(aDetails); + + VCXLOGLO1("<<>>CIptvVodContentApiTest::WriteVerifyVodContentBriefDetails"); + + TInt year, month, day, hour, minute, seconds; + GetDateInts(aDetails.iPubDate.DateTime(), year, month, day, hour, minute, seconds); + + if(iSpecialAction == EBriefContentDetails) + { + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("VodContentBriefDetails: Id: %d Name = %S"), aDetails.iContentId, &aDetails.iName); + return; + } + + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("-----------------------------------------------------------")); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("VodContentBriefDetails")); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("-----------------------------------------------------------")); + + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("Id: %d Name = %S"), aDetails.iContentId, &aDetails.iName); + + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("iRatingAge: %d"), aDetails.iRatingAge); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("iLanguage: %S"), &aDetails.iLanguage); + + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("iThumbnailPath: %S"), &aDetails.iThumbnailPath); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("iPlaytime: %d"), aDetails.iPlaytime); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("iSize: %d"), aDetails.iSize); + + if(aDetails.iFileId) + { + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("iFileId.iDrive: %d, iFileId.iFileId: %d"), aDetails.iFileId->iDrive, aDetails.iFileId->iFileId); + } + else + { + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("No iFileId ID!") ); + } + + if(aDetails.iPreviewGlobalFileId) + { + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("iPreviewGlobalFileId.iDrive: %d, iPreviewGlobalFileId.iFileId: %d"), aDetails.iPreviewGlobalFileId->iDrive, aDetails.iPreviewGlobalFileId->iFileId); + } + else + { + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("No iPreviewGlobalFileId ID!") ); + } + + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("Pub date = %d.%d.%d"), year, month, day); + TPtrC browserUrl = aDetails.GetBrowserUrlL(); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("iBrowserUrl: %S"), &browserUrl); + + VCXLOGLO1("<<>>CIptvVodContentApiTest::WriteVerifyVodContentFullDetails"); + + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("-----------------------------------------------------------")); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("VodContentFullDetails")); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("-----------------------------------------------------------")); + + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("aContentId = %d"), aContentId); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("Description = %S"),&aDetails.iDescription); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("iContentProtection = %d"),aDetails.iContentProtection); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("iLanguage = %S"),&aDetails.iLanguage); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("iAuthor = %S"),&aDetails.iAuthor); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("iCopyright = %S"),&aDetails.iCopyright); + + // + // Print content access list + // + //IMPORT_C TInt GetContentAccessListL(TUint32 aContentId, RPointerArray& aCAList); + + RPointerArray CAList; + + TInt err = KErrNone, ret = KErrNone; + TRAP(err, ret = iIptvVodContenClient->GetContentAccessListL(aContentId, CAList)); + + CleanupResetAndDestroyPushL(CAList); + + if(err != KErrNone) + { + VCXLOGLO2("* ERROR * GetContentAccessListLApiTest caused a leave!: %d", err); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("GetContentAccessListLApiTest caused a leave.")); + } + else if(ret != KErrNone) + { + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("GetContentAccessListLApiTest returned error")); + VCXLOGLO2("* ERROR * GetContentAccessListLApiTest returned error: %d", ret); + } + else + { + iIptvTestUtilities->WriteVerifyData(iCaseId, _L(" ")); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("Content access list:")); + WriteVerifyCAList(CAList); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L(" ")); + } + + CleanupStack::PopAndDestroy(&CAList); + + // copied from WriteVerifyVodContentBriefDetails + + TInt year, month, day, hour, minute, seconds; + GetDateInts(aDetails.iPubDate.DateTime(), year, month, day, hour, minute, seconds); + + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("Id: %d Name = %S"), aDetails.iContentId, &aDetails.iName); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("iThumbnailPath: %S"), &aDetails.iThumbnailPath); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("iPlaytime: %d"), aDetails.iPlaytime); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("iSize: %d"), aDetails.iSize); + + if(aDetails.iFileId) + { + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("iFileId.iDrive: %d, iFileId.iFileId: %d"), aDetails.iFileId->iDrive, aDetails.iFileId->iFileId); + } + + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("Pub date = %d.%d.%d"), year, month, day); + TPtrC browserUrl = aDetails.GetBrowserUrlL(); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("iBrowserUrl: %S"),&browserUrl); + + + VCXLOGLO1("<<>>CIptvVodContentApiTest::WriteVerifyVodContentCategoryBriefDetails"); + + TInt year, month, day, hour, minute, seconds; + GetDateInts(aDetails.iPubDate.DateTime(), year, month, day, hour, minute, seconds); + + if(iSpecialAction == EBriefContentDetails) + { + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("VodContentCategoryBriefDetails: Id: %d Name = %S"),aDetails.iCategoryId, &aDetails.iName); + return; + } + + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("-----------------------------------------------------------")); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("VodContentCategoryBriefDetails")); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("-----------------------------------------------------------")); + + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("Id: %d Name = %S"),aDetails.iCategoryId, &aDetails.iName); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("Pub date = %d.%d.%d (OBSOLOTE)"), year, month, day); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("iThumbnailPath: %S (OBSOLOTE)"), &aDetails.iThumbnailPath); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("iContentCount: %d"), aDetails.iContentCount); + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("iIsSearchCategory: %d"), aDetails.iIsSearchCategory); + + VCXLOGLO1("<<& aCAList) + { + + for(TInt i = 0; i < aCAList.Count(); i++) + { + + iIptvTestUtilities->WriteVerifyData(iCaseId, _L("%d."), i); + + CIptvMediaContent *mediaContent = aCAList[i]; + + TBuf<256> str; + + /** + * Content key + */ + //TUint32 iContentKey; + + /** + * Index (This index identifies content access objects which belong to some content defined by iContentKey) + */ + //TUint32 iIndex; + + /** + * Download type. + */ + //TUint32 iDownloadType + + switch(mediaContent->iDownloadType) + { + + case EIptvDownloadTypeStream: + str = _L("Stream"); + break; + + case EIptvDownloadTypeImmediate: + str = _L("Immediate"); + break; + + case EIptvDownloadTypePostponed: + str = _L("Postponed"); + break; + + case EIptvDownloadTypeScheduled: + str = _L("Scheduled"); + break; + + default: + str = _L("Unknown"); + break; + } + + iIptvTestUtilities->WriteVerifyData(iCaseId, _L(" iDownloadType: %S (%d)"), &str, mediaContent->iDownloadType); + + /** + * File id (Part of global file id (1/2) + */ + //TUint32 iFileId; + + /** + * Drive id (Part of global file id (2/2) + */ + //TUint32 iDriveId; + + /** + * Content URL (MRSS) + */ + //TBuf iUrl; + + const TPtrC url = mediaContent->GetMediaContentUrl(); + + iIptvTestUtilities->WriteVerifyData(iCaseId, _L(" iUrl: %S"), &url); + + /** + * File size (MRSS) + */ + //TUint32 iFileSize; + iIptvTestUtilities->WriteVerifyData(iCaseId, _L(" iFileSize: %d"), mediaContent->iFileSize); + + /** + * Mime-type (MRSS) + */ + //TBuf iMimeType; + iIptvTestUtilities->WriteVerifyData(iCaseId, _L(" iMimeType: %S"), &mediaContent->iMimeType); + + /** + * Medium (MRSS) (Not used in client side) + * Medium is the type of object (image | audio | video | document | executable). While this + * attribute can at times seem redundant if type is supplied, it is included because it simplifies + * decision making on the reader side, as well as flushes out any ambiguities between MIME type and + * object type. It is an optional attribute. + */ + //TBuf iMedium; + iIptvTestUtilities->WriteVerifyData(iCaseId, _L(" iMedium: %S"), &mediaContent->iMedium); + + /** + * Is default. (MRSS) (Not used in client side) + * isDefault determines if this is the default object that should be used for the . + * There should only be one default object per . It is an optional attribute. + */ + //TBool iIsDefault; + iIptvTestUtilities->WriteVerifyData(iCaseId, _L(" iIsDefault: %d"), mediaContent->iIsDefault); + + /** + * Expression. (MRSS) + * Expression determines if the object is a sample or the full version of the object, or even if it is a + * continuous stream (sample | full | nonstop). Default value is 'full'. It is an optional attribute + */ + //TUint32 iExpression; + if(mediaContent->iExpression == CIptvMediaContent::EFull) str = _L("FULL"); + if(mediaContent->iExpression == CIptvMediaContent::ESample) str = _L("Sample"); + if(mediaContent->iExpression == CIptvMediaContent::ENonStop) str = _L("NonStop"); + + iIptvTestUtilities->WriteVerifyData(iCaseId, _L(" iExpression: %S (%d)"), &str, mediaContent->iExpression); + + /** + * Bitrate. (MRSS) (Not used in client side) + * Bitrate is the kilobits per second rate of media. It is an optional attribute + */ + //TUint32 iBitrate; + iIptvTestUtilities->WriteVerifyData(iCaseId, _L(" iBitrate: %d"), mediaContent->iBitrate); + + /** + * Framerate. (MRSS) (Not used in client side) + * Framerate is the number of frames per second for the media object. It is an optional attribute + */ + //TUint32 iFramerate; + iIptvTestUtilities->WriteVerifyData(iCaseId, _L(" iFramerate: %d"), mediaContent->iFramerate); + + /** + * Samplingrate (MRSS) (Not used in client side) + * Samplingrate is the number of samples per second taken to create the media object. It is expressed in + * thousands of samples per second (kHz). It is an optional attribute. + */ + //TUint32 iSamplingrate; + iIptvTestUtilities->WriteVerifyData(iCaseId, _L(" iSamplingrate: %d"), mediaContent->iSamplingrate); + + /** + * Channels. (MRSS) (Not used in client side) + * Not supported. + */ + + /** + * Duration. (MRSS) + * Duration is the number of seconds the media object plays. It is an optional attribute. + */ + //TUint32 iDuration; + iIptvTestUtilities->WriteVerifyData(iCaseId, _L(" iDuration: %d"), mediaContent->iDuration); + + /** + * Height. (MRSS) (Not used in client side) + * Height is the height of the media object. It is an optional attribute. + */ + //TUint32 iHeight; + iIptvTestUtilities->WriteVerifyData(iCaseId, _L(" iHeight: %d"), mediaContent->iHeight); + + /** + * Width. (MRSS) (Not used in client side) + * Width is the width of the media object. It is an optional attribute. + */ + //TUint32 iWidth; + iIptvTestUtilities->WriteVerifyData(iCaseId, _L(" iWidth: %d"), mediaContent->iWidth); + + /** + * Language. (MRSS) + * Lang is the primary language encapsulated in the media object. Language codes possible are detailed in + * RFC 3066. This attribute is used similar to the xml:lang attribute detailed in the XML 1.0 Specification + * (Third Edition). It is an optional attribute. + */ + //TBuf iLanguage; + iIptvTestUtilities->WriteVerifyData(iCaseId, _L(" iLanguage: %S"), &mediaContent->iLanguage); + } + } + +// ----------------------------------------------------------------------------- +// CIptvVodContentApiTest::SetIap +// ----------------------------------------------------------------------------- +// +TInt CIptvVodContentApiTest::SetIap(const TUint32 aIap) + { + VCXLOGLO1(">>>CIptvVodContentApiTest::SetIap"); + TInt rv = KErrNone; + VCXLOGLO2("Selected Iap = %d",aIap); + + TRAPD(error,rv = iIptvVodContenClient->SetIapL(aIap)); + if(KErrNone != error) + { + rv =error; + } + else + { + iIapId = aIap; + } + + VCXLOGLO1("<<>>CIptvVodContentApiTest::TestGetUpdateTimeL"); + TInt rv = KErrNone; + + TRAPD(error, rv = iIptvVodContenClient->GetUpdateTimeL(aTime)); + + if(KErrNone != error) + { + rv = error; + } + + VCXLOGLO1("<<>>CIptvVodContentApiTest::RemoveServiceNumberFromThumbnailPath"); + + HBufC* thumbPath; + thumbPath = HBufC::NewL(2048); + + CleanupStack::PushL(thumbPath); + + TInt pos; + + TBool success = EFalse; + + pos = aThumbnailPath.Find( _L("ecg\\") ); + if( pos != KErrNotFound ) + { + thumbPath->Des().Append( aThumbnailPath.Left(pos+4) ); + + pos = aThumbnailPath.Find( _L("tbn\\") ); + if( pos != KErrNotFound ) + { + thumbPath->Des().Append( _L("X") ); + thumbPath->Des().Append( aThumbnailPath.Right( aThumbnailPath.Length() - (pos-1) ) ); + + success = ETrue; + } + } + + if(success) + { + aThumbnailPath = thumbPath->Des(); + } + + CleanupStack::PopAndDestroy(thumbPath); + + VCXLOGLO1("<<