camappengine/asynchfilesavequeue/tsrc/public/basic/src/AFSQTestAdd.cpp
branchRCL_3
changeset 20 e3cdd00b5ae3
parent 19 18fa9327a158
child 21 27fe719c32e6
equal deleted inserted replaced
19:18fa9327a158 20:e3cdd00b5ae3
     1 /*
       
     2 * Copyright (c) 2002-2007 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  FSQ Test DLL
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include "../inc/AFSQTestAsynchSave.h"
       
    20 #include <f32file.h> // for opening / creating files
       
    21 #include <bautils.h> // for deleting files
       
    22 
       
    23 void CAFSQTestAsynchSave::TestAddEmptyObjectToQueueL()
       
    24     {
       
    25     // Group:   Asynch Save
       
    26     // 
       
    27     // ID:      CAE.FM.TESTADDOBJECT.001
       
    28     // 
       
    29     // Action : Test that adding an null object to the queue will return an error.
       
    30     //      
       
    31     // Output : An error code.   
       
    32 
       
    33     RDebug::Print( _L("CAFSQTestAsynchSave::TestAddEmptyObjectToQueueL in") );
       
    34 
       
    35     TInt error = KErrNone;
       
    36     currentTest = EADD001p1;
       
    37     numSaved = 0;
       
    38     wait = ETrue;
       
    39     
       
    40     HBufC8 * myData = HBufC8::NewL(1000);
       
    41     delete myData;
       
    42     myData = NULL;
       
    43     
       
    44     TRAPD( err, 
       
    45         iFSQ = CAsynchFSQ::NewL();
       
    46         iFSQ->SetCallback( this );
       
    47         TFileName add001 = KNibblesADD001;
       
    48         error = iFSQ->SaveAndDestroy( *myData, add001);
       
    49         );
       
    50     TRAPD( err2,
       
    51         delete iFSQ;
       
    52         iFSQ = NULL;
       
    53         );
       
    54     
       
    55     RDebug::Print( _L("CAFSQTestAsynchSave::TestAddEmptyObjectToQueueL isKErrArgument=%d notErr=%d notErr2=%d"), (error == KErrArgument), !err, !err2 );
       
    56     
       
    57     //do not delay assert because queue should not be active
       
    58     assertL( (error == KErrArgument) && !err && !err2);
       
    59     
       
    60     RDebug::Print( _L("CAFSQTestAsynchSave::TestAddEmptyObjectToQueueL out") );
       
    61     }
       
    62 
       
    63 void CAFSQTestAsynchSave::TestAddObjectToEmptyQueueL()
       
    64     {
       
    65     // Group:   Asynch Save
       
    66     // 
       
    67     // ID:      CAE.FM.TESTADDOBJECT.002
       
    68     // 
       
    69     // Action : Test that adding an object to an empty queue will at least start OK.
       
    70     //      
       
    71     // Output : An error code.  
       
    72 
       
    73     RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectToEmptyQueueL in") );
       
    74 
       
    75     TInt error = KErrNone;
       
    76     currentTest = EADD002p1;
       
    77     numSaved = 0;
       
    78     wait = ETrue;
       
    79 
       
    80     // Read the file to be used in testing.
       
    81     TFileName aFilename = KNibbles;
       
    82     RFs aFs;
       
    83     User::LeaveIfError(aFs.Connect());
       
    84     RFile file;
       
    85     TInt connectErr = file.Open(aFs, aFilename, EFileRead);
       
    86     TInt iSize;   
       
    87     file.Size(iSize);
       
    88     HBufC8* buf = HBufC8::NewL(iSize);
       
    89     TPtr8  myData = buf->Des();
       
    90     if ( !connectErr )
       
    91         {
       
    92         file.Read( myData );
       
    93         }
       
    94     file.Close();
       
    95     
       
    96     // Delete the file if it exists
       
    97     TFileName add002 = KNibblesADD002;
       
    98     RFile deleter;
       
    99     TInt isDeleted = deleter.Open(aFs, add002, EFileRead);
       
   100     deleter.Close();
       
   101 
       
   102     if ( isDeleted == KErrNone )
       
   103         {
       
   104         // if no error, assume the file exists, so delete it
       
   105     	RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectToEmptyQueueL exists, deleting") );
       
   106         BaflUtils ba;
       
   107         ba.DeleteFile(aFs, add002);
       
   108         }
       
   109     aFs.Close();
       
   110     
       
   111     // Save    
       
   112     TRAPD( err, 
       
   113         iFSQ = CAsynchFSQ::NewL();        
       
   114         //add this as a callback
       
   115         iFSQ->SetCallback( this );
       
   116         error = iFSQ->SaveAndDestroy( *buf, add002 );
       
   117         buf = NULL; // transfer ownership 
       
   118         );
       
   119     
       
   120     RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectToEmptyQueueL isKErrNone=%d notErr=%d"), (error == KErrNone), !err );
       
   121    
       
   122     delayedBool = ( (error == KErrNone) && !err );
       
   123     //wait for callback to assert
       
   124     WaitForAsynchCompleteL();
       
   125     
       
   126     RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectToEmptyQueueL out") );
       
   127     }
       
   128 
       
   129 void CAFSQTestAsynchSave::TestAddObjectToEmptyQueueWillSaveL()
       
   130     {
       
   131     // Group:   Asynch Save
       
   132     // 
       
   133     // ID:      CAE.FM.TESTADDOBJECT.003
       
   134     // 
       
   135     // Action : Test that adding an object to an empty queue will finish OK.
       
   136     //      
       
   137     // Output : Asynchronous report.    
       
   138 
       
   139     RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectToEmptyQueueWillSaveL in") );
       
   140 
       
   141     currentTest = EADD003p1;
       
   142     numSaved = 0;
       
   143     wait = ETrue;
       
   144     
       
   145     // Read the file to be used in testing.
       
   146     TFileName aFilename = KNibbles;
       
   147     RFs aFs;
       
   148     User::LeaveIfError(aFs.Connect());
       
   149     RFile file;
       
   150     TInt connectErr = file.Open(aFs, aFilename, EFileRead);
       
   151     TInt iSize;   
       
   152     file.Size(iSize);
       
   153     HBufC8* buf = HBufC8::NewL(iSize);
       
   154     TPtr8  myData = buf->Des();
       
   155     if ( !connectErr )
       
   156         {
       
   157         file.Read( myData );
       
   158         }
       
   159     file.Close();
       
   160     
       
   161     // Delete the file if it exists
       
   162     TFileName add003 = KNibblesADD003;
       
   163     RFile deleter;
       
   164     TInt isDeleted = deleter.Open(aFs, add003, EFileRead);
       
   165     deleter.Close();
       
   166     if ( isDeleted == KErrNone )
       
   167         {
       
   168         // if no error, assume the file exists, so delete it
       
   169     	RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectToEmptyQueueL exists, deleting") );
       
   170         BaflUtils ba;
       
   171         ba.DeleteFile(aFs, add003);
       
   172         }
       
   173     aFs.Close();
       
   174     
       
   175     TRAP_IGNORE(  
       
   176         iFSQ = CAsynchFSQ::NewL();
       
   177         //add this as a callback
       
   178         iFSQ->SetCallback( this );
       
   179         iFSQ->SaveAndDestroy( *buf, add003 );
       
   180         buf = NULL; // transfer ownership
       
   181         );
       
   182     
       
   183     //wait for callback to assert
       
   184     WaitForAsynchCompleteL();
       
   185     
       
   186     RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectToEmptyQueueWillSaveL out") );
       
   187     }
       
   188 
       
   189 void CAFSQTestAsynchSave::TestAddObjectToNonEmptyQueueL()
       
   190     {
       
   191     // Group:   Asynch Save
       
   192     // 
       
   193     // ID:      CAE.FM.TESTADDOBJECT.004
       
   194     // 
       
   195     // Action : Test that adding an object to a non empty queue will at least start OK.
       
   196     //      
       
   197     // Output : An error code.
       
   198 
       
   199     RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectToNonEmptyQueueL in") );
       
   200 
       
   201     TInt error = KErrNone;
       
   202     TInt error2 = KErrNone;
       
   203     currentTest = EADD004p1;
       
   204     numSaved = 0;
       
   205     numToSave = 2;
       
   206     wait = ETrue;
       
   207    
       
   208     // Read the file to be used in testing.
       
   209     TFileName aFilename = KNibbles;
       
   210     RFs aFs;
       
   211     User::LeaveIfError(aFs.Connect());
       
   212     RFile file;
       
   213     TInt connectErr = file.Open(aFs, aFilename,EFileRead);
       
   214     TInt iSize;   
       
   215     file.Size(iSize);
       
   216     HBufC8* buf = HBufC8::NewL(iSize);
       
   217     TPtr8  myData = buf->Des();
       
   218     if ( !connectErr )
       
   219         {
       
   220         file.Read( myData );
       
   221         }
       
   222     file.Close();
       
   223 
       
   224     // Read the file to be used in testing.
       
   225     TFileName aFilename2 = KNibbles2;
       
   226     RFile file2;
       
   227     TInt connectErr2 = file2.Open(aFs, aFilename2,EFileRead);
       
   228     file2.Size(iSize);
       
   229     HBufC8* buf2 = HBufC8::NewL(iSize);
       
   230     TPtr8  myData2 = buf2->Des();
       
   231     if ( !connectErr2 )
       
   232         {
       
   233         file2.Read( myData2 );
       
   234         }
       
   235     file2.Close();
       
   236 
       
   237     // Delete the file if it exists
       
   238     TFileName add004A = KNibblesADD004A;
       
   239     RFile deleter;
       
   240     TInt isDeleted = deleter.Open(aFs, add004A, EFileRead);
       
   241     deleter.Close();
       
   242     if ( isDeleted == KErrNone )
       
   243         {
       
   244         // if no error, assume the file exists, so delete it
       
   245     	RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectToEmptyQueueL 1st exists, deleting") );
       
   246         BaflUtils ba;
       
   247         ba.DeleteFile(aFs, add004A);
       
   248         }
       
   249 
       
   250     // Delete the file if it exists
       
   251     TFileName add004B = KNibblesADD004B;
       
   252     RFile deleter2;
       
   253     TInt isDeleted2 = deleter2.Open(aFs, add004B, EFileRead);
       
   254     deleter2.Close();
       
   255     if ( isDeleted2 == KErrNone )
       
   256         {
       
   257         // if no error, assume the file exists, so delete it
       
   258     	RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectToEmptyQueueL 2nd exists, deleting") );
       
   259         BaflUtils ba;
       
   260         ba.DeleteFile(aFs, add004B);
       
   261         }
       
   262     aFs.Close();
       
   263 
       
   264     // Save    
       
   265     TRAPD( err, 
       
   266         iFSQ = CAsynchFSQ::NewL();
       
   267         iFSQ->SetCallback( this );
       
   268         error = iFSQ->SaveAndDestroy( *buf, add004A );
       
   269         buf = NULL; // transfer ownership
       
   270         error2 = iFSQ->SaveAndDestroy( *buf2, add004B );
       
   271         buf2 = NULL; // transfer ownership
       
   272         );
       
   273     
       
   274     RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectToNonEmptyQueueL isKErrNone=%d is2KErrNone=%d notErr=%d"), (error == KErrNone), (error2 == KErrNone), !err );
       
   275     
       
   276     delayedBool = ( (error == KErrNone) && (error2 == KErrNone) && (!err) );
       
   277     //wait for callback to assert
       
   278     WaitForAsynchCompleteL();
       
   279     
       
   280     RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectToNonEmptyQueueL out") );
       
   281     }
       
   282 
       
   283 void CAFSQTestAsynchSave::TestAddObjectToNonEmptyQueueWillSaveL()
       
   284     {
       
   285     // Group:   Asynch Save
       
   286     // 
       
   287     // ID:      CAE.FM.TESTADDOBJECT.005
       
   288     // 
       
   289     // Action : Test that adding an object to a non empty queue will finish OK.
       
   290     //      
       
   291     // Output : Asynchronous report.   
       
   292 	
       
   293     RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectToNonEmptyQueueWillSaveL in") );
       
   294 
       
   295     //TInt error = KErrNone;
       
   296     currentTest = EADD005p1;
       
   297     numSaved = 0;
       
   298     numToSave = 2;
       
   299     wait = ETrue;
       
   300     
       
   301     // Read the file to be used in testing.
       
   302     TFileName aFilename = KNibbles;
       
   303     RFs aFs;
       
   304     User::LeaveIfError(aFs.Connect());
       
   305     RFile file;
       
   306     TInt connectErr = file.Open(aFs, aFilename,EFileRead);
       
   307     TInt iSize;   
       
   308     file.Size(iSize);
       
   309     HBufC8* buf = HBufC8::NewL(iSize);
       
   310     TPtr8  myData = buf->Des();
       
   311     if ( !connectErr )
       
   312         {
       
   313         file.Read( myData );
       
   314         }
       
   315     file.Close();
       
   316 
       
   317     // Read the file to be used in testing.
       
   318     TFileName aFilename2 = KNibbles2;
       
   319     RFile file2;
       
   320     TInt connectErr2 = file2.Open(aFs, aFilename2,EFileRead);
       
   321     file2.Size(iSize);
       
   322     HBufC8* buf2 = HBufC8::NewL(iSize);
       
   323     TPtr8  myData2 = buf2->Des();
       
   324     if ( !connectErr2 )
       
   325         {
       
   326         file2.Read( myData2 );
       
   327         }
       
   328     file2.Close();
       
   329 
       
   330     // Delete the file if it exists
       
   331     TFileName add005A = KNibblesADD005A;
       
   332     RFile deleter;
       
   333     TInt isDeleted = deleter.Open(aFs, add005A, EFileRead);
       
   334     deleter.Close();
       
   335     if ( isDeleted == KErrNone )
       
   336         {
       
   337         // if no error, assume the file exists, so delete it
       
   338     	RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectToNonEmptyQueueWillSaveL 1st exists, deleting") );
       
   339         BaflUtils ba;
       
   340         ba.DeleteFile(aFs, add005A);
       
   341         }
       
   342 
       
   343     // Delete the file if it exists
       
   344     TFileName add005B = KNibblesADD005B;
       
   345     RFile deleter2;
       
   346     TInt isDeleted2 = deleter2.Open(aFs, add005B, EFileRead);
       
   347     deleter2.Close();
       
   348     if ( isDeleted2 == KErrNone )
       
   349         {
       
   350         // if no error, assume the file exists, so delete it
       
   351     	RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectToNonEmptyQueueWillSaveL 2nd exists, deleting") );
       
   352         BaflUtils ba;
       
   353         ba.DeleteFile(aFs, add005B);
       
   354         }
       
   355     aFs.Close();
       
   356 
       
   357     // Save    
       
   358     TRAPD( err, 
       
   359         iFSQ = CAsynchFSQ::NewL();
       
   360         iFSQ->SetCallback( this );
       
   361         iFSQ->SaveAndDestroy( *buf, add005A );
       
   362         buf = NULL; // transfer ownership
       
   363         iFSQ->SaveAndDestroy( *buf2, add005B );
       
   364         buf2 = NULL; // transfer ownership
       
   365         );
       
   366     
       
   367     RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectToNonEmptyQueueWillSaveL notErr=%d"), !err );
       
   368     
       
   369     //wait for callback to assert
       
   370     WaitForAsynchCompleteL();
       
   371     
       
   372     RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectToNonEmptyQueueWillSaveL out") );
       
   373     }
       
   374 
       
   375 void CAFSQTestAsynchSave::TestAddObjectThatExistsAlreadyL()
       
   376     {
       
   377     // Group:   Asynch Save
       
   378     // 
       
   379     // ID:      CAE.FM.TESTADDOBJECT.006
       
   380     // 
       
   381     // Action : Test that adding an object to an empty queue which exists int the file
       
   382     //          system will report KErrAlreadyExists.
       
   383     //      
       
   384     // Output : An error code.  
       
   385 
       
   386     RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectThatExistsAlready in") );
       
   387 
       
   388     TInt error = KErrNone;
       
   389     currentTest = EADD006p1;
       
   390     numSaved = 0;
       
   391     wait = ETrue;
       
   392 
       
   393     // Read the file to be used in testing.
       
   394     TFileName aFilename = KNibbles;
       
   395     RFs aFs;
       
   396     User::LeaveIfError(aFs.Connect());
       
   397     RFile file;
       
   398     TInt connectErr = file.Open(aFs, aFilename,EFileRead);
       
   399     TInt iSize;   
       
   400     file.Size(iSize);
       
   401     HBufC8* buf = HBufC8::NewL(iSize);
       
   402     TPtr8  myData = buf->Des();
       
   403     if ( !connectErr )
       
   404         {
       
   405         file.Read( myData );
       
   406         }
       
   407     file.Close();
       
   408 
       
   409     // Delete the file if it exists
       
   410     TFileName add006 = KNibblesADD006;
       
   411     RFile deleter;
       
   412     TInt isDeleted = deleter.Open(aFs, add006, EFileRead);
       
   413     deleter.Close();
       
   414     if ( isDeleted == KErrNone )
       
   415         {
       
   416         // if no error, assume the file exists, so delete it
       
   417     	RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectThatExistsAlreadyL exists, deleting") );
       
   418         BaflUtils ba;
       
   419         ba.DeleteFile(aFs, add006);
       
   420         }
       
   421     aFs.Close();
       
   422 
       
   423     // Write the file to be used in testing
       
   424     TInt err2 = KErrNone;
       
   425     RFs fsSession;
       
   426     err2 = fsSession.Connect();
       
   427     RFile myFile;
       
   428     if ( !err2 )
       
   429         {
       
   430         err2 = myFile.Create( fsSession, add006, 
       
   431                              EFileStream | EFileShareExclusive | EFileWrite );
       
   432         }
       
   433     if( !err2 )
       
   434         {
       
   435         err2 = myFile.Write( myData );
       
   436         }
       
   437     if( !err2 )
       
   438         {
       
   439         err2 = myFile.Flush();
       
   440         }
       
   441 	myFile.Close();
       
   442 	fsSession.Close();
       
   443 	
       
   444     // Reuse the file name, to write where it exists.
       
   445     TRAPD( err, 
       
   446         iFSQ = CAsynchFSQ::NewL();
       
   447         //add this as a callback
       
   448         iFSQ->SetCallback( this );
       
   449         error = iFSQ->SaveAndDestroy( *buf, add006, EFalse );
       
   450         buf = NULL; // transfer ownership 
       
   451         );
       
   452     
       
   453     RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectThatExistsAlreadyL isKErrNone=%d notErr=%d"), (error == KErrNone), !err );
       
   454    
       
   455     delayedBool = ( (error == KErrNone) && !err );
       
   456     //wait for callback to assert
       
   457     WaitForAsynchCompleteL();
       
   458     
       
   459     RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectThatExistsAlreadyL out") );
       
   460     }
       
   461 
       
   462 
       
   463 void CAFSQTestAsynchSave::TestAddObjectToEmptyQueueLManualStart()
       
   464     {
       
   465     // Group:   Asynch Save
       
   466     // 
       
   467     // ID:      CAE.FM.TESTADDOBJECT.007
       
   468     // 
       
   469     // Action : Test that adding an object to an empty manual queue will be OK.
       
   470     //      
       
   471     // Output : An error code.  
       
   472 
       
   473     RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectToEmptyQueueLManualStart in") );
       
   474 
       
   475     TInt error = KErrNone;
       
   476     TInt error2 = KErrNone;
       
   477     currentTest = EADD007p1;
       
   478     numSaved = 0;
       
   479     wait = ETrue;
       
   480 
       
   481     // Read the file to be used in testing.
       
   482     TFileName aFilename = KNibbles;
       
   483     RFs aFs;
       
   484     User::LeaveIfError(aFs.Connect());
       
   485     RFile file;
       
   486     TInt connectErr = file.Open(aFs, aFilename, EFileRead);
       
   487     TInt iSize;   
       
   488     file.Size(iSize);
       
   489     HBufC8* buf = HBufC8::NewL(iSize);
       
   490     TPtr8  myData = buf->Des();
       
   491     if ( !connectErr )
       
   492         {
       
   493         file.Read( myData );
       
   494         }
       
   495     file.Close();
       
   496     
       
   497     // Delete the file if it exists
       
   498     TFileName add007 = KNibblesADD007;
       
   499     RFile deleter;
       
   500     TInt isDeleted = deleter.Open(aFs, add007, EFileRead);
       
   501     deleter.Close();
       
   502 
       
   503     if ( isDeleted == KErrNone )
       
   504         {
       
   505         // if no error, assume the file exists, so delete it
       
   506         RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectToEmptyQueueLManualStart exists, deleting") );
       
   507         BaflUtils ba;
       
   508         ba.DeleteFile(aFs, add007);
       
   509         }
       
   510     aFs.Close();
       
   511     
       
   512     // Save    
       
   513     TRAPD( err, 
       
   514         iFSQ = CAsynchFSQ::NewL();        
       
   515         //add this as a callback
       
   516         iFSQ->SetCallback( this );
       
   517         iFSQ->SetManualStart( ETrue );
       
   518         error = iFSQ->SaveAndDestroy( *buf, add007 );
       
   519         buf = NULL; // transfer ownership 
       
   520         error2 = iFSQ->Go();
       
   521         );
       
   522     
       
   523     RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectToEmptyQueueLManualStart isKErrNone=%d notErr=%d"), ((error == KErrNone) && (error2 == KErrNone)), !err );
       
   524    
       
   525     delayedBool = ( (error == KErrNone) && (error2 == KErrNone) && !err );
       
   526     //wait for callback to assert
       
   527     WaitForAsynchCompleteL();
       
   528     
       
   529     RDebug::Print( _L("CAFSQTestAsynchSave::TestAddObjectToEmptyQueueLManualStart out") );
       
   530     }