diff -r 594d59766373 -r 7d48bed6ce0c vmbx/vmbxengine/tsrc/ut_vmbxengine/src/ut_vmbxengine.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vmbx/vmbxengine/tsrc/ut_vmbxengine/src/ut_vmbxengine.cpp Tue Aug 31 15:45:17 2010 +0300 @@ -0,0 +1,455 @@ +/* +* Copyright (c) 2010 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: Implementation of the Ut_VmbxEngine class +* +*/ + +#include +#include +#include +#include + +#include "ut_vmbxengine.h" + +_LIT(KNumber, "987654321"); +_LIT(KName, "Name"); +_LIT8(KBrandId, "Brand Id"); + +Ut_VmbxEngine::Ut_VmbxEngine(): mVmbx(NULL),mEntry(NULL) +{ + qDebug("Ut_VmbxEngine"); +} + +// ----------------------------------------------------------------------------- +// Ut_VmbxEngine::~Ut_VmbxEngine +// ----------------------------------------------------------------------------- +Ut_VmbxEngine::~Ut_VmbxEngine() +{ + delete mVmbx; + mVmbx = NULL; + delete mEntry; + mEntry = NULL; + qDebug("~Ut_VmbxEngine"); +} + +// Test API +void Ut_VmbxEngine::testVmbxApi() +{ + createVmbxApi(); + deleteVmbxApi(); +} + +void Ut_VmbxEngine::testEntryApi() +{ + createEntryApi(); + deleteEntryApi(); +} + +// Test Vmbx start +void Ut_VmbxEngine::testGetStoredEntry() +{ + createVmbxApi(); + + TVoiceMailboxParams params; + params.iType = EVmbxVoice; + CVoiceMailboxEntry *tmpEntry = NULL; + + QCOMPARE(mVmbx->GetStoredEntry(params, tmpEntry), KErrNone); + qDebug("Get entry"); + if (tmpEntry){ + delete tmpEntry; + tmpEntry = NULL; + qDebug("delete tmp entry pointer"); + } + + // Save a entry first, get and compare after that + createEntryApi(); + mEntry->SetVoiceMailboxType(EVmbxVoice); + mEntry->SetVmbxNumber(KNumber); + qDebug("Set type"); + QCOMPARE(mVmbx->SaveEntry(*mEntry), KErrNone); + qDebug("Save entry"); + deleteEntryApi(); + + params.iType = EVmbxVoice; + mVmbx->GetStoredEntry(params, tmpEntry); + qDebug("Get entry"); + if (tmpEntry){ + QCOMPARE(tmpEntry->VoiceMailboxType(), EVmbxVoice); + delete tmpEntry; + tmpEntry = NULL; + qDebug("delete tmp entry pointer"); + } + + deleteVmbxApi(); +} + +void Ut_VmbxEngine::testSaveEntry() +{ + createVmbxApi(); + + // Set some attributes to the new empty entry and save it + createEntryApi(); + mEntry->SetVoiceMailboxType(EVmbxVoice); + mEntry->SetUsingMemoryLocation(EVmbxPhoneMemory); + mEntry->SetVmbxNumber(KNumber); + qDebug("Set type & location"); + QCOMPARE(mVmbx->SaveEntry(*mEntry), KErrNone); + qDebug("Save entry"); + deleteEntryApi(); + + TVoiceMailboxParams params; + params.iType = EVmbxVoice; + CVoiceMailboxEntry *tmpEntry = NULL;; + mVmbx->GetStoredEntry(params, tmpEntry); + qDebug("Get entry"); + if (tmpEntry){ + QCOMPARE(tmpEntry->VoiceMailboxType(), EVmbxVoice); + qDebug("Verify type"); + QCOMPARE(tmpEntry->UsingMemoryLocation(), EVmbxPhoneMemory); + qDebug("Verify location"); + delete tmpEntry; + tmpEntry = NULL; + } + deleteVmbxApi(); +} + +void Ut_VmbxEngine::testQueryNewEntry() +{ + createVmbxApi(); + CVoiceMailboxEntry *tmpEntry = NULL; + TVoiceMailboxParams params; + + // Query a new voice entry + // Mock the CRepository + params.iType = EVmbxVoice; + QCOMPARE(mVmbx->QueryNewEntry(params, tmpEntry), KErrNone); + QVERIFY(tmpEntry); + QCOMPARE(tmpEntry->VoiceMailboxType(), EVmbxVoice); + delete tmpEntry; + tmpEntry = NULL; + + /* + // Query a new Video entry + params.iType = EVmbxVideo; + QCOMPARE(mVmbx->QueryNewEntry(params, tmpEntry), KErrNone); + QVERIFY(tmpEntry); + QCOMPARE(tmpEntry->VoiceMailboxType(), EVmbxVideo); + delete tmpEntry; + tmpEntry = NULL; + + // Query a new voice entry + params.iType = EVmbxVoip; + QCOMPARE(mVmbx->QueryNewEntry(params, tmpEntry), KErrNone); + QVERIFY(tmpEntry); + QCOMPARE(tmpEntry->VoiceMailboxType(), EVmbxVoip); + delete tmpEntry; + tmpEntry = NULL; + + // Query a unknown entry + params.iType = EVmbxNone; + QCOMPARE(mVmbx->QueryNewEntry(params, tmpEntry), KErrNone); + QVERIFY(tmpEntry); + QCOMPARE(tmpEntry->VoiceMailboxType(), EVmbxNone); + delete tmpEntry; + tmpEntry = NULL; + */ + deleteVmbxApi(); + +} + +void Ut_VmbxEngine::testQueryChangeEntry() +{ + createVmbxApi(); + + CVoiceMailboxEntry *tmpEntry = NULL;; + TVoiceMailboxParams params; + params.iType = EVmbxVoice; + // Always get KErrNotFound, Check why. + //QCOMPARE(mVmbx->QueryChangeEntry(params, tmpEntry), KErrNone); + mVmbx->QueryChangeEntry(params, tmpEntry); + //QVERIFY(tmpEntry); + delete tmpEntry; + tmpEntry = NULL; + + deleteVmbxApi(); +} + +void Ut_VmbxEngine::testQueryVmbxType() +{ + createVmbxApi(); + + // Save a entry first + CVoiceMailboxEntry *tmpEntry = NULL; + TVoiceMailboxParams params; + params.iType = EVmbxVoice; + QCOMPARE(mVmbx->QueryNewEntry(params, tmpEntry), KErrNone); + tmpEntry->SetVoiceMailboxType(EVmbxVoice); + tmpEntry->SetVmbxNumber(KNumber); + QCOMPARE(mVmbx->SaveEntry(*tmpEntry), KErrNone); + delete tmpEntry; + tmpEntry = NULL; + + // Query and compare vmbx type after saving + mVmbx->QueryVmbxType(params); + + deleteVmbxApi(); +} + +// TODO: Add 2 public test cases for notification, mock observer frist. +//void testNotifyVmbxNumberChangeL(); +//void NotifyVmbxNumberChangeCancel(); + +void Ut_VmbxEngine::testGetServiceIds() +{ + createVmbxApi(); + /* + // Save a entry first + createEntryApi(); + TServiceId idExp(10); + mEntry->SetServiceId(idExp); + mEntry->SetVoiceMailboxType(EVmbxVoip); + QCOMPARE(mVmbx->SaveEntry(*mEntry), KErrNone); + deleteEntryApi(); + + // Query and compare vmbx type after saving + RIdArray ids; + QCOMPARE(mVmbx->GetServiceIds(ids), KErrNone); + TServiceId idAct = ids[0]; + QCOMPARE(idAct, idExp); + */ + deleteVmbxApi(); +} + +void Ut_VmbxEngine::testCheckConfiguration() +{ + createVmbxApi(); + TVoiceMailboxParams params; + params.iType = EVmbxVoice; + TBool result = mVmbx->CheckConfiguration( + params, EVmbxChangeNbrAllowedOnUi); + if (!result) { + QEXPECT_FAIL("","voice not allowed changed", Continue); + } + params.iType = EVmbxVideo; + result = mVmbx->CheckConfiguration( + params,EVmbxChangeNbrAllowedOnUi); + if (!result) { + QEXPECT_FAIL("","video not allowed changed", Continue); + } + params.iType = EVmbxVoip; + result = mVmbx->CheckConfiguration( + params,EVmbxChangeNbrAllowedOnUi); + if (result) { + QFAIL ("voip failed"); + } + deleteVmbxApi(); +} + +void Ut_VmbxEngine::testSaveProvisionedEntry() +{ + createVmbxApi(); + // Voice + createEntryApi(); + mEntry->SetVoiceMailboxType(EVmbxVoice); + mEntry->SetVmbxNumber(KNumber); + QCOMPARE(mVmbx->SaveProvisionedEntry(*mEntry), KErrNone); + deleteEntryApi(); + + // Video + createEntryApi(); + mEntry->SetVoiceMailboxType(EVmbxVideo); + mEntry->SetVmbxNumber(KNumber); + QCOMPARE(mVmbx->SaveProvisionedEntry(*mEntry), KErrNone); + deleteEntryApi(); + + deleteVmbxApi(); +} +// Test Vmbx end + + +// Test Entry start +void Ut_VmbxEngine::testType() +{ + createEntryApi(); + mEntry->SetVoiceMailboxType(EVmbxNone); + QCOMPARE(mEntry->VoiceMailboxType(), EVmbxNone); + + mEntry->SetVoiceMailboxType(EVmbxVoice); + QCOMPARE(mEntry->VoiceMailboxType(), EVmbxVoice); + + mEntry->SetVoiceMailboxType(EVmbxVideo); + QCOMPARE(mEntry->VoiceMailboxType(), EVmbxVideo); + + deleteEntryApi(); +} + +void Ut_VmbxEngine::testName() +{ + createEntryApi(); + + // Valid string + TPtrC nameIn(KName); + mEntry->SetVmbxName(nameIn); + TPtrC nameOut(KNullDesC); + mEntry->GetVmbxName(nameOut); + QCOMPARE(nameOut, nameIn); + + // Invalid string +// HBufC *name = HBufC::NewLC(KVmbxMaxNumberLength+1); +// QCOMPARE(mEntry->SetVmbxName(name->Des()), KErrArgument); +// CleanupStack::PopAndDestroy(name); + + deleteEntryApi(); +} + +void Ut_VmbxEngine::testServiceId() +{ + createEntryApi(); + + TServiceId idIn(10); + mEntry->SetServiceId(idIn); + QCOMPARE(mEntry->ServiceId(), idIn); + + deleteEntryApi(); +} + +void Ut_VmbxEngine::testLineType() +{ + createEntryApi(); + + // Als is disable in TB10.1 + /* + mEntry->SetVmbxAlsLineType(EVmbxAlsLineDefault); + QCOMPARE(mEntry->VmbxAlsLineType(), EVmbxAlsLineDefault); + + mEntry->SetVmbxAlsLineType(EVmbxAlsLine1); + QCOMPARE(mEntry->VmbxAlsLineType(), EVmbxAlsLine1); + + mEntry->SetVmbxAlsLineType(EVmbxAlsLine2); + QCOMPARE(mEntry->VmbxAlsLineType(), EVmbxAlsLine2); + */ + deleteEntryApi(); +} + +void Ut_VmbxEngine::testNumber() +{ + createEntryApi(); + + // Valid number + TPtrC numberIn(KNumber); + mEntry->SetVmbxNumber(numberIn); + TPtrC numberOut(KNullDesC); + mEntry->GetVmbxNumber(numberOut); + QCOMPARE(numberOut, numberIn); + + // Invalid number +// HBufC *number = HBufC::NewLC(KVmbxMaxNumberLength+1); +// QCOMPARE(mEntry->SetVmbxNumber(number->Des()), KErrArgument); +// CleanupStack::PopAndDestroy(number); + + deleteEntryApi(); +} + +void Ut_VmbxEngine::testBrandId() +{ + createEntryApi(); + + // Valid braind id + TPtrC8 brandIn(KBrandId); + QCOMPARE(mEntry->SetBrandId(brandIn), KErrNone); + + TPtrC8 brandOut(KNullDesC8); + QCOMPARE(mEntry->GetBrandId(brandOut), KErrNone); + + if (brandOut.Compare(brandIn)){ + QFAIL("Fail to Set/Get BrandId"); + } + + // Invalid Brand Id +// HBufC8 *invalid = HBufC8::NewLC(KVmbxMaxNumberLength+1); +// QCOMPARE(mEntry->SetBrandId(invalid->Des()), KErrArgument); +// CleanupStack::PopAndDestroy(invalid); + + deleteEntryApi(); +} + +void Ut_VmbxEngine::testUsingMemoryLocation() +{ + createEntryApi(); + + mEntry->SetUsingMemoryLocation(EVmbxPhoneMemory); + QCOMPARE(mEntry->UsingMemoryLocation(), EVmbxPhoneMemory); + + mEntry->SetUsingMemoryLocation(EVmbxSimMemory); + QCOMPARE(mEntry->UsingMemoryLocation(), EVmbxSimMemory); + + deleteEntryApi(); +} + +void Ut_VmbxEngine::testReset() +{ + createEntryApi(); + + mEntry->Reset(); + QCOMPARE(mEntry->ServiceId(), KVmbxServiceIdNone); + QCOMPARE(mEntry->VoiceMailboxType(), EVmbxNone); + QCOMPARE(mEntry->VmbxAlsLineType(), EVmbxAlsLineDefault); + + TPtrC8 brand(KNullDesC8); + QCOMPARE(mEntry->GetBrandId(brand), KErrNotFound); + + TPtrC name; + QCOMPARE(mEntry->GetVmbxName(name), KErrNotFound); + + TPtrC number; + QCOMPARE(mEntry->GetVmbxNumber(number), KErrNotFound); + + QCOMPARE(mEntry->UsingMemoryLocation(), EVmbxSimMemory); + + deleteEntryApi(); +} +// Test Entry end + +// Private function: create 2 data member +void Ut_VmbxEngine::createVmbxApi() +{ + if (!mVmbx){ + TRAPD( err, mVmbx = CVoiceMailbox::NewL()); + QVERIFY(mVmbx); + qDebug("Create vmbx api TRAP: %d", err); + } +} +void Ut_VmbxEngine::deleteVmbxApi() +{ + delete mVmbx; + mVmbx = NULL; + qDebug("Delete vmbx api"); +} +void Ut_VmbxEngine::createEntryApi() +{ + if (!mEntry){ + TRAPD( err, mEntry = CVoiceMailboxEntry::NewL()); + QVERIFY(mEntry); + qDebug("Create entry Api TRAP: %d", err); + } +} + +void Ut_VmbxEngine::deleteEntryApi() +{ + delete mEntry; + mEntry = NULL; + qDebug("Delete entry api"); +} +// End of file