--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/logsengine/tsrc/ut_logsengine/src/ut_logsduplicatelookup.cpp Thu Sep 02 20:27:05 2010 +0300
@@ -0,0 +1,182 @@
+/*
+* 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 "ut_logsduplicatelookup.h"
+#include "logsduplicatelookup.h"
+#include "logsevent.h"
+#include <QtTest/QtTest>
+
+QString testDir1key1 = "remote1/t1111";
+QString testDir1key2 = "remote2/t1111";
+
+QString testDir2key1 = "remote1/t2222";
+
+QString testDir3key1 = "remote1/t3333";
+QString testDir3key2 = "remote2/t3333";
+QString testDir3key3 = "remote3/t3333";
+
+
+void UT_LogsDuplicateLookup::initTestCase()
+{
+ mLookup = new LogsDuplicateLookup();
+}
+
+void UT_LogsDuplicateLookup::cleanupTestCase()
+{
+ delete mLookup;
+ mLookup = NULL;
+}
+
+void UT_LogsDuplicateLookup::init()
+{
+}
+
+void UT_LogsDuplicateLookup::cleanup()
+{
+}
+
+void UT_LogsDuplicateLookup::testConstructor()
+{
+ QVERIFY( mLookup );
+ QCOMPARE( mLookup->mDirectionLookupTables.count(), 3 );
+}
+
+void UT_LogsDuplicateLookup::testInvalidate()
+{
+ createTestData();
+ LogsEvent ev1;
+ mLookup->mDirectionLookupTables.at(1)->find(testDir2key1).value() = &ev1;
+ LogsEvent ev2;
+ mLookup->mDirectionLookupTables.at(2)->find(testDir3key2).value() = &ev2;
+ mLookup->invalidate();
+ QVERIFY( mLookup->mDirectionLookupTables.at(0)->find(testDir1key1).value() == 0 );
+ QVERIFY( mLookup->mDirectionLookupTables.at(1)->find(testDir2key1).value() == 0 );
+ QVERIFY( mLookup->mDirectionLookupTables.at(2)->find(testDir3key2).value() == 0 );
+
+}
+void UT_LogsDuplicateLookup::testCleanup()
+{
+ createTestData();
+
+ // All expect one with value are cleared
+ QCOMPARE( mLookup->mDirectionLookupTables.at(0)->count(), 2 );
+ QCOMPARE( mLookup->mDirectionLookupTables.at(1)->count(), 1 );
+ QCOMPARE( mLookup->mDirectionLookupTables.at(2)->count(), 3 );
+
+ LogsEvent ev1;
+ mLookup->mDirectionLookupTables.at(2)->find(testDir3key2).value() = &ev1;
+ mLookup->cleanup();
+ QCOMPARE( mLookup->mDirectionLookupTables.at(0)->count(), 0 );
+ QCOMPARE( mLookup->mDirectionLookupTables.at(1)->count(), 0 );
+ QCOMPARE( mLookup->mDirectionLookupTables.at(2)->count(), 1 );
+ QVERIFY( mLookup->mDirectionLookupTables.at(2)->find(testDir3key2).value() == &ev1 );
+
+}
+void UT_LogsDuplicateLookup::testAddLookupEntry()
+{
+ // Event does not have remote name
+ LogsEvent ev;
+ ev.setLogId(100);
+ QVERIFY( mLookup->addLookupEntry(ev) == -1 );
+
+ // Event contains wrong direction
+ ev.setRemoteParty("remote1");
+ ev.setNumber("1234");
+ QVERIFY( mLookup->addLookupEntry(ev) == -1 );
+
+ // No key yet for the event, key is generated from remote name and number
+ ev.setDirection(LogsEvent::DirIn);
+ QVERIFY( mLookup->addLookupEntry(ev) == 0 );
+ QVERIFY( mLookup->mDirectionLookupTables.at(LogsEvent::DirIn)->find( "remote1/t1234" ).value() == &ev );
+
+ // Several keys exists and value for matching key exists, value not changed
+ createTestData();
+ QVERIFY( mLookup->addLookupEntry(ev) == 0 );
+ LogsEvent ev2;
+ ev2.setDirection(LogsEvent::DirIn);
+ ev2.setRemoteParty("remote1");
+ ev2.setNumber("1234");
+ ev2.setLogId(200);
+ QVERIFY( mLookup->addLookupEntry(ev2) == 0 );
+ QVERIFY( mLookup->mDirectionLookupTables.at(LogsEvent::DirIn)->find( "remote1/t1234" ).value() == &ev );
+
+ // This direction entry does not exists, entry is added
+ ev2.setDirection(LogsEvent::DirOut);
+ QVERIFY( mLookup->addLookupEntry(ev2) == 0 );
+ QVERIFY( mLookup->mDirectionLookupTables.at(LogsEvent::DirOut)->find( "remote1/t1234" ).value() == &ev2 );
+
+ // Several keys exists and no value for matching key, value is set
+ mLookup->mDirectionLookupTables.at(LogsEvent::DirIn)->find( "remote1/t1234" ).value() = 0;
+ ev2.setDirection(LogsEvent::DirIn);
+ QVERIFY( mLookup->addLookupEntry(ev2) == 0 );
+ QVERIFY( mLookup->mDirectionLookupTables.at(LogsEvent::DirIn)->find( "remote1/t1234" ).value() == &ev2 );
+}
+void UT_LogsDuplicateLookup::testFindDuplicate()
+{
+ // Not valid search term
+ LogsEvent ev;
+ ev.setLogId(100);
+ QVERIFY( mLookup->findDuplicate(ev) == 0 );
+
+ createTestData();
+ LogsEvent ev1;
+ mLookup->mDirectionLookupTables.at(2)->find(testDir3key2).value() = &ev1;
+ LogsEvent ev2;
+ mLookup->mDirectionLookupTables.at(2)->find(testDir3key3).value() = &ev2;
+ LogsEvent searchTerm;
+ searchTerm.setDirection(LogsEvent::DirIn);
+ searchTerm.setRemoteParty("remote1");
+ searchTerm.setNumber("1111");
+ QVERIFY( mLookup->findDuplicate(searchTerm) == 0 );
+
+ searchTerm.setDirection(LogsEvent::DirMissed);
+ searchTerm.setRemoteParty("remote2");
+ searchTerm.setNumber("3333");
+ QVERIFY( mLookup->findDuplicate(searchTerm) == &ev1 );
+
+ searchTerm.setRemoteParty("remote3");
+ QVERIFY( mLookup->findDuplicate(searchTerm) == &ev2 );
+
+ // Check that duplicate lookup works with international format also
+ LogsEvent ev5;
+ ev5.setDirection(LogsEvent::DirOut);
+ ev5.setRemoteParty("remote2");
+ ev5.setNumber("+358504443333");
+ mLookup->addLookupEntry(ev5);
+ LogsEvent searchTerm2;
+ searchTerm2.setDirection(LogsEvent::DirOut);
+ searchTerm2.setRemoteParty("remote2");
+ searchTerm2.setNumber("0504443333");
+ QVERIFY( mLookup->findDuplicate(searchTerm2) == &ev5 );
+
+}
+
+void UT_LogsDuplicateLookup::createTestData()
+{
+ foreach( LogsLookupHash* dir, mLookup->mDirectionLookupTables ){
+ dir->clear();
+ }
+ mLookup->mDirectionLookupTables.at(0)->insert(testDir1key1, 0);
+ mLookup->mDirectionLookupTables.at(0)->insert(testDir1key2, 0);
+
+ mLookup->mDirectionLookupTables.at(1)->insert(testDir2key1, 0);
+
+ mLookup->mDirectionLookupTables.at(2)->insert(testDir3key1, 0);
+ mLookup->mDirectionLookupTables.at(2)->insert(testDir3key2, 0);
+ mLookup->mDirectionLookupTables.at(2)->insert(testDir3key3, 0);
+}