mmlibs/mmfw/tsrc/mmfunittest/GEF/src/GlobalEffectTest.cpp
changeset 0 40261b775718
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmfunittest/GEF/src/GlobalEffectTest.cpp	Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,503 @@
+
+// GlobalEffectTest.cpp
+
+// 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:
+//
+
+#include "GlobalEffectTest.h"
+#include "TestGlobalEffect.hrh"
+#include "TestEffect.h"
+
+#include <mmfstdglblaudioeffect.h>
+
+
+//
+// RGlobalEffectPrimitiveTest
+//
+
+RGlobalEffectPrimitiveTest* RGlobalEffectPrimitiveTest::NewL(TBool aAllocTest)
+	{
+	RGlobalEffectPrimitiveTest* self = new (ELeave) RGlobalEffectPrimitiveTest(aAllocTest);
+	return self;	
+	}
+	
+RGlobalEffectPrimitiveTest::RGlobalEffectPrimitiveTest(TBool /*aAllocTest*/)
+	{
+	iTestStepName = _L("MM-MMF-GEF-U-001");
+	}
+	
+TVerdict RGlobalEffectPrimitiveTest::DoTestStepL()
+	{
+	INFO_PRINTF1(_L("Check can actually open test GlobalEffect plugin"));
+	TVerdict result = EPass;
+	
+	__MM_HEAP_MARK;
+
+	CTestGlobalEffect* plugin = NULL;
+	
+	TRAPD(error, plugin = CTestGlobalEffect::NewL(NULL));
+	
+	if (error==KErrNone)
+		{
+		INFO_PRINTF1(_L("plugin opened as expected"));
+		delete plugin;
+		}
+	else
+		{
+		INFO_PRINTF2(_L("CreateImplementationL() failed - %d"), error);
+		result = EFail;
+		}
+	
+	__MM_HEAP_MARKEND;
+	
+	return result;
+	}
+	
+//
+// RGlobalEffectStdTest
+//
+
+RGlobalEffectStdTest* RGlobalEffectStdTest::NewL(TBool aAllocTest)
+	{
+	RGlobalEffectStdTest* self = new (ELeave) RGlobalEffectStdTest(aAllocTest);
+	return self;	
+	}
+	
+RGlobalEffectStdTest::RGlobalEffectStdTest(TBool /*aAllocTest*/)
+	{
+	iTestStepName = _L("MM-MMF-GEF-U-002");
+	}
+	
+TVerdict RGlobalEffectStdTest::DoTestStepL()
+	{
+	INFO_PRINTF1(_L("Check standard plugins cleanup return errors"));
+	TVerdict result = EPass;
+	
+	{
+	__MM_HEAP_MARK;
+
+	CMmfGlobalEqEffect* plugin = NULL;
+	
+	TRAPD(error, plugin = CMmfGlobalEqEffect::NewL(NULL));
+	
+	if (error==KErrNone)
+		{
+		INFO_PRINTF1(_L("GlobalEq plugin opened managed to open!"));
+		delete plugin;
+		result = EFail;
+		}
+	else if (error==KErrNotSupported)
+		{
+		INFO_PRINTF1(_L("GlobalEq plugin not supported - as expected"));		
+		}
+	else
+		{
+		INFO_PRINTF2(_L("GlobalEq CreateImplementationL() failed - %d"), error);
+		result = EFail;
+		}
+	
+	__MM_HEAP_MARKEND;
+	}
+	
+	{
+	__MM_HEAP_MARK;
+
+	CMmfGlobalMegaEffect* plugin = NULL;
+	
+	TRAPD(error, plugin = CMmfGlobalMegaEffect::NewL(NULL));
+	
+	if (error==KErrNone)
+		{
+		INFO_PRINTF1(_L("GlobalMega plugin opened managed to open!"));
+		delete plugin;
+		result = EFail;
+		}
+	else if (error==KErrNotSupported)
+		{
+		INFO_PRINTF1(_L("GlobalMega plugin not supported - as expected"));		
+		}
+	else
+		{
+		INFO_PRINTF2(_L("GlobalMega CreateImplementationL() failed - %d"), error);
+		result = EFail;
+		}
+	
+	__MM_HEAP_MARKEND;
+	}
+	
+	return result;
+	}
+	
+//
+// RGlobalEffectMainTest
+//
+
+RGlobalEffectMainTest* RGlobalEffectMainTest::NewL(TBool aAllocTest)
+	{
+	RGlobalEffectMainTest* self = new (ELeave) RGlobalEffectMainTest(aAllocTest);
+	return self;	
+	}
+	
+RGlobalEffectMainTest::RGlobalEffectMainTest(TBool /*aAllocTest*/)
+	{
+	iTestStepName = _L("MM-MMF-GEF-U-003");
+	}
+	
+TVerdict RGlobalEffectMainTest::DoTestStepL()
+	{
+	INFO_PRINTF1(_L("Check basic API calls on TestPlugin"));
+	TVerdict result = EPass;
+	
+	__MM_HEAP_MARK;
+
+	CTestGlobalEffect* plugin = NULL;
+	
+	TRAPD(error, plugin = CTestGlobalEffect::NewL(NULL));
+	
+	if (error!=KErrNone)
+		{
+		INFO_PRINTF2(_L("CreateImplementationL() failed - %d"), error);
+		return EFail;
+		}
+		
+	CleanupStack::PushL(plugin);
+	
+	{
+	// check Capability
+	TUint value = plugin->Capability(EFalse);
+	if (value!=0)
+		{
+		INFO_PRINTF2(_L("Capability(EFalse): expected 0 got - %d"), value);
+		result = EFail;
+		}
+	value = plugin->Capability(ETrue);
+	if (value!=0xffff)
+		{
+		INFO_PRINTF2(_L("Capability(ETrue): expected -1 got - %d"), value);
+		result = EFail;
+		}
+	}
+	
+	// check settings by des, uid or value
+	HBufC8* tempDes = NULL;
+	TUid tempUid;
+	TInt tempInt;
+	TPckg<TInt> tempPackage (tempInt);
+	{
+	// initially (stage 1) nothing set, so SettingsByUidL() and ExtractValuesL()
+	// should leave KErrNotSupported, and SettingsByDesL() should return "1234"
+	
+	TRAP(error, tempDes = plugin->SettingsByDesL());
+	if (error==KErrNone)
+		{
+		CleanupStack::PushL(tempDes);
+		if (*tempDes!=_L8("1234"))
+			{
+			HBufC* tempDes16 = HBufC::NewMaxLC(tempDes->Length());
+			tempDes16->Des().Copy(*tempDes);
+			INFO_PRINTF2(_L("Stage1: SettingsByDesL() expected \"1234\" got \"%S\""), tempDes16);
+			result = EFail;
+			CleanupStack::PopAndDestroy(tempDes16);
+			}
+		CleanupStack::PopAndDestroy(tempDes);	
+		tempDes = NULL;	
+		}
+	else
+		{
+		INFO_PRINTF2(_L("Stage1: SettingsByDesL() returned %d"), error);
+		result = EFail;
+		}
+	
+	TRAP(error, tempUid = plugin->SettingsByUidL());	
+	if (error!=KErrNotSupported)
+		{
+		INFO_PRINTF3(_L("Stage1: SettingsByUidL() expected KErrNotSupported got %d(0x%x)"), error, tempUid.iUid);
+		result = EFail;
+		}
+		
+	TRAP(error, plugin->ExtractValuesL(tempPackage));
+	if (error!=KErrNotSupported)
+		{
+		INFO_PRINTF3(_L("Stage1: ExtractValuesL() expected KErrNotSupported got %d(%d)"), error, tempInt);
+		result = EFail;
+		}
+	
+	}
+		
+	{
+	// at stage 2, we set a value by UID, so now SettingsByUid returns something sensible
+	TUid sampleUid = {0x1234567}; // any silly value will do
+	plugin->SetSettingsByUidL(sampleUid);
+	
+	TRAP(error, tempDes = plugin->SettingsByDesL());
+	if (error==KErrNone)
+		{
+		CleanupStack::PushL(tempDes);
+		if (*tempDes!=_L8("1234"))
+			{
+			HBufC* tempDes16 = HBufC::NewMaxLC(tempDes->Length());
+			tempDes16->Des().Copy(*tempDes);
+			INFO_PRINTF2(_L("Stage2: SettingsByDesL() expected \"1234\" got \"%S\""), tempDes16);
+			result = EFail;
+			CleanupStack::PopAndDestroy(tempDes16);
+			}
+		CleanupStack::PopAndDestroy(tempDes);	
+		tempDes = NULL;	
+		}
+	else
+		{
+		INFO_PRINTF2(_L("Stage2: SettingsByDesL() returned %d"), error);
+		result = EFail;
+		}
+	
+	TRAP(error, tempUid = plugin->SettingsByUidL());	
+	if (error!=KErrNone)
+		{
+		INFO_PRINTF3(_L("Stage2: SettingsByUidL() expected KErrNone got %d(0x%x)"), error, tempUid.iUid);
+		result = EFail;
+		}
+	else if (tempUid != sampleUid)
+		{
+		INFO_PRINTF3(_L("Stage2: SettingsByUidL() expected return of 0x%x got 0x%x"), sampleUid.iUid, tempUid.iUid);		
+		}
+		
+	TRAP(error, plugin->ExtractValuesL(tempPackage));
+	if (error!=KErrNotSupported)
+		{
+		INFO_PRINTF3(_L("Stage2: ExtractValuesL() expected KErrNotSupported got %d(%d)"), error, tempInt);
+		result = EFail;
+		}
+	
+	}
+		
+	{
+	// at stage 3, we set a value by des, so again only SettingsByDesL() gives valid results
+	_LIT8(KSampleDes, "89a");
+	plugin->SetSettingsByDesL(KSampleDes);
+	
+	TRAP(error, tempDes = plugin->SettingsByDesL());
+	if (error==KErrNone)
+		{
+		CleanupStack::PushL(tempDes);
+		if (*tempDes!=KSampleDes)
+			{
+			HBufC* tempDes16 = HBufC::NewMaxLC(tempDes->Length());
+			tempDes16->Des().Copy(*tempDes);
+			INFO_PRINTF2(_L("Stage3: SettingsByDesL() expected \"89a\" got \"%S\""), tempDes16);
+			result = EFail;
+			CleanupStack::PopAndDestroy(tempDes16);
+			}
+		CleanupStack::PopAndDestroy(tempDes);	
+		tempDes = NULL;	
+		}
+	else
+		{
+		INFO_PRINTF2(_L("Stage3: SettingsByDesL() returned %d"), error);
+		result = EFail;
+		}
+	
+	TRAP(error, tempUid = plugin->SettingsByUidL());	
+	if (error!=KErrNotSupported)
+		{
+		INFO_PRINTF3(_L("Stage3: SettingsByUidL() expected KErrNotSupported got %d(0x%x)"), error, tempUid.iUid);
+		result = EFail;
+		}
+		
+	TRAP(error, plugin->ExtractValuesL(tempPackage));
+	if (error!=KErrNotSupported)
+		{
+		INFO_PRINTF3(_L("Stage3: ExtractValuesL() expected KErrNotSupported got %d(%d)"), error, tempInt);
+		result = EFail;
+		}
+	}
+		
+	{
+	// at stage 4, we set a value by package buffer, so only that way returns valid value
+	const TInt sampleInt = 10;
+	TPckgC<TInt> sampleBuffer (sampleInt);
+	plugin->SetByValuesL(sampleBuffer);
+	
+	TRAP(error, tempDes = plugin->SettingsByDesL());
+	if (error==KErrNone)
+		{
+		CleanupStack::PushL(tempDes);
+		HBufC* tempDes16 = HBufC::NewMaxLC(tempDes->Length());
+		tempDes16->Des().Copy(*tempDes);
+		INFO_PRINTF2(_L("Stage4: SettingsByDesL() expected KErrNotSupported got \"%S\""), tempDes16);
+		result = EFail;
+		CleanupStack::PopAndDestroy(2, tempDes);	
+		tempDes = NULL;	
+		}
+	else if (error!=KErrNotSupported)
+		{
+		INFO_PRINTF2(_L("Stage4: SettingsByDesL() expected KErrNotSupported returned %d"), error);
+		result = EFail;
+		}
+	
+	TRAP(error, tempUid = plugin->SettingsByUidL());	
+	if (error!=KErrNotSupported)
+		{
+		INFO_PRINTF3(_L("Stage4: SettingsByUidL() expected KErrNotSupported got %d(0x%x)"), error, tempUid.iUid);
+		result = EFail;
+		}
+		
+	TRAP(error, plugin->ExtractValuesL(tempPackage));
+	if (error!=KErrNone)
+		{
+		INFO_PRINTF3(_L("Stage4: ExtractValuesL() expected KErrNone got %d(%d)"), error, tempInt);
+		result = EFail;
+		}
+	else if (tempInt!=sampleInt)
+		{
+		INFO_PRINTF3(_L("Stage4: ExtractValuesL() expected %d got %d"), sampleInt, tempInt);
+		result = EFail;
+		}
+	}
+	
+	{
+	// Check for Enabled() and IsActive() - should be false to start. poke value and show have
+	// changed. Have to use custom command for SetActive() since not really the way to drive
+	// - this should relate to the underlying implementation
+	TBool enabled = plugin->IsEnabled();
+	TBool active = plugin->IsActive();
+	if (enabled!=EFalse || active!=EFalse)
+		{
+		INFO_PRINTF3(_L("Check1: active(%d) and enabled(%d) should have been false"), active, enabled);
+		result = EFail;
+		}
+	plugin->SetEnabledL(ETrue);
+	plugin->SetActive(ETrue);
+	enabled = plugin->IsEnabled();
+	active = plugin->IsActive();
+	if (enabled==EFalse || active==EFalse)
+		{
+		INFO_PRINTF3(_L("Check2: active(%d) and enabled(%d) should have been true"), active, enabled);
+		result = EFail;
+		}
+	}
+	
+	{
+	// check preset - for test this ties up with the test plugin
+	const TInt KPresetsCount = 3;
+	MMmfGlobalAudioPresetList* list = plugin->KnownPresetsL();
+
+	// reproduce what the plugin will do and check
+	if (list->MdcaCount()!=KPresetsCount)
+		{
+		INFO_PRINTF3(_L("Expected %d presets, got %d"), KPresetsCount, list->MdcaCount());
+		result = EFail;
+		}
+	else
+		{
+		for (TInt index=0; index<KPresetsCount; index++)
+			{
+			TBuf<10> name;
+			name.Num(index);
+			TUid tempUid={index};
+			
+			TUid foundUid = list->GAPUidPoint(index);
+			const TPtrC foundName = list->MdcaPoint(index);
+			
+			if (foundUid!=tempUid)
+				{
+				INFO_PRINTF4(_L("Index %d, expected %x found %x"), index, tempUid.iUid, foundUid.iUid);
+				result = EFail;
+				}
+			if (foundName != name)
+				{
+				INFO_PRINTF4(_L("Index %d, expected %S found %S"), index, &name, &foundName);
+				result = EFail;
+				}
+			}
+		
+		}
+	}
+
+	CleanupStack::PopAndDestroy(plugin);
+	
+	__MM_HEAP_MARKEND;
+	
+	return result;
+	}
+	
+//
+// RGlobalEffectCallbackTest
+//
+
+const TUid KUidTestGlbNotification = {KUidTestGlbNotificationDefine};
+
+
+RGlobalEffectCallbackTest* RGlobalEffectCallbackTest::NewL(TBool aAllocTest)
+	{
+	RGlobalEffectCallbackTest* self = new (ELeave) RGlobalEffectCallbackTest(aAllocTest);
+	return self;	
+	}
+	
+RGlobalEffectCallbackTest::RGlobalEffectCallbackTest(TBool /*aAllocTest*/)
+	{
+	iTestStepName = _L("MM-MMF-GEF-U-004");
+	}
+	
+void RGlobalEffectCallbackTest::GAEEventNotificationL(CMmfGlobalAudioEffect* aEffect, 
+                                                      TUid aEventUid, 
+                                                      const TDesC8& aParam)
+	{
+	INFO_PRINTF1(_L("Callback"));
+	if (aEffect!=iEffect)
+		{
+		INFO_PRINTF3(_L("Effect is %x, expected %d"), aEffect, iEffect);
+		iResult = EFail;
+		}
+	if (KUidTestGlbNotification != aEventUid)
+		{
+		INFO_PRINTF3(_L("Uid is %x, expected %x"), aEventUid.iUid, KUidTestGlbNotification.iUid);
+		iResult = EFail;
+		}
+	if (aParam != KNullDesC8)
+		{
+		INFO_PRINTF2(_L("Param=\"%S\", expected \"\""), &aParam);
+		iResult = EFail;
+		}
+	iCalledBack = ETrue;
+	}
+
+	
+TVerdict RGlobalEffectCallbackTest::DoTestStepL()
+	{
+	INFO_PRINTF1(_L("Check notification callback"));
+	iResult = EPass;
+	
+	__MM_HEAP_MARK;
+
+	iEffect = CTestGlobalEffect::NewL(this);
+	CleanupStack::PushL(iEffect);
+	
+	// for test, just generate test synchronously
+	iEffect->RequestNotificationL(KUidTestGlbNotification);
+	iEffect->GenCallbackL();
+	
+	if (!iCalledBack)
+		{
+		INFO_PRINTF1(_L("Callback seemingly did not happen"));
+		iResult = EFail;
+		}
+	
+	CleanupStack::PopAndDestroy(iEffect);
+	
+	__MM_HEAP_MARKEND;
+	
+	return iResult;
+	}
+