filehandling/fileconverterfw/Tef/TLoadEcomCnvStep.cpp
author William Roberts <williamr@symbian.org>
Fri, 23 Apr 2010 14:37:17 +0100
branchRCL_3
changeset 22 c82a39b81a38
parent 0 2e3d3ce01487
permissions -rw-r--r--
Rework addition of Symbian splash screen to reduce the source impact (uses SVG from Bug 2414) Notes: by using the OPTION SOURCEDIR parameter in the mifconv extension instructions, I can arrange to use the same source file name in sfimage, without having to export over the original Nokia file. This means that the name inside splashscreen.mbg is the same, which removes the need for the conditional compilation in SplashScreen.cpp, and gets rid of sf_splashscreen.mmp.

// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of "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:
// The following test case is used to test the ecom style converter plugin and test the list and converter APIs
// 
//

/**
 @file
 @internalComponent - Internal Symbian test code
*/

#include <e32std.h>
#include <e32cons.h>
#include <s32file.h>
#include <e32test.h>
#include <ecom/ecom.h>

#include <concnf.h>
#include <conlist.h>
#include "TLoadEcomCnvStep.h"
#include "TTestEcomConverter.hrh"

 
/**
  Auxiliary Fn for TestCaseID TLoadEcomCnvStep-ExecuteL
  Construct CCnaConverterList object and call ConvFromListL & ConvToListL
  
*/
void CTLoadEComCnvStep::TestListsL()
	{
	TDataType dataType;
	CCnaConverterList* list=CCnaConverterList::NewLC();
	list->UpdateL();
	CArrayFixFlat<SConverterInfo>* info;
	info= new(ELeave) CArrayFixFlat<SConverterInfo>(5);

	CleanupStack::PushL(info);

	list->ConvFromListL(mimeEngEpoc32CPlaintext,info);
	TInt count =info->Count();
	INFO_PRINTF1(_L("Test from list\n"));
	for (TInt i=0;i<count;i++)
		{
		INFO_PRINTF1((*info)[i].iTranslation);
		INFO_PRINTF2(_L(" uid= %d \n"),(*info)[i].iUid);
		if(list->MimeTypeFrom(dataType,(*info)[i])==KErrNone)
			{
			TPtrC mimeType(dataType.Des());
			INFO_PRINTF2(_L(" mimeType= %S \n\n"),&mimeType);
			}
		else
			{
			INFO_PRINTF2(_L("***** ERROR: MimeTypeFrom returned KErrNotFound\n\n"),i);
			}
		}
	info->Reset();
	list->ConvToListL(mimeFrenchxyzzyFrot,info);
	count =info->Count();
	INFO_PRINTF1(_L("Test to list\n"));
	for (TInt j=0;j<count;j++)
		{
		INFO_PRINTF1((*info)[j].iTranslation);
		INFO_PRINTF2(_L(" uid= %d \n"),(*info)[j].iUid);
		if(list->MimeTypeTo(dataType,(*info)[j])==KErrNone)
			{
			TPtrC mimeType(dataType.Des());
			INFO_PRINTF2(_L(" mimeType= %S \n\n"),&mimeType);
			}
		else
			{
			INFO_PRINTF2(_L("***** ERROR: MimeTypeTo returned KErrNotFound\n\n"),j);
			}
		}
	CleanupStack::PopAndDestroy(2);

	}

 /**
   @SYMTestCaseID		TLoadEcomCnvStep-ExecuteL
  
   @SYMPREQ				REQ2689		
  
   @SYMTestCaseDesc 	Construct CCnaConverterList object and get the converter by uid as well as mime style
  
   @SYMTestPriority 	High
  
   @SYMTestStatus 		Implemented
   
   @SYMTestActions  
   To construct CCnaConverterList object and get the instance of the converter passing the relevant UID\n
   Using the list object its following APIs are tested
   API Calls:\n		
   CCnaConverterList::NewLC();
   CCnaConverterList::NewConverterL(TUid aUid);
   CCnaConverterList::Count();
   CCnaConverterList::ConvFromL(const TDataType& aMimeType);
   CCnaConverterList::ConvToL(const TDataType& aMimeType);
   CCnaConverterList::ConverterL(const TDataType& aFrom,const TDataType& aTo);
   CTestEcomConverter::ConvertL(const TFileName& aSourceFile, const TFileName& aTargetFile, 
								MConverterUiObserver* aObserver=NULL);
   @SYMTestExpectedResults Test should complete without any panic.
   
 */
void CTLoadEComCnvStep::ExecuteL()
	{
	TUid uid;
	uid.iUid=KTestEcomConvImplementationUid;
	CCnaConverterList* list=CCnaConverterList::NewLC();
	list->UpdateL();
	INFO_PRINTF2(_L("Number of converters found %d\n"),list->Count());
	CConverterBase* conv=list->NewConverterL(uid);
	CleanupStack::PushL(conv);
	conv->ConvertL(_L("file1"), _L("File2"));
	INFO_PRINTF1(_L("Converter by uid\n"));
	CleanupStack::PopAndDestroy(); // conv
	TUid fromUid=list->ConvFromL(mimeEngEpoc32CPlaintext);
	INFO_PRINTF2(_L(" ConvFromUid= %d \n"),fromUid);
	TUid toUid=list->ConvToL(mimeFrenchxyzzyFrot);
	INFO_PRINTF2(_L(" ConvToUid= %d \n"),toUid);
	TUid converterUid=list->ConverterL(mimeEngEpoc32CPlaintext,mimeFrenchxyzzyFrot);
	INFO_PRINTF2(_L(" ConvterterUid= %d \n"),converterUid);
	conv=list->NewConverterL(fromUid);
	CleanupStack::PushL(conv);
	conv->ConvertL(_L("file1"), _L("file2"));
	INFO_PRINTF1(_L("Converter by mime type\n"));
	CleanupStack::Pop(); // conv
	delete conv;
	CleanupStack::PopAndDestroy(); // list
	INFO_PRINTF1(_L("Destroyed converter list\n"));
	TestListsL();
	}

CTLoadEComCnvStep::CTLoadEComCnvStep()
/**
   Constructor
 */
	{
	// Call base class method to set up the human readable name for logging
	SetTestStepName(KTLoadEComCnvStep);
	}

CTLoadEComCnvStep::~CTLoadEComCnvStep()
	{
	}

TVerdict CTLoadEComCnvStep::doTestStepL()
    {
	INFO_PRINTF1(_L("Test Started"));
	__UHEAP_MARK; // mark heap state
	
	mimeEngEpoc32CPlaintext = TDataType(_L8("foo/bar"));
	mimeFrenchxyzzyFrot = TDataType(_L8("xyzzy/frot"));
	

	TRAPD(error,ExecuteL()); // do most stuff under cleanup stack
	TEST(error == KErrNone);
	REComSession::FinalClose(); 
	
	__UHEAP_MARKEND; // check no memory leak
	
	INFO_PRINTF1(_L("Test Finished"));
	
	return TestStepResult();
    }