--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/server/tsrc/t_tsstorage/t_tsstorage.cpp Thu Sep 16 12:11:40 2010 +0100
@@ -0,0 +1,128 @@
+/*
+* 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 <QtTest/QtTest>
+#include "tsstorage.h"
+#include "t_tsstorage.h"
+#include "t_tsmodel.h"
+
+const int KBigSet(100);
+
+void T_TsStorage::testItemDataChanged()
+{
+ CTsStorage* storage(0);
+ T_TsModel emptyProvider(0),
+ bigSetProvider(KBigSet);
+ RPointerArray<MTsModel>providers;
+ CleanupClosePushL(providers);
+
+ //storage has no data providers
+ mNotifications = 0;
+ storage = CTsStorage::NewL(providers.Array());
+ storage->dataChanged(bigSetProvider.itemL(0));
+ QVERIFY(0 == mNotifications);//storage has no observers
+ verifyProviders(*storage, providers.Array());
+ storage->setObserver(this);
+ storage->dataChanged(bigSetProvider.itemL(0));
+ QVERIFY(1 == mNotifications);//storage has observers
+ verifyProviders(*storage, providers.Array());
+ delete storage;
+
+ providers.Append(&emptyProvider);
+ providers.Append(&bigSetProvider);
+
+ //storage has some
+ mNotifications = 0;
+ storage = CTsStorage::NewL(providers.Array());
+ storage->dataChanged(bigSetProvider.itemL(0));
+ QVERIFY(0 == mNotifications);//storage has no observers
+ verifyProviders(*storage, providers.Array());
+ storage->setObserver(this);
+ storage->dataChanged(bigSetProvider.itemL(0));
+ QVERIFY(1 == mNotifications);//storage has observers
+ verifyProviders(*storage, providers.Array());
+ delete storage;
+ CleanupStack::PopAndDestroy(&providers);
+}
+
+void T_TsStorage::testModelDataChanged()
+{
+ CTsStorage* storage(0);
+ T_TsModel emptyProvider(0),
+ bigSetProvider(KBigSet);
+ RPointerArray<MTsModel>providers;
+ CleanupClosePushL(providers);
+
+ //storage has no data providers
+ mNotifications = 0;
+ storage = CTsStorage::NewL(providers.Array());
+ storage->dataChanged(emptyProvider);
+ QVERIFY(0 == mNotifications);//storage has no observers
+ verifyProviders(*storage, providers.Array());
+ storage->setObserver(this);
+ storage->dataChanged(emptyProvider);
+ QVERIFY(1 == mNotifications);//storage has observers
+ verifyProviders(*storage, providers.Array());
+ delete storage;
+
+ providers.Append(&emptyProvider);
+ providers.Append(&bigSetProvider);
+
+ //storage has some
+ mNotifications = 0;
+ storage = CTsStorage::NewL(providers.Array());
+ storage->dataChanged(emptyProvider);
+ QVERIFY(0 == mNotifications);//storage has no observers
+ verifyProviders(*storage, providers.Array());
+ storage->setObserver(this);
+ storage->dataChanged(emptyProvider);
+ QVERIFY(1 == mNotifications);//storage has observers
+ verifyProviders(*storage, providers.Array());
+ delete storage;
+ CleanupStack::PopAndDestroy(&providers);
+}
+
+void T_TsStorage::verifyProviders(const MTsModel &set, const TArray<MTsModel*>& providers)
+{
+ int sum(0);
+ for (int iter(0); iter < providers.Count(); ++iter) {
+ sum += (providers[iter])->count();
+ QVERIFY(set.count() >= (providers[iter])->count());
+ QVERIFY(EFalse != isSubset(set, *(providers[iter])));
+ }
+ QVERIFY(set.count() == sum);
+}
+
+TBool T_TsStorage::isSubset(const MTsModel &set, const MTsModel& subset) const
+{
+ bool isOk = true;
+ for (int i(0); i < subset.count() && isOk; ++i) {
+ isOk = false;
+ for(int k(0); k < set.count() && !isOk; ++k){
+ set.itemL(k).launchL();
+ set.itemL(k).closeL();
+ isOk = (subset.itemL(i).keyL() == set.itemL(k).keyL()) &&
+ (subset.itemL(i).timestampL() == set.itemL(k).timestampL()) &&
+ (subset.itemL(i).iconHandleL() == set.itemL(k).iconHandleL()) &&
+ (subset.itemL(i).isActiveL() == set.itemL(k).isActiveL()) &&
+ (subset.itemL(i).isClosableL() == set.itemL(k).isClosableL()) &&
+ (0 == subset.itemL(i).displayNameL().Compare(set.itemL(k).displayNameL()));
+ }
+ }
+ return isOk ? ETrue : EFalse;
+}
+
+QTEST_MAIN(T_TsStorage)