diff -r f5050f1da672 -r 04becd199f91 javamanager/javaregistry/legacy/tsrc/src/testinstalledappsregistry.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javaregistry/legacy/tsrc/src/testinstalledappsregistry.cpp Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,510 @@ +/* +* 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 "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" +#include "minstalledappsregistry.h" + +using namespace std; +using namespace Java; +using namespace java::storage; +using namespace java::util; + +TEST_GROUP(TestInstalledAppsRegistry) +{ + JavaStorage* js; + JavaStorageTestUtils* jtu; + + TEST_SETUP() + { + 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; + } +}; + +/** + * Test CInstalledAppsRegistry::InstalledUidsL(TUid) method. + * 1. Test no UIDs in registry. + * 2. Test one application in registry. One suite and one app. + * 3. Test two MIDlets within same Suite. + * 4. Test two suites and MIDlets. + */ +TEST(TestInstalledAppsRegistry, TestInstalledUidsL) +{ + LOG(EJavaStorage, EInfo, "+TestInstalledUidsL"); + MInstalledAppsRegistry* appsRegistry = MInstalledAppsRegistry::CreateL(); + CleanupReleasePushL(*appsRegistry); + + // 1. Test no UIDs in registry. + RArray uids; + appsRegistry->InstalledUidsL(uids); + CHECK(uids.Count() == 0); + + // 2. Test one application in registry. One suite and one app. + JavaStorageApplicationEntry_t populateEntry; + JavaStorageEntry attr; + + Uid suiteUid1(L"[e1111111]"); + attr.setEntry(PACKAGE_ID, suiteUid1.toString()); + populateEntry.insert(attr); + + Uid midletUid1(L"[e2222222]"); + + 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"TestMIDletByUidL"); + 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)); + js->commitTransaction(); + + appsRegistry->InstalledUidsL(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"[e1111112]"); + + attr.setEntry(ID, midletUid2.toString()); + populateEntry2.insert(attr); + + js->startTransaction(); + CHECK(jtu->populate(*js, tableName, populateEntry2)); + js->commitTransaction(); + + appsRegistry->InstalledUidsL(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"[e1111113]"); + attr.setEntry(PACKAGE_ID, suiteUid2.toString()); + populateEntry3.insert(attr); + + Uid midletUid3(L"[e2222223]"); + + attr.setEntry(ID, midletUid3.toString()); + populateEntry3.insert(attr); + + js->startTransaction(); + CHECK(jtu->populate(*js, tableName, populateEntry3)); + + JavaStorageApplicationEntry_t suite2; + attr.setEntry(PACKAGE_NAME, L"TestMIDletByUidL"); + 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)); + + js->commitTransaction(); + + appsRegistry->InstalledUidsL(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(); + + CHECK(jtu->remove(*js, tableName, populateEntry)); + CHECK(jtu->remove(*js, tableName, populateEntry2)); + CHECK(jtu->remove(*js, tableName, populateEntry3)); + CHECK(jtu->remove(*js, APPLICATION_PACKAGE_TABLE, suite1)); + CHECK(jtu->remove(*js, APPLICATION_PACKAGE_TABLE, suite2)); + + js->close(); + + CleanupStack::PopAndDestroy(appsRegistry); + LOG(EJavaStorage, EInfo, "-TestInstalledUidsL"); +} + +/** + * Test CInstalledAppsRegistry::EntryPresentL(TUid) method. + * 1. Test no UID in registry. + * 2. Test no matching UID on registry. + * 3. Test suite UID found. + * 4. Test mIDlet UID found. + * 5. Test query twice. + * 6. Test query with TUid::Null(). Leaves KErrArgument. + */ +TEST(TestInstalledAppsRegistry, TestEntryPresentL) +{ + LOG(EJavaStorage, EInfo, "+TestEntryPresentL"); + + MInstalledAppsRegistry* appsRegistry = MInstalledAppsRegistry::CreateL(); + CleanupReleasePushL(*appsRegistry); + + TUid uid = TUid::Uid(3777185127); // e1234567 + + // 1. No UID in registry + TBool exists = appsRegistry->EntryPresentL(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(); + 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); + + tableName = APPLICATION_PACKAGE_TABLE; + + attr.setEntry(MEDIA_ID, L"-124614446"); + packageEntry.insert(attr); + + CHECK(jtu->populate(*js, tableName, packageEntry)); + js->commitTransaction(); + + exists = appsRegistry->EntryPresentL(uid); + CHECK(false == exists); + + // 3. Suite UID found. + uid = TUid::Uid(3777185143); // E1234577 aka suiteUID + + exists = appsRegistry->EntryPresentL(uid); + CHECK(true == exists); + + // 4. MIDlet UID found. + uid = TUid::Uid(3777185160); // E1234588 aka midletUID + + exists = appsRegistry->EntryPresentL(uid); + CHECK(true == exists); + + // 5. Query twice. This is second query + exists = appsRegistry->EntryPresentL(uid); + CHECK(true == exists); + + // 6. Query with TUid::Null() + uid = TUid::Null(); + + TRAPD(err, exists = appsRegistry->EntryPresentL(uid)); + CHECK(KErrArgument == err); + + // Clean + js->startTransaction(); + CHECK(jtu->remove(*js, APPLICATION_TABLE, populateEntry)); + CHECK(jtu->remove(*js, APPLICATION_PACKAGE_TABLE, packageEntry)); + + js->commitTransaction(); + js->close(); + + CleanupStack::PopAndDestroy(appsRegistry); + LOG(EJavaStorage, EInfo, "-TestEntryPresentL"); +} + +/** + * Test CInstalledAppsRegistry::EntryL(TUid) method. + * 1. Test no UID in registry. + * 2. Test no matching UID on registry. + * 3. Test suite UID found. + * 4. Test MIDlet UID found. + * 5. Test query twice. + * 6. Test query with TUid::Null(). Leaves KErrArgument. + */ +TEST(TestInstalledAppsRegistry, TestEntryL) +{ + LOG(EJavaStorage, EInfo, "+TestEntryL"); + + MInstalledAppsRegistry* appsRegistry = MInstalledAppsRegistry::CreateL(); + CleanupReleasePushL(*appsRegistry); + TUid uid = TUid::Uid(3777185127); // e1234567 + + // 1. No UID in registry + MInstalledAppsRegistryEntry* entry = NULL; + TRAPD(err, appsRegistry->EntryL(uid)); + CHECK(KErrNotFound == err); + + // 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(); + 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); + + CHECK(jtu->populate(*js, APPLICATION_PACKAGE_TABLE, packageEntry)); + js->commitTransaction(); + + TRAP(err, entry = appsRegistry->EntryL(uid)); + CHECK(KErrNotFound == err); + + // 3. Suite UID found. + uid = TUid::Uid(3777185143); // E1234577 aka suiteUID + + entry = appsRegistry->EntryL(uid); + CleanupReleasePushL(*entry); + CHECK(entry != NULL); + CleanupStack::PopAndDestroy(entry); + + // 4. MIDlet UID found. + uid = TUid::Uid(3777185160); // E1234588 aka midletUID + + entry = appsRegistry->EntryL(uid); + CleanupReleasePushL(*entry); + CHECK(entry != NULL); + CleanupStack::PopAndDestroy(entry); + + // 5. Query twice. This is second query + uid = TUid::Uid(3777185160); // E1234588 aka midletUID + + entry = appsRegistry->EntryL(uid); + CleanupReleasePushL(*entry); + CHECK(entry != NULL); + CleanupStack::PopAndDestroy(entry); + + // 6. Query with TUid::Null() + uid = TUid::Null(); + + TRAP(err, entry = appsRegistry->EntryL(uid)); + CHECK(KErrArgument == err); + + // Clean + js->startTransaction(); + CHECK(jtu->remove(*js, APPLICATION_TABLE, populateEntry)); + CHECK(jtu->remove(*js, APPLICATION_PACKAGE_TABLE, packageEntry)); + + js->commitTransaction(); + js->close(); + + CleanupStack::PopAndDestroy(appsRegistry); + LOG(EJavaStorage, EInfo, "-TestEntryL"); +} + +/** + * Test CInstalledAppsRegistry::EntryLC(TUid) method. + * 1. Test no UID in registry. + * 2. Test no matching UID on registry. + * 3. Test suite UID found. + * 4. Test MIDlet UID found. + * 5. Test query twice. + * 6. Test query with TUid::Null(). Leaves KErrArgument. + */ +TEST(TestInstalledAppsRegistry, TestEntryLC) +{ + LOG(EJavaStorage, EInfo, "+TestEntryLC"); + + MInstalledAppsRegistry* appsRegistry = MInstalledAppsRegistry::CreateL(); + CleanupReleasePushL(*appsRegistry); + TUid uid = TUid::Uid(3777185127); // e1234567 + + // 1. No UID in registry + MInstalledAppsRegistryEntry* entry = NULL; + TRAPD(err, appsRegistry->EntryLC(uid)); + CHECK(KErrNotFound == err); + + // 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(); + 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); + + CHECK(jtu->populate(*js, APPLICATION_PACKAGE_TABLE, packageEntry)); + js->commitTransaction(); + + TRAP(err, entry = appsRegistry->EntryLC(uid)); + CHECK(KErrNotFound == err); + + // 3. Suite UID found. + uid = TUid::Uid(3777185143); // E1234577 aka suiteUID + + entry = appsRegistry->EntryLC(uid); + CHECK(entry != NULL); + + CleanupStack::PopAndDestroy(entry); + + // 4. MIDlet UID found. + uid = TUid::Uid(3777185160); // E1234588 aka midletUID + + entry = appsRegistry->EntryLC(uid); + + CHECK(entry != NULL); + CleanupStack::PopAndDestroy(entry); + + // 5. Query twice. This is second query + uid = TUid::Uid(3777185160); // E1234588 aka midletUID + entry = appsRegistry->EntryLC(uid); + CHECK(entry != NULL); + + CleanupStack::PopAndDestroy(entry); + + // 6. Query with TUid::Null() + uid = TUid::Null(); + + TRAP(err, entry = appsRegistry->EntryLC(uid)); + CHECK(KErrArgument == err); + + // Clean + js->startTransaction(); + CHECK(jtu->remove(*js, APPLICATION_TABLE, populateEntry)); + CHECK(jtu->remove(*js, APPLICATION_PACKAGE_TABLE, packageEntry)); + js->commitTransaction(); + js->close(); + + CleanupStack::PopAndDestroy(appsRegistry); + LOG(EJavaStorage, EInfo, "-TestEntryLC"); +}