sl@0: // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // Base class for capability aware test steps and a auxilarry test step to publish sl@0: // features needed by other test steps sl@0: // sl@0: // sl@0: sl@0: /** sl@0: @file sl@0: @internalComponent sl@0: @test sl@0: */ sl@0: sl@0: #include "efm_teststepbase.h" sl@0: #include sl@0: #include sl@0: sl@0: CEFMTestStepPublishFeatures::CEFMTestStepPublishFeatures() sl@0: { sl@0: SetTestStepName(KEFMTestStepPublishFeatures); sl@0: } sl@0: sl@0: TVerdict CEFMTestStepPublishFeatures::doTestStepL() sl@0: { sl@0: RFeatureControl control; sl@0: TInt err = control.Open(); sl@0: TESTDIAGNOSTICERROR(err==KErrNone, sl@0: _L("Failed to open RFeatureControl connection during initial feature publishing: error = %d"),err); sl@0: CleanupClosePushL( control ); sl@0: sl@0: // Make sure feature which is not supported exists sl@0: TInt supported = control.FeatureSupported( KDefaultUnsupportedUid ); sl@0: if( supported != KFeatureUnsupported && supported != KFeatureSupported ) sl@0: { sl@0: TBitFlags32 flags( 0 ); sl@0: flags.Set( EFeatureModifiable ); sl@0: flags.Set( EFeaturePersisted ); sl@0: TFeatureEntry entry( KDefaultUnsupportedUid, flags, KDefaultData1 ); sl@0: err = control.AddFeature( entry ); sl@0: TESTDIAGNOSTICERROR(err==KErrNone, sl@0: _L("Failed to add feature during initial feature publishing: error = %d"),err); sl@0: } sl@0: else sl@0: { sl@0: err = control.SetFeature( KDefaultUnsupportedUid, EFalse, KDefaultData1 ); sl@0: TESTDIAGNOSTICERROR(err==KErrNone, sl@0: _L("Failed to set feature data during initial feature publishing: error = %d"),err); sl@0: } sl@0: sl@0: // Make sure feature which is supported exists sl@0: supported = control.FeatureSupported( KDefaultSupportedUid ); sl@0: if( supported != KFeatureUnsupported && supported != KFeatureSupported ) sl@0: { sl@0: TBitFlags32 flags( 0 ); sl@0: flags.Set( EFeatureSupported ); sl@0: flags.Set( EFeatureModifiable ); sl@0: flags.Set( EFeaturePersisted ); sl@0: TFeatureEntry entry( KDefaultSupportedUid, flags, KDefaultData1 ); sl@0: err = control.AddFeature( entry ); sl@0: TESTDIAGNOSTICERROR(err==KErrNone, sl@0: _L("Failed to add feature during initial feature publishing: error = %d"),err); sl@0: } sl@0: else sl@0: { sl@0: err = control.SetFeature( KDefaultSupportedUid, ETrue, KDefaultData1 ); sl@0: TESTDIAGNOSTICERROR(err==KErrNone, sl@0: _L("Failed to set feature data during initial feature publishing: error = %d"),err); sl@0: } sl@0: sl@0: // Make sure feature which is modifiable exists sl@0: supported = control.FeatureSupported( KModifiableUid ); sl@0: if( supported != KFeatureUnsupported && supported != KFeatureSupported ) sl@0: { sl@0: TBitFlags32 flags( 0 ); sl@0: flags.Set( EFeatureSupported ); sl@0: flags.Set( EFeatureModifiable ); sl@0: flags.Set( EFeaturePersisted ); sl@0: TFeatureEntry entry( KModifiableUid, flags, KDefaultData1 ); sl@0: err = control.AddFeature( entry ); sl@0: TESTDIAGNOSTICERROR(err==KErrNone, sl@0: _L("Failed to add feature during initial feature publishing: error = %d"),err); sl@0: } sl@0: else sl@0: { sl@0: err = control.SetFeature( KModifiableUid, ETrue, KDefaultData1 ); sl@0: TESTDIAGNOSTICERROR(err==KErrNone, sl@0: _L("Failed to set feature data during initial feature publishing: error = %d"),err); sl@0: } sl@0: sl@0: // Make sure feature which is unmodifiable exists sl@0: supported = control.FeatureSupported( KUnmodifiableUid ); sl@0: if( supported != KFeatureUnsupported && supported != KFeatureSupported ) sl@0: { sl@0: TBitFlags32 flags( 0 ); sl@0: flags.Set( EFeatureSupported ); sl@0: TFeatureEntry entry( KUnmodifiableUid, flags, KDefaultData1 ); sl@0: err = control.AddFeature( entry ); sl@0: TESTE(err==KErrNone,err); sl@0: } sl@0: sl@0: // Make sure uninitialized feature exists sl@0: supported = control.FeatureSupported( KUninitializedUid ); sl@0: if( supported != KFeatureUnsupported && supported != KFeatureSupported sl@0: && supported != KErrNotReady ) sl@0: { sl@0: TBitFlags32 flags( 0 ); sl@0: flags.Set( EFeatureUninitialized ); sl@0: flags.Set( EFeatureModifiable); sl@0: TFeatureEntry entry( KUninitializedUid, flags, KDefaultData1 ); sl@0: err = control.AddFeature( entry ); sl@0: TESTDIAGNOSTICERROR(err==KErrNone, sl@0: _L("Failed to add feature during initial feature publishing: error = %d"),err); sl@0: } sl@0: sl@0: //Make sure that persisted feature exists sl@0: sl@0: supported = control.FeatureSupported(KPersistedUid); sl@0: if(supported != KFeatureUnsupported && supported != KFeatureSupported) sl@0: { sl@0: TBitFlags32 flags( 0 ); sl@0: //flags.Set( EFeatureSupported ); sl@0: flags.Set( EFeaturePersisted ); sl@0: TFeatureEntry entry( KPersistedUid, flags, KDefaultData1 ); sl@0: err = control.AddFeature( entry ); sl@0: TESTDIAGNOSTICERROR(err==KErrNone, sl@0: _L("Failed to add feature during initial feature publishing: error = %d"),err); sl@0: } sl@0: sl@0: sl@0: CleanupStack::PopAndDestroy( &control ); sl@0: sl@0: return TestStepResult(); sl@0: } sl@0: sl@0: TVerdict CEFMConfigurableTestStepBase::doTestStepPreambleL() sl@0: { sl@0: //read wether this test step is a OOM test sl@0: GetBoolFromConfig(ConfigSection(), KTestOOM, iOOM); sl@0: sl@0: //read wether this test step is a Low-capability test sl@0: GetBoolFromConfig(ConfigSection(), KTestLowCap, iLowCap); sl@0: sl@0: return TestStepResult(); sl@0: } sl@0: sl@0: void CEFMConfigurableTestStepBase::CheckCondition(TBool aMainCondition, TBool aOOMCondition, TPtrC aLoggingMessage, TInt aErrorCode) sl@0: { sl@0: TBool cond = iOOM?aMainCondition||aOOMCondition:aMainCondition; sl@0: if (!cond) sl@0: { sl@0: ERR_PRINTF2( aLoggingMessage, aErrorCode ); sl@0: SetTestStepResult(EFail); sl@0: } sl@0: }