persistentstorage/sql/TEST/t_sqldefect2.cpp
branchRCL_3
changeset 56 839ea9debada
parent 45 cc28652e0254
equal deleted inserted replaced
50:8dc8494f1e0e 56:839ea9debada
   414     //3. Check 'temp' folder exists
   414     //3. Check 'temp' folder exists
   415     err = TheFs.MkDir(KServerTempDir);
   415     err = TheFs.MkDir(KServerTempDir);
   416     TEST2(err, KErrAlreadyExists);
   416     TEST2(err, KErrAlreadyExists);
   417     }
   417     }
   418 
   418 
   419 /**
       
   420 @SYMTestCaseID          PDS-SQL-CT-4213
       
   421 @SYMTestCaseDesc        Tests the ability of the SQL server to store empty strings and retrieve them as 
       
   422 						text column values, not NULLs.
       
   423 						Change: ou1cimx1#504388. 
       
   424 @SYMTestPriority        High
       
   425 @SYMTestActions         The test creates a database and a table and stores there empty strings.
       
   426 						Then the test retrieves the stored column values and verifies that the column type is
       
   427 						"text", not "null".
       
   428 @SYMTestExpectedResults Test must not fail
       
   429 */
       
   430 void EmptyTextColumnTest()
       
   431 	{
       
   432 	_LIT8(KEncUtf16, "encoding=\"UTF-16\"");
       
   433 	_LIT8(KEncUtf8, "encoding=\"UTF-8\"");
       
   434 	TPtrC8 enc[] = {KEncUtf16(), KEncUtf8()};
       
   435 	for(TInt i=0;i<(sizeof(enc)/sizeof(enc[0]));++i)
       
   436 		{
       
   437 		(void)RSqlDatabase::Delete(KTestDatabase1);
       
   438 		TInt err = TheDb1.Create(KTestDatabase1, &enc[i]);
       
   439 		TEST2(err, KErrNone);
       
   440 		//Insert records with empty text column values using RSqlDatabase::Exec()
       
   441 	    err = TheDb1.Exec(_L("CREATE TABLE A(ID INTEGER, T TEXT)"));
       
   442 	    TEST(err >= 0);
       
   443 	    err = TheDb1.Exec(_L("INSERT INTO A VALUES(1, '')"));
       
   444 	    TEST2(err, 1);
       
   445 	    err = TheDb1.Exec(_L8("INSERT INTO A VALUES(2, '')"));
       
   446 	    TEST2(err, 1);
       
   447 		//Insert a record with empty text column value using RSqlParamWriteStream
       
   448 	    RSqlStatement stmt;
       
   449 	    err = stmt.Prepare(TheDb1, _L("INSERT INTO A(ID, T) VALUES(:P1, :P2)"));
       
   450 	    TEST2(err, KErrNone);
       
   451 		err = stmt.BindInt(0, 3);
       
   452 	    TEST2(err, KErrNone);
       
   453 	    RSqlParamWriteStream strm;
       
   454 	    err = strm.BindText(stmt, 1);
       
   455 	    TEST2(err, KErrNone);
       
   456 	    TRAP(err, strm.WriteL(KNullDesC));
       
   457 	    TEST2(err, KErrNone);
       
   458 	    strm.Close();
       
   459 	    err = stmt.Exec();
       
   460 	    TEST2(err, 1);
       
   461 	    stmt.Close();
       
   462 		//Insert records with empty text column values using RSqlStatement::Bind()
       
   463 	    err = stmt.Prepare(TheDb1, _L("INSERT INTO A(ID, T) VALUES(:P1, :P2)"));
       
   464 	    TEST2(err, KErrNone);
       
   465 		err = stmt.BindInt(0, 4);
       
   466 	    TEST2(err, KErrNone);
       
   467 		err = stmt.BindText(1, KNullDesC);
       
   468 	    TEST2(err, KErrNone);
       
   469 	    err = stmt.Exec();
       
   470 	    TEST2(err, 1);
       
   471 	    //
       
   472 	    err = stmt.Reset();
       
   473 	    TEST2(err, KErrNone);
       
   474 		err = stmt.BindInt(0, 5);
       
   475 	    TEST2(err, KErrNone);
       
   476 	    _LIT(KEmptyStr, "");
       
   477 		err = stmt.BindText(1, KEmptyStr);
       
   478 	    TEST2(err, KErrNone);
       
   479 	    err = stmt.Exec();
       
   480 	    TEST2(err, 1);
       
   481 	    stmt.Close();
       
   482 	    //Read the empty text column values
       
   483 	    err = stmt.Prepare(TheDb1, _L("SELECT T FROM A"));
       
   484 	    TEST2(err, KErrNone);
       
   485 	    TInt cnt = 0;
       
   486 	    while((err = stmt.Next()) == KSqlAtRow)
       
   487 	    	{
       
   488 			++cnt;
       
   489 			TPtrC val;
       
   490 			err = stmt.ColumnText(0, val);
       
   491 			TEST2(err, KErrNone);
       
   492 			TEST2(val.Length(), 0);
       
   493 			TSqlColumnType type = stmt.ColumnType(0);
       
   494 			TEST2(type, ESqlText);
       
   495 	    	}
       
   496 	    stmt.Close();
       
   497 	    TEST2(err, KSqlAtEnd);
       
   498 	    TEST2(cnt, 5);
       
   499 	    //
       
   500 	    TheDb1.Close();
       
   501 	    err = RSqlDatabase::Delete(KTestDatabase1);
       
   502 	    TEST2(err, KErrNone);
       
   503 		}
       
   504 	}
       
   505 
       
   506 void DoTestsL()
   419 void DoTestsL()
   507 	{
   420 	{
   508 	TheTest.Start(_L(" @SYMTestCaseID:SYSLIB-SQL-CT-4154 DEF143062: SQL, \"CREATE INDEX\" sql crashes SQL server"));
   421 	TheTest.Start(_L(" @SYMTestCaseID:SYSLIB-SQL-CT-4154 DEF143062: SQL, \"CREATE INDEX\" sql crashes SQL server"));
   509 	DEF143062();
   422 	DEF143062();
   510 
   423 
   518     DeleteTempFile();
   431     DeleteTempFile();
   519     
   432     
   520     TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-SQL-CT-4211 Temp files created during sql operations are not deleted after rebooting the phone - 2"));
   433     TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-SQL-CT-4211 Temp files created during sql operations are not deleted after rebooting the phone - 2"));
   521     TempFileTest();
   434     TempFileTest();
   522     
   435     
   523     TheTest.Next(_L(" @SYMTestCaseID:PDS-SQL-CT-4213 No support to store an empty string in symbian's sqlite."));
       
   524     EmptyTextColumnTest();
       
   525 
       
   526     TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-SQL-CT-4214 After *#7370# Java apps are not preinstalled again"));
   436     TheTest.Next(_L(" @SYMTestCaseID:SYSLIB-SQL-CT-4214 After *#7370# Java apps are not preinstalled again"));
   527     DeleteTempFolder();
   437     DeleteTempFolder();
   528 	}
   438 	}
   529 
   439 
   530 TInt E32Main()
   440 TInt E32Main()