diff -r f5050f1da672 -r 04becd199f91 javamanager/javaregistry/tsrc/src/testregistry.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javaregistry/tsrc/src/testregistry.cpp Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,848 @@ +/* +* Copyright (c) 2009 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" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include +#include +#include + +#include "TestHarness.h" + +#include "javastorage.h" +#include "javastorageexception.h" +#include "javastoragenames.h" +#include "javauid.h" +#include "javasymbianoslayer.h" + +#include "storagetestutils.h" +#include "javaregistry.h" +#include "javaregistryentry.h" +#include "logger.h" + +using namespace std; +using namespace Java; +using namespace java::storage; +using namespace java::util; + +TEST_GROUP(TestRegistry) +{ + JavaStorage* js; + JavaStorageTestUtils* jtu; + CActiveScheduler* newScheduler; + + TEST_SETUP() + { + newScheduler = new CActiveScheduler(); + CActiveScheduler::Install(newScheduler); + + js = JavaStorage::createInstance(); + jtu = new JavaStorageTestUtils(); + } + TEST_TEARDOWN() + { + try + { + js->rollbackTransaction(); + js->close(); + delete js; + js = NULL; + } + catch (...) + { + // No can do + } + + delete js; + js = 0; + delete jtu; + jtu = 0; + + delete newScheduler; + newScheduler = NULL; + } +}; + +/** + * Test CJavaRegistry::RegistryEntryL(TUid) method. + * 1. No UID in registry. + * 2. No matching UID on registry. + * 3. Suite UID found. + * 4. MIDlet UID found. + * 5. Query twice. + * 6. Query with TUid::Null(). Null returned. + */ +TEST(TestRegistry, TestRegistry) +{ + LOG(EJavaStorage, EInfo, "+TestRegistry"); + + auto_ptr registry(CJavaRegistry::NewL()); + TUid uid = TUid::Uid(3777185127); // e1234567 + + // 1. No UID in registry + CJavaRegistryEntry* entry = registry->RegistryEntryL(uid); + CHECK(entry == NULL); + + // 2. No matching UID on registry. + JavaStorageApplicationEntry_t populateEntry; + JavaStorageEntry attr; + + attr.setEntry(PACKAGE_ID, L"[e1234577]"); + populateEntry.insert(attr); + + Uid entryUid(L"[e1234588]"); + + attr.setEntry(ID, entryUid.toString()); + populateEntry.insert(attr); + + js->open(JAVA_DATABASE_NAME); + js->startTransaction(); + CHECK(jtu->populate(*js, APPLICATION_TABLE, populateEntry)); + + JavaStorageApplicationEntry_t packageEntry; + attr.setEntry(PACKAGE_NAME, L"MySuite"); + packageEntry.insert(attr); + + Uid entryUid2(L"[e1234577]"); + attr.setEntry(ID, entryUid2.toString()); + packageEntry.insert(attr); + + attr.setEntry(MEDIA_ID, L"-124614446"); + packageEntry.insert(attr); + + CHECK(jtu->populate(*js, APPLICATION_PACKAGE_TABLE, packageEntry)); + js->commitTransaction(); + + entry = registry->RegistryEntryL(uid); + CHECK(entry == NULL); + + // 3. Suite UID found. + TUid suiteUid; + uidToTUid(entryUid2, suiteUid); + + entry = registry->RegistryEntryL(suiteUid); + CHECK(entry != NULL); + + TUid regsuiteUid = entry->Uid(); + + // Check suite UID; + CHECK(regsuiteUid == suiteUid); + + delete entry; + entry = NULL; + + TUid midletUid; + uidToTUid(entryUid, midletUid); + + // 4. MIDlet UID found. + entry = registry->RegistryEntryL(midletUid); + CHECK(entry != NULL); + + TUid regMidletUid = entry->Uid(); + + // Check UID; + CHECK(regMidletUid == midletUid); + + delete entry; + entry = NULL; + + // 5. Query twice. This is second query + entry = registry->RegistryEntryL(midletUid); + CHECK(entry != NULL); + + regMidletUid = entry->Uid(); + + // Check UID; + CHECK(regMidletUid == midletUid); + + delete entry; + entry = NULL; + + // 6. Query with TUid::Null() + uid = TUid::Null(); + + entry = registry->RegistryEntryL(uid); + CHECK(entry == NULL); + + // Clean + js->startTransaction(); + CHECK(jtu->remove(*js, APPLICATION_TABLE, populateEntry)); + CHECK(jtu->remove(*js, APPLICATION_PACKAGE_TABLE, packageEntry)); + + js->commitTransaction(); + js->close(); + registry.reset(0); + LOG(EJavaStorage, EInfo, "-TestRegistry"); +} + +/** + * Test RegistryEntryL when multiple entries stored to registry. + * 1. Several suites. + * 2. Several MIDlets. + */ +TEST(TestRegistry, TestRegistryMultiEntry) +{ + LOG(EJavaStorage, EInfo, "+TestMultiRegistry"); + + auto_ptr registry(CJavaRegistry::NewL()); + + // Populate first MIDlet + JavaStorageApplicationEntry_t midlet1; + JavaStorageEntry attr; + + attr.setEntry(PACKAGE_ID, L"[e1234577]"); + midlet1.insert(attr); + + string tableName = APPLICATION_TABLE; + Uid appUid(L"[e1234588]"); + + attr.setEntry(ID, appUid.toString()); + midlet1.insert(attr); + + js->open(JAVA_DATABASE_NAME); + js->startTransaction(); + + CHECK(jtu->populate(*js, tableName, midlet1)); + + JavaStorageApplicationEntry_t suite1; + attr.setEntry(PACKAGE_NAME, L"MySuite1"); + suite1.insert(attr); + + Uid suiteUid1(L"[e1234588]"); + attr.setEntry(ID, suiteUid1.toString()); + suite1.insert(attr); + + attr.setEntry(MEDIA_ID, L"-124614446"); + suite1.insert(attr); + + CHECK(jtu->populate(*js, APPLICATION_PACKAGE_TABLE, suite1)); + + // Populate second MIDlet + JavaStorageApplicationEntry_t midlet2; + + attr.setEntry(PACKAGE_ID, L"[e1234512]"); + midlet2.insert(attr); + + Uid midletUid2(L"[e1234a12]"); + attr.setEntry(ID, midletUid2.toString()); + midlet2.insert(attr); + + CHECK(jtu->populate(*js, APPLICATION_TABLE, midlet2)); + + JavaStorageApplicationEntry_t suite2; + attr.setEntry(PACKAGE_NAME, L"MySuite2"); + suite2.insert(attr); + + Uid suiteUid2(L"[e1234512]"); + attr.setEntry(ID, suiteUid2.toString()); + suite2.insert(attr); + + attr.setEntry(MEDIA_ID, L"-124614446"); + suite2.insert(attr); + + CHECK(jtu->populate(*js, APPLICATION_PACKAGE_TABLE, suite2)); + + // Populate third MIDlet + JavaStorageApplicationEntry_t midlet3; + + attr.setEntry(PACKAGE_ID, L"[e1234513]"); + midlet3.insert(attr); + + Uid midletUid3(L"[e1234a13]"); + attr.setEntry(ID, midletUid3.toString()); + midlet3.insert(attr); + + CHECK(jtu->populate(*js, APPLICATION_TABLE, midlet3)); + + JavaStorageApplicationEntry_t suite3; + attr.setEntry(PACKAGE_NAME, L"MySuite3"); + suite3.insert(attr); + + Uid suiteUid3(L"[e1234513]"); + attr.setEntry(ID, suiteUid3.toString()); + suite3.insert(attr); + + attr.setEntry(MEDIA_ID, L"-124614446"); + suite3.insert(attr); + + CHECK(jtu->populate(*js, APPLICATION_PACKAGE_TABLE, suite3)); + + // Session must be committed before next use of Registry otherwise + // it is locked. + js->commitTransaction(); + + // Suite UID. + TUid uid = TUid::Uid(3777185043); // e1234513 Suite uid + CJavaRegistryEntry* entry = registry->RegistryEntryL(uid); + CHECK(entry != NULL); + + TUid suiteUid = entry->Uid(); + + // Check suite UID; + CHECK(suiteUid.iUid == uid.iUid); + + delete entry; + entry = NULL; + + // MIDlet UID. + uid = TUid::Uid(3777186322); // e1234a12 MIDlet + + entry = registry->RegistryEntryL(uid); + CHECK(entry != NULL); + + TUid midletUid = entry->Uid(); + + // Check suite UID; + CHECK(midletUid.iUid == uid.iUid); + + delete entry; + entry = NULL; + + // Clean + js->startTransaction(); + tableName = APPLICATION_TABLE; + CHECK(jtu->remove(*js, tableName, midlet1)); + CHECK(jtu->remove(*js, tableName, midlet2)); + CHECK(jtu->remove(*js, tableName, midlet3)); + + tableName = APPLICATION_PACKAGE_TABLE; + CHECK(jtu->remove(*js, tableName, suite1)); + CHECK(jtu->remove(*js, tableName, suite2)); + CHECK(jtu->remove(*js, tableName, suite3)); + + js->commitTransaction(); + js->close(); + registry.reset(0); + LOG(EJavaStorage, EInfo, "-TestMultiRegistry"); +} + +/** + * Test CJavaRegistry::RegistryEntryExistsL(TUid) method. + * 1. No UID in registry. + * 2. No matching UID on registry. + * 3. Suite UID found. + * 4. MIDlet UID found. + * 5. Query twice. + * 6. Query with TUid::Null(). Leaves KErrArgument. + */ +TEST(TestRegistry, TestEntryExists) +{ + LOG(EJavaStorage, EInfo, "+TestEntryExists"); + + auto_ptr registry(CJavaRegistry::NewL()); + TUid uid = TUid::Uid(3777185127); // e1234567 + + // 1. No UID in registry + TBool exists = registry->RegistryEntryExistsL(uid); + CHECK(false == exists); + + // 2. No matching UID on registry. + JavaStorageApplicationEntry_t populateEntry; + JavaStorageEntry attr; + + attr.setEntry(PACKAGE_ID, L"[e1234577]"); + populateEntry.insert(attr); + + Uid entryUid(L"[e1234588]"); + + attr.setEntry(ID, entryUid.toString()); + populateEntry.insert(attr); + + string tableName = APPLICATION_TABLE; + + js->open(JAVA_DATABASE_NAME); + js->startTransaction(); + + CHECK(jtu->populate(*js, tableName, populateEntry)); + + JavaStorageApplicationEntry_t packageEntry; + attr.setEntry(PACKAGE_NAME, L"MySuite"); + packageEntry.insert(attr); + + Uid entryUid2(L"[e1234577]"); + attr.setEntry(ID, entryUid2.toString()); + packageEntry.insert(attr); + + attr.setEntry(MEDIA_ID, L"-124614446"); + packageEntry.insert(attr); + + tableName = APPLICATION_PACKAGE_TABLE; + + CHECK(jtu->populate(*js, tableName, packageEntry)); + + // Session must be committed before next use of Registry otherwise + // it is locked. + js->commitTransaction(); + + exists = registry->RegistryEntryExistsL(uid); + CHECK(false == exists); + + // 3. Suite UID found. + uid = TUid::Uid(3777185143); // E1234577 aka suiteUID + + exists = registry->RegistryEntryExistsL(uid); + CHECK(true == exists); + + // 4. MIDlet UID found. + uid = TUid::Uid(3777185160); // E1234588 aka midletUID + + exists = registry->RegistryEntryExistsL(uid); + CHECK(true == exists); + + // 5. Query twice. This is second query + exists = registry->RegistryEntryExistsL(uid); + CHECK(true == exists); + + // 6. Query with TUid::Null() + uid = TUid::Null(); + + TRAPD(err, exists = registry->RegistryEntryExistsL(uid)); + CHECK(KErrArgument == err); + + // Clean + js->startTransaction(); + tableName = APPLICATION_TABLE; + CHECK(jtu->remove(*js, tableName, populateEntry)); + + tableName = APPLICATION_PACKAGE_TABLE; + CHECK(jtu->remove(*js, tableName, packageEntry)); + + js->commitTransaction(); + js->close(); + registry.reset(0); + LOG(EJavaStorage, EInfo, "-TestEntryExists"); +} + +/** + * Test CJavaRegistry::GetRegistryEntryUidsL(RArray) method. + * 1. No UID in registry. + * 2. Suite and MIDlet UID found. + * 3. Two MIDlets within same Suite. + * 4. Two suites and MIDlets. + * 5. Query twice. + * 6. Invalid uid is not added. + */ +TEST(TestRegistry, TestGetRegistryEntryUidsL) +{ + LOG(EJavaStorage, EInfo, "+TestGetRegistryEntryUidsL"); + auto_ptr registry(CJavaRegistry::NewL()); + + // 1. No UID in registry + RArray uids; + registry->GetRegistryEntryUidsL(uids); + CHECK(uids.Count() == 0); + + uids.Reset(); + + // 2. Suite and MIDlet UID found. + JavaStorageApplicationEntry_t populateEntry; + JavaStorageEntry attr; + + Uid suiteUid1(L"[e1234577]"); + attr.setEntry(PACKAGE_ID, suiteUid1.toString()); + populateEntry.insert(attr); + + Uid midletUid1(L"[e1234588]"); + + attr.setEntry(ID, midletUid1.toString()); + populateEntry.insert(attr); + + string tableName = APPLICATION_TABLE; + + js->open(JAVA_DATABASE_NAME); + js->startTransaction(); + CHECK(jtu->populate(*js, tableName, populateEntry)); + + JavaStorageApplicationEntry_t suite1; + attr.setEntry(PACKAGE_NAME, L"MySuite"); + suite1.insert(attr); + + attr.setEntry(ID, suiteUid1.toString()); + suite1.insert(attr); + + attr.setEntry(MEDIA_ID, L"-124614446"); + suite1.insert(attr); + + CHECK(jtu->populate(*js, APPLICATION_PACKAGE_TABLE, suite1)); + + // Session must be committed before next use of Registry otherwise + // it is locked. + js->commitTransaction(); + + registry->GetRegistryEntryUidsL(uids); + CHECK(uids.Count() == 2); + + TUid suiteUid; + uidToTUid(suiteUid1, suiteUid); + + CHECK(uids.Find(suiteUid) != KErrNotFound); + + TUid midletUid; + uidToTUid(midletUid1, midletUid); + + CHECK(uids.Find(midletUid) != KErrNotFound); + + uids.Reset(); + + // 3. Two MIDlets within same Suite. + JavaStorageApplicationEntry_t populateEntry2; + + attr.setEntry(PACKAGE_ID, suiteUid1.toString()); + populateEntry2.insert(attr); + + Uid midletUid2(L"[e123D58A]"); + + attr.setEntry(ID, midletUid2.toString()); + populateEntry2.insert(attr); + + js->open(JAVA_DATABASE_NAME); + js->startTransaction(); + CHECK(jtu->populate(*js, tableName, populateEntry2)); + + // Session must be committed before next use of Registry otherwise + // it is locked. + js->commitTransaction(); + + registry->GetRegistryEntryUidsL(uids); + CHECK(uids.Count() == 3); + + uidToTUid(suiteUid1, suiteUid); + CHECK(uids.Find(suiteUid) != KErrNotFound); + + uidToTUid(midletUid1, midletUid); + CHECK(uids.Find(midletUid) != KErrNotFound); + + uidToTUid(midletUid2, midletUid); + CHECK(uids.Find(midletUid) != KErrNotFound); + + uids.Reset(); + + // 4. Two suites and MIDlets. + JavaStorageApplicationEntry_t populateEntry3; + + Uid suiteUid2(L"[e12345AA]"); + attr.setEntry(PACKAGE_ID, suiteUid2.toString()); + populateEntry3.insert(attr); + + Uid midletUid3(L"[e12345DD]"); + + attr.setEntry(ID, midletUid3.toString()); + populateEntry3.insert(attr); + + js->open(JAVA_DATABASE_NAME); + js->startTransaction(); + CHECK(jtu->populate(*js, tableName, populateEntry3)); + + JavaStorageApplicationEntry_t suite2; + attr.setEntry(PACKAGE_NAME, L"MySuite"); + suite2.insert(attr); + + attr.setEntry(ID, suiteUid2.toString()); + suite2.insert(attr); + + attr.setEntry(MEDIA_ID, L"-124614446"); + suite2.insert(attr); + + CHECK(jtu->populate(*js, APPLICATION_PACKAGE_TABLE, suite2)); + + // Session must be committed before next use of Registry otherwise + // it is locked. + js->commitTransaction(); + + registry->GetRegistryEntryUidsL(uids); + CHECK(uids.Count() == 5); + + uidToTUid(suiteUid1, suiteUid); + CHECK(uids.Find(suiteUid) != KErrNotFound); + uidToTUid(suiteUid2, suiteUid); + CHECK(uids.Find(suiteUid) != KErrNotFound); + + uidToTUid(midletUid1, midletUid); + CHECK(uids.Find(midletUid) != KErrNotFound); + uidToTUid(midletUid2, midletUid); + CHECK(uids.Find(midletUid) != KErrNotFound); + uidToTUid(midletUid3, midletUid); + CHECK(uids.Find(midletUid) != KErrNotFound); + + uids.Reset(); + + // 5. Query twice. + registry->GetRegistryEntryUidsL(uids); + CHECK(uids.Count() == 5); + uids.Reset(); + + // 6. Invalid uid is not added. + JavaStorageApplicationEntry_t populateEntry4; + + attr.setEntry(PACKAGE_ID, L"[123G5678]"); + populateEntry4.insert(attr); + + attr.setEntry(ID, L"[e123G5DD]"); + populateEntry4.insert(attr); + + js->open(); + js->startTransaction(); + CHECK(jtu->populate(*js, tableName, populateEntry4)); + + // Session must be committed before next use of Registry otherwise + // it is locked. + js->commitTransaction(); + + registry->GetRegistryEntryUidsL(uids); + + // Invalid is not added + CHECK(uids.Count() == 5); + + uids.Reset(); + uids.Close(); + + CHECK(jtu->remove(*js, tableName, populateEntry)); + CHECK(jtu->remove(*js, tableName, populateEntry2)); + CHECK(jtu->remove(*js, tableName, populateEntry3)); + CHECK(jtu->remove(*js, tableName, populateEntry4)); + CHECK(jtu->remove(*js, APPLICATION_PACKAGE_TABLE, suite1)); + CHECK(jtu->remove(*js, APPLICATION_PACKAGE_TABLE, suite2)); + js->close(); + + registry.reset(0); + LOG(EJavaStorage, EInfo, "-TestGetRegistryEntryUidsL"); +} + +/** + * Test CJavaRegistry::GetRegistryEntryUidsL(Type, RArray) method. + * 1. No UID in registry for application type. + * 2. No UID in registry for suite type. + * 3. Unknown type. + * 4. Suite UID when MIDlet and suite populated. + * 5. General suite UID when MIDlet and suite populated. + * 6. MIDlet UID when MIDlet and suite populated. + * 7. General app UID when MIDlet and suite populated. + * 8. Two MIDlets within same Suite. + * 9. Two suites and MIDlets. + * 10. Invalid uid is not added. + * 11. Unknown type when app is populated. + */ +TEST(TestRegistry, TestGetRegistryEntryUidsL2) +{ + LOG(EJavaStorage, EInfo, "+TestGetRegistryEntryUidsL2"); + auto_ptr registry(CJavaRegistry::NewL()); + + // 1. No UID in registry for application type. + RArray uids; + registry->GetRegistryEntryUidsL(EGeneralApplication, uids); + CHECK(uids.Count() == 0); + + registry->GetRegistryEntryUidsL(EMidp2Midlet, uids); + CHECK(uids.Count() == 0); + + // 2. No UID in registry for suite type. + registry->GetRegistryEntryUidsL(EGeneralPackage, uids); + CHECK(uids.Count() == 0); + + registry->GetRegistryEntryUidsL(EMidp2MidletSuite, uids); + CHECK(uids.Count() == 0); + + // 3. Unknown type. + registry->GetRegistryEntryUidsL(EERCP, uids); + CHECK(uids.Count() == 0); + uids.Reset(); + + JavaStorageApplicationEntry_t populateEntry; + JavaStorageEntry attr; + + Uid suiteUid1(L"[e1234577]"); + attr.setEntry(PACKAGE_ID, suiteUid1.toString()); + populateEntry.insert(attr); + + Uid midletUid1(L"[e1234588]"); + attr.setEntry(ID, midletUid1.toString()); + populateEntry.insert(attr); + + string tableName = APPLICATION_TABLE; + + js->open(); + js->startTransaction(); + CHECK(jtu->populate(*js, tableName, populateEntry)); + + JavaStorageApplicationEntry_t suite1; + attr.setEntry(PACKAGE_NAME, L"MySuite"); + suite1.insert(attr); + + attr.setEntry(ID, suiteUid1.toString()); + suite1.insert(attr); + + attr.setEntry(MEDIA_ID, L"-124614446"); + suite1.insert(attr); + + CHECK(jtu->populate(*js, APPLICATION_PACKAGE_TABLE, suite1)); + + // Session must be committed before next use of Registry otherwise + // it is locked. + js->commitTransaction(); + + // 4. Suite UID when MIDlet and suite populated. + registry->GetRegistryEntryUidsL(EMidp2MidletSuite, uids); + CHECK(uids.Count() == 1); + uids.Reset(); + + // 5. General suite UID when MIDlet and suite populated. + registry->GetRegistryEntryUidsL(EGeneralPackage, uids); + CHECK(uids.Count() == 1); + uids.Reset(); + + // 6. MIDlet UID when MIDlet and suite populated. + registry->GetRegistryEntryUidsL(EMidp2Midlet, uids); + CHECK(uids.Count() == 1); + uids.Reset(); + + // 7. General app UID when MIDlet and suite populated. + registry->GetRegistryEntryUidsL(EGeneralApplication, uids); + CHECK(uids.Count() == 1); + uids.Reset(); + + // 8. Two MIDlets within same Suite. + JavaStorageApplicationEntry_t populateEntry2; + + attr.setEntry(PACKAGE_ID, suiteUid1.toString()); + populateEntry2.insert(attr); + + Uid midletUid2(L"[e123D58A]"); + + attr.setEntry(ID, midletUid2.toString()); + populateEntry2.insert(attr); + + js->startTransaction(); + CHECK(jtu->populate(*js, tableName, populateEntry2)); + + // Session must be committed before next use of Registry otherwise + // it is locked. + js->commitTransaction(); + + registry->GetRegistryEntryUidsL(EMidp2MidletSuite, uids); + CHECK(uids.Count() == 1); + + TUid suiteUid; + uidToTUid(suiteUid1, suiteUid); + CHECK(uids.Find(suiteUid) != KErrNotFound); + uids.Reset(); + + registry->GetRegistryEntryUidsL(EMidp2Midlet, uids); + CHECK(uids.Count() == 2); + uids.Reset(); + + registry->GetRegistryEntryUidsL(EGeneralApplication, uids); + CHECK(uids.Count() == 2); + + TUid midletUid; + uidToTUid(midletUid1, midletUid); + CHECK(uids.Find(midletUid) != KErrNotFound); + + uidToTUid(midletUid2, midletUid); + CHECK(uids.Find(midletUid) != KErrNotFound); + + uids.Reset(); + + // 9. Two suites and MIDlets. + JavaStorageApplicationEntry_t populateEntry3; + + Uid suiteUid2(L"[e12345AA]"); + attr.setEntry(PACKAGE_ID, suiteUid2.toString()); + populateEntry3.insert(attr); + + Uid midletUid3(L"[e12345DD]"); + attr.setEntry(ID, midletUid3.toString()); + populateEntry3.insert(attr); + + // js->open(); + js->startTransaction(); + CHECK(jtu->populate(*js, tableName, populateEntry3)); + + JavaStorageApplicationEntry_t suite2; + attr.setEntry(PACKAGE_NAME, L"MySuite"); + suite2.insert(attr); + + attr.setEntry(ID, suiteUid2.toString()); + suite2.insert(attr); + + attr.setEntry(MEDIA_ID, L"-124614446"); + suite2.insert(attr); + + CHECK(jtu->populate(*js, APPLICATION_PACKAGE_TABLE, suite2)); + + // Session must be committed before next use of Registry otherwise + // it is locked. + js->commitTransaction(); + + registry->GetRegistryEntryUidsL(EMidp2MidletSuite, uids); + CHECK(uids.Count() == 2); + + uidToTUid(suiteUid1, suiteUid); + CHECK(uids.Find(suiteUid) != KErrNotFound); + uidToTUid(suiteUid2, suiteUid); + CHECK(uids.Find(suiteUid) != KErrNotFound); + uids.Reset(); + + registry->GetRegistryEntryUidsL(EMidp2Midlet, uids); + CHECK(uids.Count() == 3); + + uidToTUid(midletUid1, midletUid); + CHECK(uids.Find(midletUid) != KErrNotFound); + uidToTUid(midletUid2, midletUid); + CHECK(uids.Find(midletUid) != KErrNotFound); + uidToTUid(midletUid3, midletUid); + CHECK(uids.Find(midletUid) != KErrNotFound); + + uids.Reset(); + + // 10. Invalid uid is not added. + JavaStorageApplicationEntry_t populateEntry4; + + attr.setEntry(PACKAGE_ID, L"[123G5678]"); + populateEntry4.insert(attr); + + attr.setEntry(ID, L"[e123G5DD]"); + populateEntry4.insert(attr); + + js->startTransaction(); + CHECK(jtu->populate(*js, tableName, populateEntry4)); + + // Session must be committed before next use of Registry otherwise + // it is locked. + js->commitTransaction(); + + registry->GetRegistryEntryUidsL(EMidp2MidletSuite, uids); + CHECK(uids.Count() == 2); + uids.Reset(); + + registry->GetRegistryEntryUidsL(EMidp2Midlet, uids); + CHECK(uids.Count() == 3); + uids.Reset(); + + // 11. Unknown type when app is populated. + registry->GetRegistryEntryUidsL(EERCP, uids); + CHECK(uids.Count() == 0); + uids.Reset(); + + CHECK(jtu->remove(*js, tableName, populateEntry)); + CHECK(jtu->remove(*js, tableName, populateEntry2)); + CHECK(jtu->remove(*js, tableName, populateEntry3)); + CHECK(jtu->remove(*js, tableName, populateEntry4)); + CHECK(jtu->remove(*js, APPLICATION_PACKAGE_TABLE, suite1)); + CHECK(jtu->remove(*js, APPLICATION_PACKAGE_TABLE, suite2)); + js->close(); + + registry.reset(0); + LOG(EJavaStorage, EInfo, "-TestGetRegistryEntryUidsL2"); +}