commsconfig/commsdatabaseshim/TE_commdb/src/Teststepcommdb.cpp
author hgs
Mon, 06 Sep 2010 13:49:23 +0100
changeset 72 ae47d0499bee
permissions -rw-r--r--
201033_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
72
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     1
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     2
// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     3
// All rights reserved.
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     4
// This component and the accompanying materials are made available
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     5
// under the terms of "Eclipse Public License v1.0"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     6
// which accompanies this distribution, and is available
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     7
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     8
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
     9
// Initial Contributors:
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    10
// Nokia Corporation - initial contribution.
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    11
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    12
// Contributors:
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    13
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    14
// Description:
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    15
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    16
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    17
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    18
// This contains CTestCase which is the base class for all the TestCase DLLs
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    19
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    20
// EPOC includes
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    21
#include <e32base.h>
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    22
#include <commdb.h>
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    23
#include <f32file.h>
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    24
// Test system includes
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    25
#include "comms-infras/commdb/protection/protectdb.h"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    26
#include "comms-infras/commdb/protection/protectcpdb.h"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    27
#include <cdbpreftable.h>
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    28
#include "CDBSTD.H"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    29
#include "Teststepcommdb.h"
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    30
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    31
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    32
// constructor
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    33
CTestStepCommDb::CTestStepCommDb()
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    34
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    35
	iRemoteObjects = EFalse;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    36
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    37
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    38
// destructor
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    39
CTestStepCommDb::~CTestStepCommDb()
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    40
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    41
	popAndDestroyDatabaseObjects();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    42
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    43
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    44
// file copy
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    45
void CTestStepCommDb::copyFileL(const TDesC& anOld,const TDesC& aNew)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    46
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    47
	// create a fileserver
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    48
	RFs fileSystem;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    49
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    50
	// connect to file server
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    51
	User::LeaveIfError(fileSystem.Connect());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    52
	CleanupClosePushL(fileSystem);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    53
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    54
	// create a file manager
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    55
	CFileMan * fileMan = CFileMan::NewL(fileSystem);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    56
	CleanupStack::PushL(fileMan);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    57
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    58
	// parse the filenames
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    59
	TParse source;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    60
	User::LeaveIfError(source.Set(anOld, NULL, NULL));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    61
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    62
	// parse the filenames
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    63
	TParse target;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    64
	User::LeaveIfError(target.Set(aNew, NULL, NULL));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    65
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    66
	// do the copy
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    67
	User::LeaveIfError(fileMan->Copy(source.FullName(), target.FullName(), CFileMan::EOverWrite));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    68
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    69
	// make read/write
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    70
	User::LeaveIfError(fileSystem.SetAtt(source.FullName(),NULL, KEntryAttReadOnly));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    71
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    72
	// clean up
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    73
	CleanupStack::PopAndDestroy(fileMan);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    74
	CleanupStack::PopAndDestroy(&fileSystem);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    75
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    76
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    77
void CTestStepCommDb::deleteFileL(const TDesC& aFileName)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    78
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    79
	// create a fileserver
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    80
	RFs  fileSystem;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    81
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    82
	User::LeaveIfError(fileSystem.Connect());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    83
	CleanupClosePushL(fileSystem);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    84
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    85
	INFO_PRINTF1(_L("Set file to read-write in order to delete"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    86
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    87
	// Remove read only flag
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    88
	TInt ret = fileSystem.SetAtt(aFileName, 0, KEntryAttReadOnly);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    89
	if (ret == KErrNotFound)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    90
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    91
		// If file already removed then no need to delete it
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    92
		INFO_PRINTF1(_L("File not found"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    93
		CleanupStack::PopAndDestroy(&fileSystem);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    94
		return;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    95
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    96
	User::LeaveIfError(ret);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    97
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    98
	// Delete file
ae47d0499bee 201033_02
hgs
parents:
diff changeset
    99
	User::LeaveIfError(fileSystem.Delete(aFileName));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   100
	INFO_PRINTF1(_L("deleted file"));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   101
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   102
	// clean up
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   103
	CleanupStack::PopAndDestroy(&fileSystem);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   104
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   105
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   106
void CTestStepCommDb::DeleteCurrentDatabaseL()
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   107
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   108
	RDbs rDbs;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   109
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   110
//	User::LeaveIfError(rDbs.Connect());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   111
	TInt ret(KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   112
	ret = rDbs.Connect();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   113
	if(ret!=KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   114
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   115
		INFO_PRINTF2(_L("CTestStepCommDb::DeleteCurrentDatabaseL : rDbs.Connect FAILED with %d"),ret );
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   116
		User::Leave(ret);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   117
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   118
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   119
	CleanupClosePushL(rDbs);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   120
	TName commDb(KCDrive);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   121
	commDb.Append(KDbBaseName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   122
	TUid KCommsDbFileUid = { 0x10004e1d };
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   123
	// May need to make several
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   124
	// attempts if it is transiently locked; report these and if
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   125
	// not successful after a number of attempts report this and abort
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   126
	TInt remainingTries = 5;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   127
//	TInt ret (KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   128
	while(remainingTries-- > 0)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   129
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   130
		ret = rDbs.DeleteDatabase(commDb, KCommsDbFileUid);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   131
		if(ret == KErrNone || ret == KErrPathNotFound || ret == KErrNotFound)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   132
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   133
			ret = KErrNone;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   134
			break;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   135
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   136
		else
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   137
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   138
			INFO_PRINTF4(_L("CTestStepCommDb::DeleteCurrentDatabaseL : rDbs.DeleteDatabase FAILED to delete %S %S with %d"),&KCDrive,&KDbBaseName,ret);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   139
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   140
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   141
	User::LeaveIfError(ret);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   142
	CleanupStack::PopAndDestroy(&rDbs);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   143
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   144
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   145
void CTestStepCommDb::CopyDatabaseL(const TDesC& aSource)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   146
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   147
	RFs fs;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   148
	User::LeaveIfError(fs.Connect());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   149
	CleanupClosePushL(fs);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   150
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   151
	RDbs rDbs;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   152
	User::LeaveIfError(rDbs.Connect());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   153
	CleanupClosePushL(rDbs);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   154
	const TUid KCommsDbFileUid = {0x10004e1d};
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   155
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   156
	TInt remainingTries = 5;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   157
	TInt ret (KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   158
	DeleteCurrentDatabaseL();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   159
	while(remainingTries-- > 0)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   160
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   161
		ret = rDbs.CopyDatabase(aSource, KDbFileName, KCommsDbFileUid);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   162
		if(ret == KErrNone || ret == KErrPathNotFound || ret == KErrNotFound)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   163
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   164
			break;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   165
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   166
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   167
	User::LeaveIfError(ret);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   168
	CleanupStack::PopAndDestroy(&rDbs);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   169
	CleanupStack::PopAndDestroy(&fs);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   170
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   171
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   172
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   173
TInt CTestStepCommDb::copyTestDatabase( TDatabaseNumber aDbNumber )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   174
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   175
	(void)aDbNumber;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   176
	return KErrNone;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   177
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   178
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   179
TInt CTestStepCommDb::copyDatabaseToDefault( TDatabaseNumber aDbNumber )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   180
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   181
	(void)aDbNumber;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   182
	return KErrNone;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   183
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   184
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   185
TBool CTestStepCommDb::openDbAndViewL( const TDesC16& aTable )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   186
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   187
	TBool created = EFalse;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   188
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   189
	//Only create Db and view objects if they're not already created
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   190
	if ( ! iTheDb )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   191
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   192
		iTheDb=CCommsDatabase::NewL();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   193
		created = ETrue;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   194
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   195
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   196
	if ( !iTheView )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   197
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   198
		iTheView=iTheDb->OpenTableLC( aTable );
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   199
		CleanupStack::Pop(); //no need to put it on the cleanup stack
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   200
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   201
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   202
	return created;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   203
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   204
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   205
TVerdict CTestStepCommDb::doTestStepPostambleL()
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   206
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   207
	if ( iTheView )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   208
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   209
		delete iTheView;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   210
		iTheView = 0;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   211
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   212
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   213
	if ( iTheDb )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   214
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   215
		delete iTheDb;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   216
		iTheDb = 0;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   217
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   218
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   219
        SetTestStepResult(EPass);	return TestStepResult();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   220
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   221
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   222
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   223
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   224
void CTestStepCommDb::popAndDestroyDatabaseObjects()
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   225
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   226
		// doTestStepPostambleL();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   227
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   228
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   229
TBool CTestStepCommDb::openDbL()
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   230
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   231
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   232
	TBool created = EFalse;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   233
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   234
	if ( !iTheDb )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   235
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   236
		//Only open the Db if its not already open
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   237
		TRAPD(ret,iTheDb=CCommsDatabase::NewL());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   238
		if(ret!=KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   239
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   240
			INFO_PRINTF2(_L("CTestStepCommDb::openDbL : CCommsDatabase::NewL LEFT with %d"),ret);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   241
			User::Leave(ret);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   242
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   243
		created = ETrue;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   244
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   245
	return created;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   246
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   247
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   248
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   249
void CTestStepCommDb::setRemoteDatabaseObjects( CCommsDatabase* aDb, CCommsDbTableView* aDbView )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   250
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   251
		if ( !iTheDb )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   252
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   253
			//make sure that no-one else has already set the objects
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   254
			iTheDb = aDb;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   255
			iTheView = aDbView;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   256
			iRemoteObjects = ETrue;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   257
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   258
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   259
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   260
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   261
void CTestStepCommDb::clearRemoteDatabaseObjects()
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   262
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   263
		if( iRemoteObjects )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   264
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   265
			//Only clear objects if they were previously set remotly
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   266
			iTheDb = 0;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   267
			iTheView = 0;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   268
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   269
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   270
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   271
TInt CTestStepCommDb::executeStepL()
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   272
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   273
		return KErrGeneral;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   274
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   275
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   276
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   277
TInt CTestStepCommDb::executeStep(CTestStepCommDb& aTestStep)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   278
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   279
	TInt r,ret= KErrNone;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   280
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   281
	TRAP( r, ret = aTestStep.executeStepL() );
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   282
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   283
	if ( r != KErrNone )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   284
		ret = r;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   285
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   286
	return ret;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   287
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   288
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   289
TInt CTestStepCommDb::executeStep( )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   290
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   291
	TInt ret=0;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   292
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   293
	TRAPD( r, ret = executeStepL() );
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   294
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   295
	if ( r != KErrNone )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   296
		ret = r;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   297
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   298
	return ret;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   299
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   300
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   301
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   302
//This heap failure member function is used when a test step needs a Database and a View
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   303
//object.
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   304
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   305
TInt CTestStepCommDb::doTestStepWithHeapFailureL( CTestStepCommDb& aTestStep, TInt aReturnValue)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   306
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   307
	TInt ret=0;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   308
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   309
	for (TInt i=1; i< KHeapFailure ; i++)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   310
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   311
		aTestStep.doTestStepPreambleL();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   312
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   313
		__UHEAP_FAILNEXT(i);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   314
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   315
		ret = aTestStep.executeStep();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   316
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   317
		__UHEAP_RESET;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   318
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   319
		aTestStep.doTestStepPostambleL();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   320
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   321
		if ( ret == KErrNoMemory )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   322
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   323
			//The heap failure has been trapped correctly
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   324
			continue;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   325
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   326
		else if ( ret == aReturnValue )
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   327
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   328
			//Test step normal behaviour
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   329
			INFO_PRINTF4(_L("%S PASSED heap failure test, i = %d return code==%d"),
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   330
				&aTestStep.TestStepName(), i, ret );
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   331
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   332
			break;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   333
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   334
		else
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   335
			{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   336
			// test step has not returned the exepected error value ( which was either KErrNoMemory or aReturnValue );
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   337
			INFO_PRINTF5(_L("%S *FAILED* heap failure test, i=%d return code:%d expected:%d"),
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   338
				&aTestStep.TestStepName(), i, ret, aReturnValue );
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   339
			SetTestStepResult(EFail);			break;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   340
			}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   341
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   342
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   343
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   344
	return KErrNone;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   345
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   346
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   347
void CTestStepCommDb::CheckTableIsProtectedL(CCommsDbProtectTableView* aTable)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   348
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   349
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   350
	TESTL(iTheDb->BeginTransaction()==KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   351
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   352
	if(aTable->GotoFirstRecord()==KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   353
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   354
		// Check settings on Record
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   355
		RDbRowSet::TAccess tableAccess = RDbRowSet::EUpdatable;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   356
		TInt ret = aTable->GetTableAccess(tableAccess);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   357
		TESTL(ret == KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   358
		TESTL(tableAccess == RDbRowSet::EReadOnly);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   359
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   360
		// Test that first record cannot be updated
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   361
		TRAP(ret,UpdateRecordL(aTable,KErrAccessDenied));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   362
		TESTL(ret == KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   363
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   364
		// Test that cannot delete first record
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   365
		TRAP(ret,DeleteRecordL(aTable,KErrAccessDenied));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   366
		TESTL(ret == KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   367
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   368
		// Test that cannot insert new record
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   369
		TRAP(ret,InsertRecordL(aTable,KErrAccessDenied));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   370
		TESTL(ret == KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   371
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   372
		aTable->GotoFirstRecord();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   373
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   374
	TESTL(iTheDb->CommitTransaction()==KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   375
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   376
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   377
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   378
void CTestStepCommDb::CheckTableIsProtectedL(CCommsDbProtectConnectPrefTableView* aTable)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   379
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   380
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   381
	TESTL(iTheDb->BeginTransaction()==KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   382
	if(aTable->GotoFirstRecord()==KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   383
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   384
		// Check settings on Record
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   385
		RDbRowSet::TAccess tableAccess = RDbRowSet::EUpdatable;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   386
		TInt ret = aTable->GetTableAccess(tableAccess);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   387
		TESTL(ret == KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   388
		TESTL(tableAccess == RDbRowSet::EReadOnly);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   389
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   390
		// Test that first record cannot be updated
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   391
		TRAP(ret,UpdateRecordL(aTable,KErrAccessDenied));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   392
		TESTL(ret == KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   393
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   394
		// Test that cannot delete first record
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   395
		TRAP(ret,DeleteRecordL(aTable,KErrAccessDenied));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   396
		TESTL(ret == KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   397
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   398
		// Test that cannot insert new record
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   399
		TRAP(ret,InsertRecordL(aTable,KErrAccessDenied));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   400
		TESTL(ret == KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   401
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   402
		aTable->GotoFirstRecord();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   403
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   404
	TESTL(iTheDb->CommitTransaction()==KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   405
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   406
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   407
void CTestStepCommDb::CheckTableIsNotProtectedL(CCommsDbProtectTableView* aTable)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   408
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   409
	TESTL(iTheDb->BeginTransaction()==KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   410
	if(aTable->GotoFirstRecord()==KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   411
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   412
		// Check settings on Table
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   413
		RDbRowSet::TAccess tableAccess = RDbRowSet::EReadOnly;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   414
		TInt ret = aTable->GetTableAccess(tableAccess);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   415
		TESTL(ret == KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   416
		TESTL(tableAccess == RDbRowSet::EUpdatable);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   417
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   418
		// Test can update first record
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   419
		TRAP(ret,UpdateRecordL(aTable,KErrNone));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   420
		TESTL(ret == KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   421
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   422
		// Test that can delete record
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   423
		TRAP(ret,DeleteRecordL(aTable,KErrNone));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   424
		TESTL(ret == KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   425
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   426
		// Test that can insert new record
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   427
		TRAP(ret,InsertRecordL(aTable,KErrNone));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   428
		TESTL(ret == KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   429
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   430
		aTable->GotoFirstRecord();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   431
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   432
	TESTL(iTheDb->CommitTransaction()==KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   433
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   434
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   435
void CTestStepCommDb::CheckTableIsNotProtectedL(CCommsDbProtectConnectPrefTableView* aTable)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   436
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   437
	TESTL(iTheDb->BeginTransaction()==KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   438
	if(aTable->GotoFirstRecord()==KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   439
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   440
		// Check settings on Table
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   441
		RDbRowSet::TAccess tableAccess = RDbRowSet::EReadOnly;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   442
		TInt ret = aTable->GetTableAccess(tableAccess);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   443
		TESTL(ret == KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   444
		TESTL(tableAccess == RDbRowSet::EUpdatable);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   445
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   446
		// Test can update first record
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   447
		TRAP(ret,UpdateRecordL(aTable,KErrNone));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   448
		TESTL(ret == KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   449
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   450
		// Test that can delete record
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   451
		TRAP(ret,DeleteRecordL(aTable,KErrNone));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   452
		TESTL(ret == KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   453
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   454
		// Test that can insert new record
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   455
		TRAP(ret,InsertRecordL(aTable,KErrNone));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   456
		TESTL(ret == KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   457
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   458
		aTable->GotoFirstRecord();
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   459
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   460
	TESTL(iTheDb->CommitTransaction()==KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   461
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   462
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   463
void CTestStepCommDb::GoToPositionL(CCommsDbProtectTableView* aTable,TInt aPos)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   464
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   465
	TESTL(aTable->GotoFirstRecord()==KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   466
	for (TInt i = 0; i < aPos; i++)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   467
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   468
		TESTL(aTable->GotoNextRecord()==KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   469
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   470
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   471
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   472
void CTestStepCommDb::ProtectRecordL(CCommsDbProtectTableView* aTable, TInt aResult)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   473
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   474
	TESTL(aTable->ProtectRecord()==aResult);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   475
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   476
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   477
void CTestStepCommDb::ProtectRecordL(CCommsDbProtectConnectPrefTableView* aTable, TInt aResult)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   478
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   479
	TESTL(aTable->ProtectRecord()==aResult);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   480
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   481
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   482
void CTestStepCommDb::UnprotectRecordL(CCommsDbProtectTableView* aTable, TInt aResult)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   483
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   484
	TESTL(aTable->UnprotectRecord()==aResult);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   485
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   486
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   487
void CTestStepCommDb::UnprotectRecordL(CCommsDbProtectConnectPrefTableView* aTable, TInt aResult)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   488
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   489
	TESTL(aTable->UnprotectRecord()==aResult);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   490
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   491
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   492
void CTestStepCommDb::UpdateRecordL(CCommsDbProtectTableView* aTable, TInt aResult)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   493
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   494
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   495
	TESTL(aTable->UpdateRecord()==aResult);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   496
	if (aResult == KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   497
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   498
		ModifyRecordL(aTable);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   499
		TESTL(aTable->PutRecordChanges()==KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   500
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   501
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   502
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   503
void CTestStepCommDb::UpdateRecordL(CCommsDbProtectConnectPrefTableView* aTable, TInt aExpectedResult)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   504
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   505
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   506
	TUint32 Ranking;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   507
	CCommsDbConnectionPrefTableView::TCommDbIapConnectionPref RecordData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   508
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   509
	TInt ErrVal = ChangeCPRankingL(aTable, Ranking); // Try modifying a field.
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   510
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   511
	TESTL(ErrVal == aExpectedResult);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   512
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   513
	if (ErrVal == KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   514
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   515
		// The change was allowed, so check it actually happened.
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   516
		aTable->ReadConnectionPreferenceL(RecordData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   517
		TESTL(Ranking == RecordData.iRanking);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   518
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   519
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   520
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   521
void CTestStepCommDb::DeleteRecordL(CCommsDbProtectTableView* aTable, TInt aResult)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   522
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   523
	TESTL(aTable->DeleteRecord()==aResult);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   524
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   525
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   526
void CTestStepCommDb::DeleteRecordL(CCommsDbProtectConnectPrefTableView* aTable, TInt aExpectedResult)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   527
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   528
	TRAPD(ErrVal, aTable->DeleteConnectionPreferenceL());
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   529
	TESTL(ErrVal == aExpectedResult);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   530
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   531
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   532
void CTestStepCommDb::InsertRecordL(CCommsDbProtectTableView* aTable, TInt aExpectedResult)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   533
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   534
	TUint32 recordId;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   535
	TInt ret = aTable->InsertRecord(recordId);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   536
	TESTL(ret==aExpectedResult||ret==KErrAlreadyExists); //for some tables insertion fails
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   537
											  //because they can only have
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   538
											//one record (i.e. DEFAULT_GPRS)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   539
	if (ret == KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   540
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   541
		PopulateInsertedRecordL(aTable);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   542
		TESTL(aTable->PutRecordChanges()==KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   543
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   544
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   545
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   546
void CTestStepCommDb::InsertRecordL(CCommsDbProtectConnectPrefTableView* aTable, TInt aExpectedResult)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   547
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   548
	CCommsDbConnectionPrefTableView::TCommDbIapConnectionPref PrefData1, PrefData2;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   549
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   550
	PrefData1.iRanking = 0;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   551
	PrefData1.iDirection = ECommDbConnectionDirectionOutgoing;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   552
	PrefData1.iDialogPref = ECommDbDialogPrefWarn;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   553
	PrefData1.iBearer.iBearerSet = ECommDbBearerCSD;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   554
	PrefData1.iBearer.iIapId = 1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   555
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   556
	TRAPD(ErrVal, aTable->InsertConnectionPreferenceL(PrefData1));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   557
	TESTL(ErrVal==aExpectedResult); //for some tables insertion fails
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   558
											  //because they can only have
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   559
											//one record (i.e. DEFAULT_GPRS)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   560
	if (ErrVal == KErrNone)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   561
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   562
		aTable->ReadConnectionPreferenceL(PrefData2);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   563
		TESTL(PrefData1 == PrefData2);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   564
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   565
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   566
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   567
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   568
#define TEST_FCN(_F_)		{TRAPD(ret,_F_); TESTL(ret == KErrNone);}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   569
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   570
void CTestStepCommDb::ModifyRecordL(CCommsDbProtectTableView* aTable)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   571
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   572
// Modify some field in current record
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   573
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   574
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   575
	TEST_FCN(aTable->WriteTextL(TPtrC(COMMDB_NAME),_L("test")));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   576
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   577
// Extract the protection state for the current record,
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   578
// and leave if it's not the state expected
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   579
void CTestStepCommDb::CheckRecordAccessL(CCommsDbProtectConnectPrefTableView* aTable, TInt aExpectedAccess)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   580
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   581
	TInt FoundAccess;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   582
	// Set the state to one not expected, so it will fail if not explicitly changed
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   583
	if (aExpectedAccess == RDbRowSet::EUpdatable)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   584
		FoundAccess = RDbRowSet::EReadOnly;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   585
	else
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   586
		FoundAccess = RDbRowSet::EUpdatable;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   587
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   588
	TESTL(aTable->GetRecordAccess(FoundAccess) == KErrNone);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   589
	TESTL(aExpectedAccess == FoundAccess);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   590
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   591
void CTestStepCommDb::PopulateInsertedRecordL(CCommsDbProtectTableView* aTable)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   592
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   593
// Populate minimal set of fields in current newly inserted record.
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   594
//
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   595
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   596
	TBuf<50> tableName;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   597
	aTable->GetTableName(tableName);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   598
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   599
	if (tableName == TPtrC(DIAL_OUT_ISP))
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   600
		{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   601
		TEST_FCN(aTable->WriteTextL(TPtrC(COMMDB_NAME),_L("Inserted Service")));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   602
		TEST_FCN(aTable->WriteBoolL(TPtrC(ISP_DIAL_RESOLUTION),ETrue));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   603
		TEST_FCN(aTable->WriteBoolL(TPtrC(ISP_USE_LOGIN_SCRIPT),EFalse));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   604
		TEST_FCN(aTable->WriteBoolL(TPtrC(ISP_PROMPT_FOR_LOGIN),ETrue));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   605
		TEST_FCN(aTable->WriteBoolL(TPtrC(ISP_IF_PROMPT_FOR_AUTH),ETrue));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   606
		TEST_FCN(aTable->WriteBoolL(TPtrC(ISP_IP_ADDR_FROM_SERVER),ETrue));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   607
		TEST_FCN(aTable->WriteBoolL(TPtrC(ISP_IP_DNS_ADDR_FROM_SERVER),ETrue));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   608
		TEST_FCN(aTable->WriteBoolL(TPtrC(ISP_IP6_DNS_ADDR_FROM_SERVER),ETrue));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   609
		}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   610
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   611
	// EXTEND OR MODIFY this function if want to use different table
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   612
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   613
// Just a utility function - for checking the protection of the Connection Preferences
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   614
// table and its records, we just try changing the ranking field of the first one.
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   615
TInt CTestStepCommDb::ChangeCPRankingL(CCommsDbProtectConnectPrefTableView* aTable, TUint32& Ranking)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   616
	{
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   617
	CCommsDbConnectionPrefTableView::TCommDbIapConnectionPref  RecordData;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   618
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   619
	aTable->ReadConnectionPreferenceL(RecordData);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   620
	if(RecordData.iRanking == 1)
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   621
		Ranking = 0;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   622
	else
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   623
		Ranking = 1;
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   624
	TRAPD(ErrVal, aTable->ChangeConnectionPreferenceRankL(Ranking));
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   625
	return(ErrVal);
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   626
	}
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   627
ae47d0499bee 201033_02
hgs
parents:
diff changeset
   628
#undef TEST_FCN