featuremgmt/featuremgr/test/tef/tef_efm_normal/src/featurecontrol_test_steps.cpp
changeset 0 08ec8eefde2f
child 23 26645d81f48d
equal deleted inserted replaced
-1:000000000000 0:08ec8eefde2f
       
     1 // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // Feature Control component test steps
       
    15 // 
       
    16 //
       
    17 
       
    18 /**
       
    19  @file
       
    20  @internalComponent
       
    21  @test
       
    22 */
       
    23 
       
    24 #include <featmgr/featurecontrol.h>
       
    25 #include "featurecontrol_test_steps.h"
       
    26 
       
    27 CFeatureControlConnetctionStep::CFeatureControlConnetctionStep()
       
    28    {
       
    29    SetTestStepName(KFeatureControlConnetction);
       
    30    }
       
    31 
       
    32 TVerdict CFeatureControlConnetctionStep::doTestStepL()
       
    33    {
       
    34    RFeatureControl control;
       
    35    TInt err = control.Connect();       
       
    36    TESTDIAGNOSTICERROR(err==KErrNone,
       
    37          _L("RFeatureControl::Connect failed: error = %d"),err);
       
    38    control.Close();
       
    39    
       
    40    err = control.Open();       
       
    41    TESTDIAGNOSTICERROR(err==KErrNone,
       
    42          _L("RFeatureControl::Open failed: error = %d"),err);
       
    43    control.Close();
       
    44    control.Close();
       
    45    err = control.Open();       
       
    46    TESTDIAGNOSTICERROR(err==KErrNone,
       
    47          _L("RFeatureControl::Open failed after RFeatureControl::Close called twice: error = %d"),err);
       
    48    control.Close();
       
    49    return TestStepResult();
       
    50    }
       
    51 
       
    52 CFeatureControlSingleFeatureRequestStep::CFeatureControlSingleFeatureRequestStep()
       
    53    {
       
    54    SetTestStepName(KFeatureControlSingleFeatureRequest);
       
    55    } 
       
    56 
       
    57 TVerdict CFeatureControlSingleFeatureRequestStep::doTestStepL()
       
    58 	{
       
    59 	RFeatureControl control;
       
    60 	TInt err = control.Open();
       
    61 	TESTDIAGNOSTICERROR(err==KErrNone,
       
    62 	  _L("RFeatureControl::Open failed: error = %d"),err);
       
    63 
       
    64 	TInt supported = control.FeatureSupported( KDefaultSupportedUid );    
       
    65 	TESTDIAGNOSTICERROR(supported == KFeatureSupported,
       
    66 	  _L("RFeatureControl::FeatureSupported - KFeatureSupported expected for supported feature; returned value is %d"),supported);
       
    67 	
       
    68 	supported = control.FeatureSupported( KDefaultUnsupportedUid );
       
    69 	TESTDIAGNOSTICERROR(supported == KFeatureUnsupported,
       
    70 	  _L("RFeatureControl::FeatureSupported - KFeatureUnsupported expected for unsupported feature; returned value is %d"),supported);
       
    71 
       
    72 	supported = control.FeatureSupported( KUninitializedUid );
       
    73 	TESTDIAGNOSTICERROR(supported == KErrNotReady,
       
    74 	  _L("RFeatureControl::FeatureSupported - KErrNotReady expected for uninitialized feature; returned value is %d"),supported);
       
    75 	control.Close();
       
    76 
       
    77 	return TestStepResult();
       
    78 	}
       
    79       
       
    80 CFeatureControlDataAndStatusRequestStep::CFeatureControlDataAndStatusRequestStep()
       
    81    {
       
    82    SetTestStepName(KFeatureControlDataAndStatusRequest);
       
    83    }         
       
    84 
       
    85 CFeatureControlMultipleFeatureRequestStep::CFeatureControlMultipleFeatureRequestStep()
       
    86    {
       
    87    SetTestStepName(KFeatureControlMultipleFeatureRequest);   
       
    88    }
       
    89 
       
    90 TVerdict CFeatureControlMultipleFeatureRequestStep::doTestStepL(  )
       
    91    {
       
    92     RFeatureControl control;
       
    93     TInt err = control.Open();
       
    94     TESTDIAGNOSTICERROR(err==KErrNone,
       
    95          _L("RFeatureControl::Open failed: error = %d"),err);
       
    96     CleanupClosePushL( control );
       
    97     RFeatureArray uids;
       
    98     TInt supported;
       
    99     CleanupClosePushL( uids );
       
   100     
       
   101     // Make query with empty array
       
   102     err = control.FeaturesSupported( uids );
       
   103     TESTDIAGNOSTICERROR(err == KErrArgument,
       
   104           _L("RFeatureControl::FeaturesSupported - KErrArgument expected; error = %d"),err);    
       
   105     
       
   106     TInt index = uids.Find( KDefaultSupportedUid );
       
   107     TESTDIAGNOSTICERROR(index == KErrNotFound,
       
   108           _L("KErrNotFound expected; returned value is %d"),index);        
       
   109     
       
   110     // Add one supported feature and query statuses.
       
   111     uids.AppendL( KDefaultSupportedUid );
       
   112     err = control.FeaturesSupported( uids );
       
   113     TESTDIAGNOSTICERROR(err == KErrNone,
       
   114           _L("RFeatureControl::FeaturesSupported - KErrNone expected; error = %d"),err);    
       
   115     index = uids.Find( KDefaultSupportedUid );
       
   116     TESTDIAGNOSTICERROR(index != KErrNotFound,
       
   117           _L("Feature is expected to be found; return value is %d"),index);        
       
   118     index = uids.Find( KDefaultUnsupportedUid );
       
   119     TESTDIAGNOSTICERROR(index == KErrNotFound,
       
   120           _L("KErrNotFound expected for not added feature; return value is %d"),index);        
       
   121     index = uids.Find( KUnknownUid );
       
   122     TESTDIAGNOSTICERROR(index == KErrNotFound,
       
   123           _L("KErrNotFound expected for non existing feature; return value is %d"),index);        
       
   124     
       
   125     // Append feature which is supposed to be non-existent and re-query statuses.
       
   126     uids.AppendL( KUnknownUid );
       
   127     err = control.FeaturesSupported( uids );
       
   128     TESTDIAGNOSTICERROR(err == KErrNone,
       
   129           _L("RFeatureControl::FeaturesSupported - KErrNone expected; error = %d"),err);    
       
   130     index = uids.Find( KUnknownUid );
       
   131     TESTDIAGNOSTICERROR(index == KErrNotFound,
       
   132           _L("KErrNotFound still expected for non existing feature; return value is %d"),index);        
       
   133     
       
   134     // Add one more entry and query support statuses again
       
   135     uids.AppendL( KDefaultUnsupportedUid );
       
   136     err = control.FeaturesSupported( uids );
       
   137     TESTDIAGNOSTICERROR(err == KErrNone,
       
   138           _L("RFeatureControl::FeaturesSupported - KErrNone expected; error = %d"),err);    
       
   139     index = uids.Find( KDefaultUnsupportedUid );
       
   140     TESTDIAGNOSTICERROR(index != KErrNotFound,
       
   141           _L("Feature is expected to be found; return value is %d"),index); 
       
   142     
       
   143     // Finally check support statuses for supported and 
       
   144     // not-supported features are as expected.
       
   145     index = uids.Find( KDefaultSupportedUid );
       
   146     TESTDIAGNOSTICERROR(index != KErrNotFound,
       
   147           _L("Feature is expected to be found; return value is %d"),index);        
       
   148     if(index != KErrNotFound)
       
   149          {    
       
   150        supported = static_cast<TInt>(uids[index].FeatureFlags().IsSet( EFeatureSupported ));
       
   151        TESTDIAGNOSTICERROR(supported == KFeatureSupported,
       
   152              _L("KFeatureSupported expected; return value is %d"),supported);            
       
   153          }
       
   154     index = uids.Find( KDefaultUnsupportedUid );
       
   155     TESTDIAGNOSTICERROR(index != KErrNotFound,
       
   156           _L("Feature is expected to be found; return value is %d"),index);            
       
   157     if(index != KErrNotFound)
       
   158         {
       
   159         supported = static_cast<TInt>(uids[index].FeatureFlags().IsSet( EFeatureSupported ));
       
   160         TESTDIAGNOSTICERROR(supported == KFeatureUnsupported,
       
   161               _L("KFeatureUnsupported expected; return value is %d"),index);                    
       
   162         }
       
   163     
       
   164     CleanupStack::PopAndDestroy( &uids );
       
   165     CleanupStack::PopAndDestroy( &control );
       
   166     return TestStepResult();
       
   167     }
       
   168 
       
   169 TVerdict CFeatureControlDataAndStatusRequestStep::doTestStepL()      
       
   170     {
       
   171     RFeatureControl control;
       
   172     TInt err = control.Open();
       
   173     TESTDIAGNOSTICERROR(err==KErrNone,
       
   174           _L("RFeatureControl::Open failed: error = %d"),err);
       
   175     
       
   176     // Fetch status for "unknown" feature
       
   177     TFeatureEntry emptyEntry;
       
   178     TInt supported = control.FeatureSupported( emptyEntry );
       
   179     TESTDIAGNOSTICERROR(supported == KErrNotFound,
       
   180           _L("RFeatureControl::FeatureSupported - KErrNotFound expected for unknown feature; returned value is %d"),supported);
       
   181     
       
   182     // Fetch initially set data for supported and modifiable feature
       
   183     TFeatureEntry entry( KDefaultSupportedUid );
       
   184     supported = control.FeatureSupported( entry );
       
   185     TESTDIAGNOSTICERROR(supported == KFeatureSupported,
       
   186           _L("RFeatureControl::FeatureSupported - KFeatureSupported expected for supported feature; returned value is %d"),supported);
       
   187     TESTDIAGNOSTICERROR(entry.FeatureData() == KDefaultData1,
       
   188           _L("RFeatureControl::FeatureData - KDefaultData1 expected; returned value is %x"),entry.FeatureData());    
       
   189     
       
   190     // Modify and refetch data for supported and modifiable feature
       
   191     err = control.SetFeature( KDefaultSupportedUid, KChangeData );
       
   192     if (iLowCap)
       
   193        {
       
   194        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   195               _L("RFeatureControl::SetFeature - KErrPermissionDenied expected; error = %d"),err);
       
   196        }
       
   197     else
       
   198        {
       
   199         TESTDIAGNOSTICERROR(err == KErrNone,
       
   200               _L("RFeatureControl::SetFeature - KErrNone expected; error = %d"),err);
       
   201        }
       
   202 
       
   203     supported = control.FeatureSupported( entry );
       
   204     TESTDIAGNOSTICERROR(supported == KFeatureSupported,
       
   205           _L("RFeatureControl::FeatureSupported - KFeatureSupported expected for supported feature; returned value is %d"),supported);
       
   206     if (iLowCap)
       
   207        {
       
   208         TESTDIAGNOSTICERROR(entry.FeatureData() == KDefaultData1,
       
   209               _L("RFeatureControl::FeatureData - KDefaultData1 expected; returned value is %x"),entry.FeatureData());    
       
   210        }
       
   211     else
       
   212        {
       
   213         TESTDIAGNOSTICERROR(entry.FeatureData() == KChangeData,
       
   214               _L("RFeatureControl::FeatureData - KChangeData expected; returned value is %x"),entry.FeatureData());    
       
   215        }
       
   216     
       
   217     // Try to modify unmodifiable feature
       
   218     TFeatureEntry entry2( KUnmodifiableUid );    
       
   219     err = control.SetFeature( KUnmodifiableUid, KChangeData );
       
   220     if (iLowCap)
       
   221        {
       
   222        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   223               _L("RFeatureControl::SetFeature - KErrPermissionDenied expected; error = %d"),err);
       
   224        }
       
   225     else
       
   226        {
       
   227         TESTDIAGNOSTICERROR(err == KErrAccessDenied,
       
   228               _L("RFeatureControl::SetFeature - KErrAccessDenied expected; error = %d"),err);    
       
   229        }
       
   230 
       
   231     supported = control.FeatureSupported( entry2 );
       
   232     TESTDIAGNOSTICERROR(supported == KFeatureSupported,
       
   233           _L("RFeatureControl::FeatureSupported - KFeatureSupported expected for unmodifiable feature; returned value is %d"),supported);
       
   234     TESTDIAGNOSTICERROR(entry2.FeatureData() == KDefaultData1, 
       
   235           _L("RFeatureControl::FeatureData - KDefaultData1 expected; returned value is %x"),entry2.FeatureData());    
       
   236     
       
   237     control.Close();
       
   238     return TestStepResult();
       
   239     }     
       
   240 
       
   241 CFeatureControlFeatureEnablingStep::CFeatureControlFeatureEnablingStep()
       
   242    {
       
   243    SetTestStepName(KFeatureControlFeatureEnabling);
       
   244    }       
       
   245       
       
   246 TVerdict CFeatureControlFeatureEnablingStep::doTestStepL(  )
       
   247     {
       
   248     RFeatureControl control;
       
   249     TInt err = control.Open();
       
   250     TESTDIAGNOSTICERROR(err==KErrNone,
       
   251           _L("RFeatureControl::Open failed: error = %d"),err);
       
   252     
       
   253     err = control.EnableFeature( KModifiableUid );
       
   254     if (iLowCap)
       
   255        {
       
   256        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   257               _L("RFeatureControl::EnableFeature - KErrPermissionDenied expected; error = %d"),err);
       
   258        }
       
   259     else
       
   260        {
       
   261         TESTDIAGNOSTICERROR(err == KErrNone,
       
   262               _L("RFeatureControl::EnableFeature - KErrNone expected; error = %d"),err);                    
       
   263        }
       
   264 
       
   265     err = control.EnableFeature( KUnmodifiableUid );
       
   266     if (iLowCap)
       
   267        {
       
   268        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   269               _L("RFeatureControl::EnableFeature - KErrPermissionDenied expected; error = %d"),err);
       
   270        }
       
   271     else
       
   272        {
       
   273         TESTDIAGNOSTICERROR(err == KErrAccessDenied,
       
   274               _L("RFeatureControl::EnableFeature - KErrAccessDenied expected; error = %d"),err);                        
       
   275        }
       
   276 
       
   277     err = control.EnableFeature( KUnknownUid );
       
   278     if (iLowCap)
       
   279        {
       
   280        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   281               _L("RFeatureControl::EnableFeature - KErrPermissionDenied expected; error = %d"),err);
       
   282        }
       
   283     else
       
   284        {
       
   285         TESTDIAGNOSTICERROR(err == KErrNotFound,
       
   286               _L("RFeatureControl::EnableFeature - KErrNotFound expected; error = %d"),err);                    
       
   287        }
       
   288        
       
   289 	err = control.EnableFeature( KPersistedUid );
       
   290     if (iLowCap)
       
   291        {
       
   292        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   293               _L("RFeatureControl::EnableFeature - KErrPermissionDenied expected; error = %d"),err);
       
   294        }
       
   295     else
       
   296        {
       
   297         TESTDIAGNOSTICERROR(err == KErrAccessDenied,
       
   298               _L("RFeatureControl::EnableFeature - KErrAccessDenied expected; error = %d"),err);                    
       
   299        }
       
   300 
       
   301     
       
   302     control.Close();
       
   303     return TestStepResult();
       
   304     }      
       
   305 
       
   306 CFeatureControlFeatureDisablingStep::CFeatureControlFeatureDisablingStep()
       
   307    {
       
   308    SetTestStepName(KFeatureControlFeatureDisabling);
       
   309    }       
       
   310       
       
   311 TVerdict CFeatureControlFeatureDisablingStep::doTestStepL(  )
       
   312     {
       
   313     RFeatureControl control;
       
   314     TInt err = control.Open();
       
   315     TESTDIAGNOSTICERROR(err==KErrNone,
       
   316           _L("RFeatureControl::Open failed: error = %d"),err);
       
   317     
       
   318     err = control.DisableFeature( KModifiableUid );
       
   319     if (iLowCap)
       
   320        {
       
   321        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   322               _L("RFeatureControl::DisableFeature - KErrPermissionDenied expected; error = %d"),err);
       
   323        }
       
   324     else
       
   325        {
       
   326         TESTDIAGNOSTICERROR(err == KErrNone,
       
   327               _L("RFeatureControl::DisableFeature - KErrNone expected; error = %d"),err);                    
       
   328        }
       
   329 
       
   330     err = control.DisableFeature( KUnmodifiableUid );
       
   331     if (iLowCap)
       
   332        {
       
   333        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   334               _L("RFeatureControl::DisableFeature - KErrPermissionDenied expected; error = %d"),err);
       
   335        }
       
   336     else
       
   337        {
       
   338         TESTDIAGNOSTICERROR(err == KErrAccessDenied,
       
   339               _L("RFeatureControl::DisableFeature - KErrAccessDenied expected; error = %d"),err);                        
       
   340        }
       
   341 
       
   342     err = control.DisableFeature( KUnknownUid );
       
   343     if (iLowCap)
       
   344        {
       
   345        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   346               _L("RFeatureControl::DisableFeature - KErrPermissionDenied expected; error = %d"),err);
       
   347        }
       
   348     else
       
   349        {
       
   350         TESTDIAGNOSTICERROR(err == KErrNotFound,
       
   351               _L("RFeatureControl::DisableFeature - KErrNotFound expected; error = %d"),err);                    
       
   352        }
       
   353     
       
   354     control.Close();
       
   355     return TestStepResult();
       
   356     }
       
   357     
       
   358 CFeatureControlFeatureDataSettingStep::CFeatureControlFeatureDataSettingStep()
       
   359    {
       
   360    SetTestStepName(KFeatureControlFeatureDataSetting);
       
   361    }       
       
   362 
       
   363 TVerdict CFeatureControlFeatureDataSettingStep::doTestStepL(  )
       
   364     {
       
   365     RFeatureControl control;
       
   366     TInt err = control.Open();
       
   367     TESTDIAGNOSTICERROR(err==KErrNone,
       
   368           _L("RFeatureControl::Open failed: error = %d"),err);
       
   369 
       
   370     err = control.SetFeature( KDefaultSupportedUid, KDefaultData1 );
       
   371     if (iLowCap)
       
   372        {
       
   373        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   374               _L("RFeatureControl::SetFeature - KErrPermissionDenied expected; error = %d"),err);
       
   375        }
       
   376     else
       
   377        {
       
   378        TESTDIAGNOSTICERROR(err == KErrNone,       
       
   379               _L("RFeatureControl::SetFeature - KErrNone expected; error = %d"),err);       
       
   380        }
       
   381     err = control.SetFeature( KDefaultUnsupportedUid, KDefaultData1 );
       
   382     if (iLowCap)
       
   383        {
       
   384        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   385               _L("RFeatureControl::SetFeature - KErrPermissionDenied expected; error = %d"),err);
       
   386        }
       
   387     else
       
   388        {
       
   389        TESTDIAGNOSTICERROR(err == KErrNone,       
       
   390               _L("RFeatureControl::SetFeature - KErrNone expected; error = %d"),err);
       
   391        }
       
   392 
       
   393     err = control.SetFeature( KUnmodifiableUid, KDefaultData1 );
       
   394     if (iLowCap)
       
   395        {
       
   396        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   397               _L("RFeatureControl::SetFeature - KErrPermissionDenied expected; error = %d"),err);
       
   398        }
       
   399     else
       
   400        {
       
   401         TESTDIAGNOSTICERROR(err == KErrAccessDenied, 
       
   402               _L("RFeatureControl::SetFeature - KErrAccessDenied expected; error = %d"),err);
       
   403        }
       
   404     
       
   405     err = control.SetFeature( KUnknownUid, KDefaultData1 );
       
   406     if (iLowCap)
       
   407        {
       
   408        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   409               _L("RFeatureControl::SetFeature - KErrPermissionDenied expected; error = %d"),err);
       
   410        }
       
   411     else
       
   412        {
       
   413         TESTDIAGNOSTICERROR(err == KErrNotFound, 
       
   414               _L("RFeatureControl::SetFeature - KErrNotFound expected; error = %d"),err);
       
   415            
       
   416        }
       
   417         
       
   418     control.Close();
       
   419     return TestStepResult();
       
   420     }
       
   421 
       
   422 CFeatureControlFeatureAddingStep::CFeatureControlFeatureAddingStep()
       
   423    {   
       
   424    SetTestStepName(KFeatureControlFeatureAdding);
       
   425    }
       
   426    
       
   427 TVerdict CFeatureControlFeatureAddingStep::doTestStepL(  )     
       
   428     {
       
   429     RFeatureControl control;
       
   430     TInt err( control.Open() );
       
   431     TESTDIAGNOSTICERROR(err==KErrNone,
       
   432           _L("RFeatureControl::Open failed: error = %d"),err);
       
   433     
       
   434     // Try to add already existing feature.
       
   435     TBitFlags32 flags( 0 );
       
   436     flags.Set( EFeatureSupported );
       
   437     flags.Set( EFeatureModifiable );
       
   438     TFeatureEntry entry( KDefaultSupportedUid, flags, KDefaultData1 );
       
   439     err = control.AddFeature( entry );
       
   440     if (iLowCap)
       
   441        {
       
   442        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   443               _L("RFeatureControl::AddFeature - KErrPermissionDenied expected; error = %d"),err);
       
   444        }
       
   445     else
       
   446        {
       
   447         TESTDIAGNOSTICERROR(err == KErrAlreadyExists,
       
   448               _L("RFeatureControl::AddFeature - KErrAlreadyExists expected; error = %d"),err);
       
   449        }
       
   450     
       
   451     // Add new feature. If test run sequentially, feature already exists 
       
   452     TFeatureEntry entry2( KNewUid, flags, KDefaultData1 );
       
   453     err = control.AddFeature( entry2 );
       
   454     if (iLowCap)
       
   455        {
       
   456        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   457               _L("RFeatureControl::AddFeature - KErrPermissionDenied expected; error = %d"),err);
       
   458        }
       
   459     else
       
   460        {
       
   461         TESTDIAGNOSTICERROR(err == KErrNone || err == KErrAlreadyExists, 
       
   462               _L("RFeatureControl::AddFeature - KErrNone or KErrAlreadyExists expected; error = %d"),err);
       
   463        }
       
   464     TBitFlags32 flags1( 0 );
       
   465     flags1.Set( EFeatureUninitialized );
       
   466     flags1.Set( EFeatureModifiable );
       
   467     TFeatureEntry entry3( KNewUid1, flags1, KDefaultData1 );
       
   468     err = control.AddFeature( entry3 );
       
   469     if (iLowCap)
       
   470        {
       
   471        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   472               _L("RFeatureControl::AddFeature - KErrPermissionDenied expected; error = %d"),err);
       
   473        }
       
   474     else
       
   475        {
       
   476         TESTDIAGNOSTICERROR(err == KErrNone || err == KErrAlreadyExists, 
       
   477               _L("RFeatureControl::AddFeature - KErrNone or KErrAlreadyExists expected; error = %d"),err);
       
   478        }
       
   479        
       
   480     /*TBitFlags32 flags2( 0 );
       
   481     flags2.Set( EFeatureUninitialized );
       
   482     TFeatureEntry entry4( KNewUid3, flags2, KDefaultData1 );
       
   483     err = control.AddFeature( entry4 );
       
   484     if (iLowCap)
       
   485        {
       
   486        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   487               _L("RFeatureControl::AddFeature - KErrPermissionDenied expected; error = %d"),err);
       
   488        }
       
   489     else
       
   490        {
       
   491         TESTDIAGNOSTICERROR(err == KErrArgument, 
       
   492               _L("RFeatureControl::AddFeature - KErrNone or KErrAlreadyExists expected; error = %d"),err);
       
   493        }*/
       
   494 
       
   495     
       
   496     control.Close();
       
   497     return TestStepResult();
       
   498     }
       
   499         
       
   500 CFeatureControlFeatureDataAndStatusSettingStep::CFeatureControlFeatureDataAndStatusSettingStep()
       
   501    {
       
   502    SetTestStepName(KFeatureControlFeatureDataAndStatusSetting);
       
   503    }       
       
   504 
       
   505 TVerdict CFeatureControlFeatureDataAndStatusSettingStep::doTestStepL(  )
       
   506     {
       
   507     RFeatureControl control;
       
   508     TInt err = control.Open();
       
   509     TESTDIAGNOSTICERROR(err==KErrNone,
       
   510           _L("RFeatureControl::Open failed: error = %d"),err);
       
   511 
       
   512     err = control.SetFeature( KModifiableUid, EFalse, KDefaultData1 );
       
   513     if (iLowCap)
       
   514        {
       
   515        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   516               _L("RRFeatureControl::SetFeature - KErrPermissionDenied expected; error = %d"),err);
       
   517        }
       
   518     else
       
   519        {
       
   520         TESTDIAGNOSTICERROR(err==KErrNone,
       
   521           _L("RFeatureControl::SetFeature - KErrNone expected: error = %d"),err);
       
   522        }    
       
   523     
       
   524     err = control.SetFeature( KModifiableUid, ETrue, KDefaultData1  );
       
   525     if (iLowCap)
       
   526        {
       
   527        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   528               _L("RRFeatureControl::SetFeature - KErrPermissionDenied expected; error = %d"),err);
       
   529        }
       
   530     else
       
   531        {
       
   532       TESTDIAGNOSTICERROR(err==KErrNone,
       
   533           _L("RFeatureControl::SetFeature - KErrNone expected: error = %d"),err);
       
   534        }    
       
   535         
       
   536     TFeatureEntry entry( KModifiableUid );
       
   537     TInt supported = control.FeatureSupported( entry );
       
   538     TESTDIAGNOSTICERROR(supported == KFeatureSupported,
       
   539           _L("RFeatureControl::FeatureSupported - KFeatureSupported expected: returned value is  %d"),err);
       
   540     TESTDIAGNOSTICERROR(entry.FeatureData() == KDefaultData1,
       
   541           _L("RFeatureControl::FeatureData - KDefaultData1 expected: returned value is %x"),entry.FeatureData());
       
   542     
       
   543     err = control.SetFeature( KModifiableUid, ETrue, KChangeData );
       
   544     if (iLowCap)
       
   545        {
       
   546        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   547               _L("RRFeatureControl::SetFeature - KErrPermissionDenied expected; error = %d"),err);
       
   548        }
       
   549     else
       
   550        {
       
   551       TESTDIAGNOSTICERROR(err==KErrNone,
       
   552           _L("RFeatureControl::FeatureSupported - KErrNone expected: error = %d"),err);
       
   553           }    
       
   554        
       
   555     TFeatureEntry entry2( KModifiableUid );
       
   556     supported = control.FeatureSupported( entry2 );
       
   557     TESTDIAGNOSTICERROR(supported == KFeatureSupported,
       
   558           _L("RFeatureControl::FeatureSupported - KFeatureSupported expected: error = %d"),err);
       
   559     if (iLowCap)
       
   560        {
       
   561        TESTDIAGNOSTICERROR(entry2.FeatureData() == KDefaultData1,
       
   562           _L("RFeatureControl::FeatureData - KDefaultData1 expected: returned value is %x"),entry.FeatureData());    
       
   563        }
       
   564     else
       
   565        {
       
   566        TESTDIAGNOSTICERROR(entry2.FeatureData() == KChangeData,
       
   567           _L("RFeatureControl::FeatureData - KChangeData expected: returned value is %x"),entry.FeatureData());    
       
   568           }    
       
   569 
       
   570         
       
   571     err = control.SetFeature( KUnmodifiableUid, ETrue, KDefaultData1 );
       
   572     if (iLowCap)
       
   573        {
       
   574        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   575               _L("RRFeatureControl::SetFeature - KErrPermissionDenied expected; error = %d"),err);
       
   576        }
       
   577     else
       
   578        {
       
   579       TESTDIAGNOSTICERROR(err==KErrAccessDenied,
       
   580           _L("RFeatureControl::SetFeature - KErrAccessDenied expected: error = %d"),err);
       
   581           }    
       
   582     
       
   583     err = control.SetFeature( KUnmodifiableUid, EFalse, KDefaultData1 );
       
   584     if (iLowCap)
       
   585        {
       
   586        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   587               _L("RRFeatureControl::SetFeature - KErrPermissionDenied expected; error = %d"),err);
       
   588        }
       
   589     else
       
   590        {
       
   591       TESTDIAGNOSTICERROR(err==KErrAccessDenied,
       
   592           _L("RFeatureControl::SetFeature - KErrAccessDenied expected: error = %d"),err);
       
   593           }    
       
   594     
       
   595     err = control.SetFeature( KUnknownUid, ETrue, KDefaultData1 );
       
   596     if (iLowCap)
       
   597        {
       
   598        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   599               _L("RRFeatureControl::SetFeature - KErrPermissionDenied expected; error = %d"),err);
       
   600        }
       
   601     else
       
   602        {
       
   603        TESTDIAGNOSTICERROR(err==KErrNotFound,
       
   604           _L("RFeatureControl::SetFeature - KErrNotFound expected: error = %d"),err);
       
   605           }
       
   606     err = control.SetFeature( KUnknownUid, EFalse, KDefaultData1 );
       
   607     if (iLowCap)
       
   608        {
       
   609        TESTDIAGNOSTICERROR(err == KErrPermissionDenied,       
       
   610               _L("RRFeatureControl::SetFeature - KErrPermissionDenied expected; error = %d"),err);
       
   611        }
       
   612     else
       
   613        {
       
   614       TESTDIAGNOSTICERROR(err==KErrNotFound,
       
   615           _L("RFeatureControl::SetFeature - KErrNotFound expected: error = %d"),err);          
       
   616        }
       
   617    
       
   618        
       
   619     control.Close();
       
   620     return TestStepResult();
       
   621     } 
       
   622             
       
   623 CFeatureControlListSupportedFeaturesStep::CFeatureControlListSupportedFeaturesStep()
       
   624    {
       
   625    SetTestStepName(KFeatureControlListSupportedFeatures);
       
   626    }       
       
   627       
       
   628 TVerdict CFeatureControlListSupportedFeaturesStep::doTestStepL( )
       
   629     {
       
   630     RFeatureControl control;
       
   631     TInt err = control.Open();
       
   632     TESTDIAGNOSTICERROR(err==KErrNone,
       
   633           _L("RFeatureControl::Open failed: error = %d"),err);
       
   634         
       
   635     RFeatureUidArray supportedFeatures;
       
   636     err = control.ListSupportedFeatures( supportedFeatures );
       
   637     TESTDIAGNOSTICERROR(err==KErrNone,
       
   638           _L("RFeatureControl::ListSupportedFeatures failed: error = %d"),err);
       
   639     
       
   640 	//print the content of the array
       
   641     TInt count = supportedFeatures.Count();
       
   642     INFO_PRINTF2(_L("Supported features count %d"), count);
       
   643     for(TInt i = 0; i < count; i++)
       
   644         {
       
   645         INFO_PRINTF2( _L("uid 0x%08x"), supportedFeatures[i].iUid );
       
   646         }
       
   647     	
       
   648 	//check that the supported feature is listed
       
   649 	TESTDIAGNOSTICERROR(KErrNotFound!=supportedFeatures.Find(KDefaultSupportedUid),
       
   650 	      _L("RFeatureControl::ListSupportedFeatures has not found the feature that is supported: error = %d"),err);
       
   651     
       
   652 	supportedFeatures.Close();
       
   653     control.Close();
       
   654     return TestStepResult();
       
   655     }      
       
   656 
       
   657 CFeatureControlInvalidUsePanicTestStep::CFeatureControlInvalidUsePanicTestStep()
       
   658 	{
       
   659 	SetTestStepName(KFeatureControlInvalidUsePanicTest);
       
   660 	}
       
   661 
       
   662 TVerdict CFeatureControlInvalidUsePanicTestStep::doTestStepL()
       
   663 	{
       
   664 	SetTestStepResult(EFail);
       
   665 	RFeatureControl control;
       
   666 	//we expect a panic as a result of the following instruction as the RFeatureControl object has not been opened
       
   667 	TInt error = control.FeatureSupported(KDefaultSupportedUid);
       
   668 	ERR_PRINTF2( _L("RFeatureControl::FeatureSupported is expected to cause a panic, return value is %d"), error );
       
   669 	return TestStepResult();
       
   670 	}
       
   671 
       
   672