diff -r 31a8f755b7fe -r 211563e4b919 persistentstorage/sql/TEST/t_sqlprivcage.cpp --- a/persistentstorage/sql/TEST/t_sqlprivcage.cpp Thu Apr 01 00:19:42 2010 +0300 +++ b/persistentstorage/sql/TEST/t_sqlprivcage.cpp Wed Apr 14 17:46:32 2010 +0300 @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies). // All rights reserved. // This component and the accompanying materials are made available // under the terms of "Eclipse Public License v1.0" @@ -242,6 +242,9 @@ //Very long private database name err = db.Create(_L("c:\\private\\21212124\\hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh.db")); TEST2(err, KErrBadName); + //Private database name without drive letter + err = db.Create(_L("\\private\\21212124\\dbname_no_drive_letter.db")); + TEST2(err, KErrBadName); //Zero length private database name err = db.Create(_L("")); TEST2(err, KErrBadName); @@ -302,10 +305,14 @@ TEST2(err, 1); db2.Close(); - //Open database 1, attach database 2 + //Open database 1 RSqlDatabase db; err = db.Open(KTestDb1); TEST2(err, KErrNone); + //An attempt to attach a database with zero length name + err = db.Attach(_L(""), _L("Db2")); + TEST2(err, KErrBadName); + //Attach database 2 err = db.Attach(KTestDb2, _L("Db2")); TEST2(err, KErrNone); @@ -349,6 +356,32 @@ stmt.Close(); db.Close(); + //Open database 1, attach read-only database 2 + err = db.Open(KTestDb1); + TEST2(err, KErrNone); + //Make database 2 read-only. + err = TheFs.SetAtt(KTestDb2, KEntryAttReadOnly, 0); + TEST2(err, KErrNone); + //Attach database 2 + err = db.Attach(KTestDb2, _L("Db2")); + TEST2(err, KErrNone); + // + err = db.Exec(_L("INSERT INTO Db2.A(ID, T) VALUES(3, 'AAA')")); + TPtrC errmsg = db.LastErrorMessage(); + TheTest.Printf(_L(" === Read-only private attached database. Msg=%S, err=%d\r\n"), &errmsg, err); + TEST(err != KErrNone); + TSqlScalarFullSelectQuery q(db); + TBuf<20> text2; + TRAP(err, q.SelectTextL(_L("SELECT T FROM Db2.A WHERE ID=2"), text2)); + TEST2(err, KErrNone); + TEST(text2 == _L("AAA")); + // + err = db.Detach(_L("Db2")); + TEST2(err, KErrNone); + err = TheFs.SetAtt(KTestDb2, 0, KEntryAttReadOnly); + TEST2(err, KErrNone); + db.Close(); + err = RSqlDatabase::Delete(KTestDb2); TEST2(err, KErrNone); err = RSqlDatabase::Delete(KTestDb1);