diff -r f27aebe284bb -r c5af8598d22c logsui/logsengine/tsrc/ut_logsengine/src/ut_logsduplicatelookup.cpp --- /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 + +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); +}