os/persistentdata/persistentstorage/centralrepository/pccenrep/test/common_neg.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
//
sl@0
    15
sl@0
    16
#ifdef CENREP_PC_TEST
sl@0
    17
	#include <x86tool/centralrepository.h>
sl@0
    18
#else
sl@0
    19
	#include <centralrepository.h>
sl@0
    20
#endif
sl@0
    21
sl@0
    22
#include <e32test.h>
sl@0
    23
#include <f32file.h>
sl@0
    24
sl@0
    25
enum TestMode{
sl@0
    26
	ETxt,
sl@0
    27
	ECre,
sl@0
    28
	EAutoCre,
sl@0
    29
	EAutoTxt
sl@0
    30
};
sl@0
    31
sl@0
    32
//DEFINED IN THE TEST MAIN CPP
sl@0
    33
extern void SetupEnv(const TDesC& aInFilePath,const TDesC& aOutFilePath,TUint aTestMode);
sl@0
    34
extern RFs TheFs;
sl@0
    35
extern RTest TheTest;
sl@0
    36
sl@0
    37
using namespace NCentralRepositoryConstants;
sl@0
    38
sl@0
    39
_LIT(KLongBuf16,"sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss\
sl@0
    40
	ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss\
sl@0
    41
	ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss\
sl@0
    42
	ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss\
sl@0
    43
	ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss\
sl@0
    44
	ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss\
sl@0
    45
	ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss\
sl@0
    46
	ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss\
sl@0
    47
	ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss\
sl@0
    48
	ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss\
sl@0
    49
	ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss\
sl@0
    50
	ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss");
sl@0
    51
sl@0
    52
sl@0
    53
////////////////////////////////////////////////////////////////////////////////
sl@0
    54
// Test macro and function.
sl@0
    55
sl@0
    56
LOCAL_C void Check(TInt aValue, TInt aLine)
sl@0
    57
	{
sl@0
    58
	if(!aValue)
sl@0
    59
		{
sl@0
    60
		TheTest(EFalse, aLine);
sl@0
    61
		}
sl@0
    62
	}
sl@0
    63
sl@0
    64
LOCAL_C void Check(TInt aValue, TInt aExpected, TInt aLine)
sl@0
    65
	{
sl@0
    66
	if(aValue != aExpected)
sl@0
    67
		{
sl@0
    68
		RDebug::Print(_L("*** Expected error: %d, got: %d\r\n"), aExpected, aValue);
sl@0
    69
		TheTest(EFalse, aLine);
sl@0
    70
		}
sl@0
    71
	}
sl@0
    72
sl@0
    73
#define TEST(arg) ::Check((arg), __LINE__)
sl@0
    74
#define TEST2(aValue, aExpected) ::Check(aValue, aExpected, __LINE__)
sl@0
    75
sl@0
    76
////////////////////////////////////////////////////////////////////////////////
sl@0
    77
sl@0
    78
/**
sl@0
    79
NEWL Negative Testing
sl@0
    80
*/
sl@0
    81
void NewL(TUint aTestMode)
sl@0
    82
	{
sl@0
    83
	CRepository* repos=NULL;
sl@0
    84
	//Negative testing to do with initialising the repository
sl@0
    85
	
sl@0
    86
	//-repository file not found
sl@0
    87
	TUid nonexistentRepository={0x88888888};
sl@0
    88
	TRAPD(err,repos=CRepository::NewL(nonexistentRepository));
sl@0
    89
	TEST2(err, KErrNotFound);
sl@0
    90
	
sl@0
    91
	//-repository file corrupt
sl@0
    92
	TUid corruptRepositoryUid;
sl@0
    93
	if (aTestMode==EAutoCre)
sl@0
    94
		corruptRepositoryUid=TUid::Uid(0x88888881);
sl@0
    95
	else
sl@0
    96
		corruptRepositoryUid=TUid::Uid(0x88888880);
sl@0
    97
	TRAP(err,repos=CRepository::NewL(corruptRepositoryUid));
sl@0
    98
	TEST2(err, KErrCorrupt);
sl@0
    99
	
sl@0
   100
	delete repos;
sl@0
   101
	}
sl@0
   102
sl@0
   103
sl@0
   104
void GetFunction(CRepository* aRepository)
sl@0
   105
	{
sl@0
   106
	TInt error;
sl@0
   107
	TInt intVal;
sl@0
   108
	TReal realVal;
sl@0
   109
	TBuf<50> longStr;
sl@0
   110
	
sl@0
   111
	//GENERAL
sl@0
   112
	//-Setting does not exist
sl@0
   113
	error = aRepository->Get(100, intVal);
sl@0
   114
	TEST2(error, KErrNotFound);
sl@0
   115
	error = aRepository->Get(100, realVal);
sl@0
   116
	TEST2(error, KErrNotFound);
sl@0
   117
	error = aRepository->Get(100, longStr);
sl@0
   118
	TEST2(error, KErrNotFound);
sl@0
   119
	
sl@0
   120
	//-Setting exist but not requested type(mismatch)
sl@0
   121
	//INT
sl@0
   122
	error = aRepository->Get(1, realVal);
sl@0
   123
	TEST2(error, KErrArgument);
sl@0
   124
	error = aRepository->Get(1, longStr);
sl@0
   125
	TEST2(error, KErrArgument);
sl@0
   126
	
sl@0
   127
	//REAL
sl@0
   128
	error = aRepository->Get(2, intVal);
sl@0
   129
	TEST2(error, KErrArgument);
sl@0
   130
	error = aRepository->Get(2, longStr);
sl@0
   131
	TEST2(error, KErrArgument);
sl@0
   132
	
sl@0
   133
	//DESC8,DESC16
sl@0
   134
	error = aRepository->Get(0x300, intVal);
sl@0
   135
	TEST2(error, KErrArgument);
sl@0
   136
	error = aRepository->Get(0x300, realVal);
sl@0
   137
	TEST2(error, KErrArgument);
sl@0
   138
	
sl@0
   139
	//-The buffer allocated too small
sl@0
   140
	TBuf8<4> short8BitStr;
sl@0
   141
	error = aRepository->Get(11, short8BitStr);
sl@0
   142
	TEST2(error, KErrOverflow);
sl@0
   143
	//-The bufer allocated is ok
sl@0
   144
	TBuf8<12> good8BitStr;
sl@0
   145
	error = aRepository->Get(11, good8BitStr);
sl@0
   146
	TEST2(error, KErrNone);
sl@0
   147
	//-The buffer allocated is too big(not a problem)
sl@0
   148
	TBuf8<50> long8BitStr;
sl@0
   149
	error = aRepository->Get(11, long8BitStr);
sl@0
   150
	TEST2(error, KErrNone);
sl@0
   151
	//DESC8,DESC16(with actual length)
sl@0
   152
	//-The buffer allocated too small
sl@0
   153
	TBuf<4> shortStr;
sl@0
   154
	error = aRepository->Get(0x300, shortStr);
sl@0
   155
	TEST2(error, KErrOverflow);
sl@0
   156
	//-The bufer allocated is ok
sl@0
   157
	TBuf<11> goodStr;
sl@0
   158
	error = aRepository->Get(0x300, goodStr);
sl@0
   159
	TEST2(error, KErrNone);
sl@0
   160
	//-The buffer allocated is too big(not a problem)
sl@0
   161
	error = aRepository->Get(0x300, longStr);
sl@0
   162
	TEST2(error, KErrNone);
sl@0
   163
	}
sl@0
   164
	
sl@0
   165
void GetMeta(CRepository* aRepository)
sl@0
   166
	{
sl@0
   167
	//-Setting does not exist	
sl@0
   168
	TUint32 meta;
sl@0
   169
	TInt error;
sl@0
   170
	error = aRepository->GetMeta(100, meta);
sl@0
   171
	TEST2(error, KErrNotFound);
sl@0
   172
	}
sl@0
   173
sl@0
   174
void FindFunctionL(CRepository* aRepository)
sl@0
   175
	{
sl@0
   176
	RArray<TUint32> keyList;
sl@0
   177
	RArray<TUint32> shortKeyList(1);
sl@0
   178
	CleanupClosePushL(keyList);
sl@0
   179
	CleanupClosePushL(shortKeyList);
sl@0
   180
	
sl@0
   181
	TInt error;
sl@0
   182
	
sl@0
   183
	//FindL
sl@0
   184
	//-Partial setting list requested not found(based on partialid and mask)
sl@0
   185
	error = aRepository->FindL(0x0000FFFF, 0x0000F000, keyList);
sl@0
   186
	TEST2(error, KErrNotFound);
sl@0
   187
	
sl@0
   188
	//-purposely initially allocated a array with small size(force it to grow)
sl@0
   189
	error = aRepository->FindL(0xFFFFFFFF, 0x0, shortKeyList);
sl@0
   190
	TEST2(error, KErrNone);
sl@0
   191
	TEST2(shortKeyList.Count(), 33);
sl@0
   192
	
sl@0
   193
	//FindEqL/FindNeqL
sl@0
   194
	keyList.Reset();
sl@0
   195
	error = aRepository->FindEqL(0xFFFFFFFF, 0, 199, keyList);
sl@0
   196
	TEST2(error, KErrNotFound);
sl@0
   197
sl@0
   198
	//GENERAL
sl@0
   199
	//-Partial setting list requested not found(based on partialid and mask)
sl@0
   200
	keyList.Reset();
sl@0
   201
	error = aRepository->FindEqL(0x0000FFFF, 0x0000F000, 100, keyList);
sl@0
   202
	TEST2(error, KErrNotFound);
sl@0
   203
	keyList.Reset();
sl@0
   204
	error = aRepository->FindNeqL(0x0000FFFF, 0x0000F000, 100, keyList);
sl@0
   205
	TEST2(error, KErrNotFound);
sl@0
   206
	
sl@0
   207
	//-Partial setting list found but some setting not the TYPE as requested(ensure not returned)
sl@0
   208
	//INT
sl@0
   209
	keyList.Reset();
sl@0
   210
	error = aRepository->FindEqL(0x00100000, 0xFFFFF0FF, 88, keyList);
sl@0
   211
	TEST2(error, KErrNone);
sl@0
   212
	TEST2(keyList.Count(), 2);
sl@0
   213
	
sl@0
   214
	keyList.Reset();
sl@0
   215
	error = aRepository->FindNeqL(0x00100000, 0xFFFFF0FF, 88, keyList);
sl@0
   216
	TEST2(error, KErrNone);
sl@0
   217
	TEST2(keyList.Count(), 3);
sl@0
   218
	
sl@0
   219
	//REAL
sl@0
   220
	keyList.Reset();
sl@0
   221
	error = aRepository->FindEqL(0x00100000, 0xFFFFF0FF, 88.0, keyList);
sl@0
   222
	TEST2(error, KErrNone);
sl@0
   223
	TEST2(keyList.Count(), 2);
sl@0
   224
	
sl@0
   225
	keyList.Reset();
sl@0
   226
	error = aRepository->FindNeqL(0x00100000, 0xFFFFF0FF, 88.0, keyList);
sl@0
   227
	TEST2(error, KErrNone);
sl@0
   228
	TEST2(keyList.Count(), 3);
sl@0
   229
sl@0
   230
	_LIT(KString16, "88");
sl@0
   231
	
sl@0
   232
	keyList.Reset();
sl@0
   233
	error = aRepository->FindEqL(0x00100000, 0xFFFFF0FF, KString16, keyList);
sl@0
   234
	TEST2(error, KErrNone);
sl@0
   235
	TEST2(keyList.Count(), 1);
sl@0
   236
	
sl@0
   237
	keyList.Reset();
sl@0
   238
	error = aRepository->FindNeqL(0x00100000, 0xFFFFF0FF, KString16, keyList);
sl@0
   239
	TEST2(error, KErrNone);
sl@0
   240
	TEST2(keyList.Count(), 4);
sl@0
   241
	
sl@0
   242
	_LIT(KString8, "88");
sl@0
   243
	
sl@0
   244
	keyList.Reset();
sl@0
   245
	error = aRepository->FindEqL(0x00100000, 0xFFFFF0FF, KString8, keyList);
sl@0
   246
	TEST2(error, KErrNone);
sl@0
   247
	TEST2(keyList.Count(), 1);
sl@0
   248
	
sl@0
   249
	keyList.Reset();
sl@0
   250
	error = aRepository->FindNeqL(0x00100000, 0xFFFFF0FF, KString8, keyList);
sl@0
   251
	TEST2(error, KErrNone);
sl@0
   252
	TEST2(keyList.Count(), 4);
sl@0
   253
	
sl@0
   254
	//-A value specified greater than the max limit allowed KMaxBinaryLength(8 bit) and KMaxUnicodeStringLength(16 bit)
sl@0
   255
	TBuf8<KMaxUnicodeStringLength*3> KLongBuf8;
sl@0
   256
	KLongBuf8.Copy(KLongBuf16);
sl@0
   257
	KLongBuf8.Append(KLongBuf16);
sl@0
   258
sl@0
   259
	keyList.Reset();
sl@0
   260
	error = aRepository->FindEqL(0xFFFFFFFF, 0, KLongBuf8, keyList);
sl@0
   261
	TEST2(error, KErrNotFound);
sl@0
   262
	keyList.Reset();
sl@0
   263
	error = aRepository->FindNeqL(0xFFFFFFFF, 0, KLongBuf8, keyList);
sl@0
   264
	TEST2(error, KErrNone);
sl@0
   265
	TEST2(shortKeyList.Count(), 33);
sl@0
   266
	
sl@0
   267
	keyList.Reset();
sl@0
   268
	error = aRepository->FindEqL(0xFFFFFFFF, 0, KLongBuf16, keyList);
sl@0
   269
	TEST2(error, KErrNotFound);
sl@0
   270
	keyList.Reset();
sl@0
   271
	error = aRepository->FindNeqL(0xFFFFFFFF, 0, KLongBuf16, keyList);
sl@0
   272
	TEST2(error, KErrNone);
sl@0
   273
	TEST2(shortKeyList.Count(), 33);
sl@0
   274
	
sl@0
   275
	//-A value specified empty
sl@0
   276
	_LIT8(KEmptyStr8, "");
sl@0
   277
	keyList.Reset();
sl@0
   278
	error = aRepository->FindEqL(0xFFFFFFFF, 0, KEmptyStr8, keyList);
sl@0
   279
	TEST2(error, KErrNotFound);
sl@0
   280
	keyList.Reset();
sl@0
   281
	error = aRepository->FindNeqL(0xFFFFFFFF, 0, KEmptyStr8, keyList);
sl@0
   282
	TEST2(error, KErrNone);
sl@0
   283
	TEST2(shortKeyList.Count(), 33);
sl@0
   284
	
sl@0
   285
	_LIT16(KEmptyStr16, "");
sl@0
   286
	keyList.Reset();
sl@0
   287
	error = aRepository->FindEqL(0xFFFFFFFF, 0, KEmptyStr16, keyList);
sl@0
   288
	TEST2(error, KErrNotFound);
sl@0
   289
	keyList.Reset();
sl@0
   290
	error = aRepository->FindNeqL(0xFFFFFFFF, 0, KEmptyStr16, keyList);
sl@0
   291
	TEST2(error, KErrNone);
sl@0
   292
	TEST2(shortKeyList.Count(), 33);
sl@0
   293
	
sl@0
   294
	CleanupStack::PopAndDestroy(2);
sl@0
   295
	}
sl@0
   296
sl@0
   297
void SetFunction(CRepository* aRepository)
sl@0
   298
	{
sl@0
   299
	//----------SET
sl@0
   300
	//GENERAL:
sl@0
   301
	//-Setting exist but not requested type(mismatch)
sl@0
   302
	//-If setting does not exist, it creates one(also check the expected meta)
sl@0
   303
	//INT
sl@0
   304
	//REAL
sl@0
   305
	//DESC8,DESC16
sl@0
   306
	//-Try to set a setting that is greater than KMaxBinaryLength(8 bit) and KMaxUnicodeStringLength(16 bit)
sl@0
   307
	//-Try to set a setting with empty string content(is this a problem)
sl@0
   308
		
sl@0
   309
	TInt intVal=0;
sl@0
   310
	TReal realVal=0;
sl@0
   311
	TUint32 metaVal=0;
sl@0
   312
	
sl@0
   313
	//INT
sl@0
   314
	TInt err=aRepository->Set(0x2,intVal);
sl@0
   315
	TEST2(err, KErrArgument);
sl@0
   316
	err=aRepository->Set(0x888,888);
sl@0
   317
	TEST2(err, KErrNone);
sl@0
   318
	err=aRepository->Get(0x888,intVal);
sl@0
   319
	TEST2(intVal, 888);
sl@0
   320
	//will use default one
sl@0
   321
	err=aRepository->GetMeta(0x888,metaVal);
sl@0
   322
	TEST2(metaVal, 0x10);
sl@0
   323
	
sl@0
   324
	//REAL
sl@0
   325
	err=aRepository->Set(0x1,realVal);
sl@0
   326
	TEST2(err, KErrArgument);
sl@0
   327
	err=aRepository->Set(0x333,333.33);
sl@0
   328
	TEST2(err, KErrNone);
sl@0
   329
	err=aRepository->Get(0x333,realVal);
sl@0
   330
	TEST(realVal == 333.33);
sl@0
   331
	//will use range one
sl@0
   332
	err=aRepository->GetMeta(0x333,metaVal);
sl@0
   333
	TEST2(metaVal, 0x20);
sl@0
   334
	
sl@0
   335
	//DESC8,DESC16
sl@0
   336
	_LIT8(KBuf8,"full");
sl@0
   337
	err=aRepository->Set(0x1,KBuf8());
sl@0
   338
	TEST2(err, KErrArgument);
sl@0
   339
	_LIT(KBuf16,"full");
sl@0
   340
	err=aRepository->Set(0x1,KBuf16());
sl@0
   341
	TEST2(err, KErrArgument);
sl@0
   342
	err=aRepository->Set(0x111,KBuf16());
sl@0
   343
	TEST2(err, KErrNone);
sl@0
   344
	TBuf16<255> buffer16;
sl@0
   345
	err=aRepository->Get(0x111,buffer16);
sl@0
   346
	TEST2(err, KErrNone);
sl@0
   347
	TEST2(buffer16.Compare(KBuf16()), 0);
sl@0
   348
	err=aRepository->GetMeta(0x111,metaVal);
sl@0
   349
	//will use range one
sl@0
   350
	err=aRepository->GetMeta(0x111,metaVal);
sl@0
   351
	TEST2(metaVal, 0x20);	
sl@0
   352
	
sl@0
   353
	//Set an existing string setting with string longer than limit(KMaxUnicodeStringLength)
sl@0
   354
	TBuf8<KMaxUnicodeStringLength*3> KLongBuf8;
sl@0
   355
	KLongBuf8.Copy(KLongBuf16());
sl@0
   356
	KLongBuf8.Append(KLongBuf16());
sl@0
   357
sl@0
   358
	//try it on existing string setting
sl@0
   359
	err=aRepository->Set(0x222,KLongBuf16());
sl@0
   360
	TEST2(err, KErrArgument);
sl@0
   361
	err=aRepository->Set(0x222,KLongBuf8);
sl@0
   362
	TEST2(err, KErrArgument);
sl@0
   363
	
sl@0
   364
	//set an empty string content
sl@0
   365
	_LIT8(KEmptyString8,"");
sl@0
   366
	err=aRepository->Set(0x444,KEmptyString8());
sl@0
   367
	TEST2(err, KErrNone);
sl@0
   368
	_LIT16(KEmptyString16,"");
sl@0
   369
	err=aRepository->Set(0x555,KEmptyString16());
sl@0
   370
	TEST2(err, KErrNone);
sl@0
   371
	}
sl@0
   372
sl@0
   373
void CreateFunction(CRepository* aRepository)
sl@0
   374
	{
sl@0
   375
	//----------CREATE
sl@0
   376
	//GENERAL:
sl@0
   377
	//-Setting already exist
sl@0
   378
	//INT
sl@0
   379
	//REAL
sl@0
   380
	//DESC8,DESC16
sl@0
   381
	//-Try to create a setting that is greater than KMaxBinaryLength(8 bit) and KMaxUnicodeStringLength(16 bit)
sl@0
   382
	//-Try to set a setting with empty string content(is this a problem)
sl@0
   383
	TInt intVal = 0;
sl@0
   384
	TReal realVal = 0.0;
sl@0
   385
sl@0
   386
	//INT
sl@0
   387
	TInt err=aRepository->Create(1,intVal);
sl@0
   388
	TEST2(err, KErrAlreadyExists);
sl@0
   389
	//REAL
sl@0
   390
	err=aRepository->Create(2,realVal);
sl@0
   391
	TEST2(err, KErrAlreadyExists);
sl@0
   392
	//DESC8,DESC16
sl@0
   393
	_LIT8(KString8,"string");
sl@0
   394
	_LIT16(KString16,"string");	
sl@0
   395
	err=aRepository->Create(5,KString8);
sl@0
   396
	TEST2(err, KErrAlreadyExists);
sl@0
   397
	err=aRepository->Create(5,KString16);
sl@0
   398
	TEST2(err, KErrAlreadyExists);		
sl@0
   399
	
sl@0
   400
	//empty string
sl@0
   401
	_LIT8(KEmptyString8,"");
sl@0
   402
	_LIT8(KEmptyString16,"");
sl@0
   403
	err=aRepository->Create(0x1111,KEmptyString8());
sl@0
   404
	TEST2(err, KErrNone); 
sl@0
   405
	err=aRepository->Create(0x2222,KEmptyString16());
sl@0
   406
	TEST2(err, KErrNone);
sl@0
   407
	
sl@0
   408
	//Create an existing string setting with string longer than limit(KMaxUnicodeStringLength)
sl@0
   409
	TBuf8<KMaxUnicodeStringLength*3> KLongBuf8;
sl@0
   410
	KLongBuf8.Copy(KLongBuf16());
sl@0
   411
	KLongBuf8.Append(KLongBuf16());
sl@0
   412
sl@0
   413
	err=aRepository->Create(0x3333,KLongBuf16());
sl@0
   414
	TEST2(err, KErrArgument);
sl@0
   415
	err=aRepository->Create(0x4444,KLongBuf8);
sl@0
   416
	TEST2(err, KErrArgument);
sl@0
   417
	}
sl@0
   418
sl@0
   419
void DeleteFunction(CRepository* aRepository)
sl@0
   420
	{
sl@0
   421
	//----------DELETE SINGLE
sl@0
   422
	//-Setting does not exist
sl@0
   423
	//-Delete a setting and then recreate,see original meta data preserved(vary with default,range,single)
sl@0
   424
	//-When deleted always verify setting does not exist
sl@0
   425
	TInt err=aRepository->Delete(0x757);
sl@0
   426
	TEST2(err, KErrNotFound);
sl@0
   427
	
sl@0
   428
	//delete and existing setting with single meta, then recreate it, expect same meta before deletion
sl@0
   429
	TReal realVal;
sl@0
   430
	TUint32 metaVal;
sl@0
   431
	//this is the original setting meta
sl@0
   432
	err=aRepository->GetMeta(2,metaVal);
sl@0
   433
	TEST2(metaVal, 0xa);
sl@0
   434
	err=aRepository->Delete(2);
sl@0
   435
	TEST2(err, KErrNone);
sl@0
   436
	err=aRepository->Get(2,realVal);
sl@0
   437
	TEST2(err, KErrNotFound);
sl@0
   438
	err=aRepository->Create(2,realVal);
sl@0
   439
	TEST2(err, KErrNone);
sl@0
   440
	TUint32 newMetaVal;
sl@0
   441
	err=aRepository->GetMeta(2,newMetaVal);
sl@0
   442
	TEST2(err, KErrNone);
sl@0
   443
	TEST2(newMetaVal, metaVal);
sl@0
   444
	
sl@0
   445
	
sl@0
   446
	//----------DELETE RANGE
sl@0
   447
	//-Partial setting list requested not found(based on partialid and mask)
sl@0
   448
	//-Check the aErrorKey returned with each of the negative testing.
sl@0
   449
	TUint32 error;
sl@0
   450
	err=aRepository->Delete(0x0F010000,0xFFFFF0FF,error);
sl@0
   451
	TEST2(err, KErrNotFound);
sl@0
   452
	//if not found, the error key here will be set to the partial ID
sl@0
   453
	TEST2(error, 0x0F010000);
sl@0
   454
sl@0
   455
	}
sl@0
   456
sl@0
   457
void MoveFunction(CRepository* aRepository)
sl@0
   458
	{
sl@0
   459
	//-Partial setting list requested not found(based on partialid and mask)
sl@0
   460
	//-Intended target setting already exist(say 1 out of X)
sl@0
   461
	TUint32 errorId;	
sl@0
   462
	TInt err=aRepository->Move(0x0F010000,0x0E010000,0xFFFFF0FF,errorId);
sl@0
   463
	TEST2(err, KErrNotFound);
sl@0
   464
	TEST2(errorId, 0x0F010000);
sl@0
   465
sl@0
   466
	
sl@0
   467
	err=aRepository->Move(0x03010000,0x02010000,0xFFFFF0FF,errorId);
sl@0
   468
	TEST2(err, KErrAlreadyExists);
sl@0
   469
	//errorId will be set to the first id of the target when error is encountered
sl@0
   470
	TEST2(errorId, 0x02010100);
sl@0
   471
	}
sl@0
   472
sl@0
   473
/**
sl@0
   474
*/
sl@0
   475
void NegativeTestingL(TUid aUid,const TDesC& aInFile,const TDesC& aOutFile,TUint aTestMode)
sl@0
   476
	{
sl@0
   477
	SetupEnv(aInFile,aOutFile,aTestMode);
sl@0
   478
	
sl@0
   479
	__UHEAP_MARK;
sl@0
   480
	
sl@0
   481
	//repository initialising negative testing
sl@0
   482
	NewL(aTestMode);
sl@0
   483
	
sl@0
   484
	//ok repository but operation negative testing
sl@0
   485
	CRepository* repository=CRepository::NewLC(aUid);
sl@0
   486
sl@0
   487
	//these are all negative testing specifically each of the error code
sl@0
   488
	GetFunction(repository);
sl@0
   489
	GetMeta(repository);
sl@0
   490
	FindFunctionL(repository);
sl@0
   491
	SetFunction(repository);
sl@0
   492
	CreateFunction(repository);
sl@0
   493
	DeleteFunction(repository);
sl@0
   494
	MoveFunction(repository);
sl@0
   495
sl@0
   496
	CleanupStack::PopAndDestroy();	
sl@0
   497
	
sl@0
   498
	__UHEAP_MARKEND;
sl@0
   499
	}
sl@0
   500
sl@0
   501
TInt CopyFile(const TDesC& aSource, const TDesC& aTarget)
sl@0
   502
	{
sl@0
   503
	RFile file;
sl@0
   504
	TInt ret=file.Open(TheFs,aSource,EFileRead);
sl@0
   505
	if (ret!=KErrNone)
sl@0
   506
		return ret;
sl@0
   507
	TInt fileSize;
sl@0
   508
	file.Size(fileSize);
sl@0
   509
	HBufC8* buf=HBufC8::New(fileSize);
sl@0
   510
	if (!buf)
sl@0
   511
		{
sl@0
   512
		file.Close();
sl@0
   513
		return KErrNoMemory;
sl@0
   514
		}
sl@0
   515
	TPtr8 mod(buf->Des());
sl@0
   516
	file.Read(mod);
sl@0
   517
	file.Close();
sl@0
   518
	ret=file.Replace(TheFs,aTarget,EFileWrite);
sl@0
   519
	if (ret==KErrNone)
sl@0
   520
		{
sl@0
   521
		file.Write(*buf);
sl@0
   522
		}
sl@0
   523
	file.Close();
sl@0
   524
	delete buf;
sl@0
   525
	return ret;
sl@0
   526
	}