diff -r 13d7c31c74e0 -r b183ec05bd8c remotemgmt_plat/syncml_ds_customization_api/tsrc/devinfextmgmtinterface/devinfextmgmtif_test.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/remotemgmt_plat/syncml_ds_customization_api/tsrc/devinfextmgmtinterface/devinfextmgmtif_test.cpp Tue Aug 31 16:04:06 2010 +0300 @@ -0,0 +1,339 @@ +/* +* 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: Source code file for device info extension management +* interface unit tests. +* +*/ + +// CLASS HEADER +#include "devinfextmgmtif_test.h" + +// EXTERNAL INCLUDES +#include +#include +#include + +// INTERNAL INCLUDES +#include "exampledevinfextdatacontainerplugin.h" + +// LOCAL DEFINITIONS +namespace + { + _LIT8( KTestXNam1, "TestExtensionName" ); + _LIT8( KTestXNam2, "AnotherExtensionName" ); + _LIT8( KTestXNam3, "ExtensionNameWithNoValues" ); + + _LIT8( KTestXVal1, "FirstValue" ); + _LIT8( KTestXVal2, "SecondValue" ); + _LIT8( KTestXVal3, "ThirdValue" ); + _LIT8( KTestXVal4, "FourthValue" ); + } + +// - Construction ----------------------------------------------------------- +CDevInfExtMgmtIf_Test* CDevInfExtMgmtIf_Test::NewL() + { + CDevInfExtMgmtIf_Test* self = CDevInfExtMgmtIf_Test::NewLC(); + CleanupStack::Pop( self ); + return self; + } + +CDevInfExtMgmtIf_Test* CDevInfExtMgmtIf_Test::NewLC() + { + CDevInfExtMgmtIf_Test* self = new ( ELeave ) CDevInfExtMgmtIf_Test(); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +CDevInfExtMgmtIf_Test::~CDevInfExtMgmtIf_Test() + { + if( iEcomPlugin ) + { + delete iEcomPlugin; + REComSession::FinalClose(); + } + } + +CDevInfExtMgmtIf_Test::CDevInfExtMgmtIf_Test() + { + } + +void CDevInfExtMgmtIf_Test::ConstructL() + { + CEUnitTestSuiteClass::ConstructL(); + } + +// - Setup & Teardown --------------------------------------------------------- + +void CDevInfExtMgmtIf_Test::SetupEmptyL() + { + // Construct the plugin normally; in its default construction, no + // extensions are available. + TRAPD( err, iEcomPlugin = CNSmlDevInfExtDataContainerPlugin::NewL() ); + if( err != KErrNone ) + { + EUNIT_PRINT( _L( "Leave while instantiating plugin: %d" ), err ); + } + EUNIT_ASSERT_DESC( iEcomPlugin, "Plugin instantiation failed." ); + } + +void CDevInfExtMgmtIf_Test::SetupOneXNamL() + { + // Default construction + SetupEmptyL(); + + // Add XNam + XVals + CExampleDevInfExtDataContainerPlugin* plugin = + reinterpret_cast < CExampleDevInfExtDataContainerPlugin* >( iEcomPlugin ); + + plugin->InsertExtension( KTestXNam1, KTestXVal1 ); + plugin->InsertExtension( KTestXNam1, KTestXVal2 ); + } + +void CDevInfExtMgmtIf_Test::SetupMultipleXNamL() + { + // Default construction + SetupEmptyL(); + + // Add XNam + XVals + CExampleDevInfExtDataContainerPlugin* plugin = + reinterpret_cast < CExampleDevInfExtDataContainerPlugin* >( iEcomPlugin ); + + plugin->InsertExtension( KTestXNam1, KTestXVal1 ); + plugin->InsertExtension( KTestXNam1, KTestXVal2 ); + plugin->InsertExtension( KTestXNam2, KTestXVal3 ); + plugin->InsertExtension( KTestXNam2, KTestXVal4 ); + plugin->InsertExtension( KTestXNam3, KNullDesC8 ); + } + +void CDevInfExtMgmtIf_Test::Teardown() + { + if( iEcomPlugin ) + { + delete iEcomPlugin; + } + REComSession::FinalClose(); + } + +// - Actual test methods ------------------------------------------------------ +void CDevInfExtMgmtIf_Test::NewLL() + { + // Instantiate the example plugin + CNSmlDevInfExtDataContainerPlugin* ecomPlugin = NULL; + + // Instantiate the plugin + TRAPD( err, ecomPlugin = CNSmlDevInfExtDataContainerPlugin::NewL() ); + if( err != KErrNone ) + { + EUNIT_PRINT( _L( "Leave while instantiating plugin: %d" ), err ); + } + + EUNIT_ASSERT( ecomPlugin ); + delete ecomPlugin; + ecomPlugin = NULL; + + // Tell the framework that plugin is no longer used - resources are released + REComSession::FinalClose(); + } + +// Run tests for the test plugin, when there are no extension configured +// in the plugin. +void CDevInfExtMgmtIf_Test::TestEmptyPluginL() + { + // Debug + PrintExtensions(); + + TInt extCount = 0; + TRAPD( err, extCount = iEcomPlugin->GetExtensionCountL() ); + EUNIT_ASSERT_DESC( err == KErrNone, "GetExtensionCountL() leaves" ); + EUNIT_ASSERT( extCount == 0 ); + + // Ensure that other methods leave, as there are not extensions + TRAP( err, iEcomPlugin->GetExtNameL( 0 ) ); + EUNIT_ASSERT( err == KErrArgument ); + TRAP( err, iEcomPlugin->GetExtNameL( 1 ) ); + EUNIT_ASSERT( err == KErrArgument ); + + TRAP( err, iEcomPlugin->GetExtValueCountL( 0 ) ); + EUNIT_ASSERT( err == KErrArgument ); + TRAP( err, iEcomPlugin->GetExtValueCountL( 1 ) ); + EUNIT_ASSERT( err == KErrArgument ); + + TRAP( err, iEcomPlugin->GetExtValueL( 0, 0 ) ); + EUNIT_ASSERT( err == KErrArgument ); + } + +// Run tests for the test plugin, when there is one extension configured +// in the plugin. +void CDevInfExtMgmtIf_Test::TestOneXNamPluginL() + { + // Debug + PrintExtensions(); + + TInt extCount = 0; + TRAPD( err, extCount = iEcomPlugin->GetExtensionCountL() ); + EUNIT_ASSERT_DESC( err == KErrNone, "GetExtensionCountL() leaves" ); + EUNIT_ASSERT( extCount == 1 ); + + // Check legal values + TBuf8< 50 > tmpBuf; + EUNIT_ASSERT_NO_LEAVE( tmpBuf = iEcomPlugin->GetExtNameL( 0 ) ); + EUNIT_ASSERT( tmpBuf.Compare( KTestXNam1 ) == 0 ); + + TInt xValCount = 0; + EUNIT_ASSERT_NO_LEAVE( xValCount = iEcomPlugin->GetExtValueCountL( 0 ) ); + EUNIT_ASSERT( xValCount == 2 ); + + tmpBuf.Zero(); + EUNIT_ASSERT_NO_LEAVE( tmpBuf = iEcomPlugin->GetExtValueL( 0, 0 ) ); + EUNIT_ASSERT( tmpBuf.Compare( KTestXVal1 ) == 0 ); + tmpBuf.Zero(); + EUNIT_ASSERT_NO_LEAVE( tmpBuf = iEcomPlugin->GetExtValueL( 0, 1 ) ); + EUNIT_ASSERT( tmpBuf.Compare( KTestXVal2 ) == 0 ); + + // Ensure that methods leave with illegal indices + TRAP( err, iEcomPlugin->GetExtNameL( 1 ) ); + EUNIT_ASSERT( err == KErrArgument ); + + TRAP( err, iEcomPlugin->GetExtValueCountL( 1 ) ); + EUNIT_ASSERT( err == KErrArgument ); + + TRAP( err, iEcomPlugin->GetExtValueL( 1, 0 ) ); + EUNIT_ASSERT( err == KErrArgument ); + } + +// Run tests for the test plugin, when there are multiple extensions configured +// in the plugin. +void CDevInfExtMgmtIf_Test::TestMultipleXNamPluginL() + { + // Debug + PrintExtensions(); + + TInt extCount = 0; + TRAPD( err, extCount = iEcomPlugin->GetExtensionCountL() ); + EUNIT_ASSERT_DESC( err == KErrNone, "GetExtensionCountL() leaves" ); + EUNIT_ASSERT( extCount == 3 ); + + // Check legal values + // 1st extension (index 0) + TBuf8< 50 > tmpBuf; + EUNIT_ASSERT_NO_LEAVE( tmpBuf = iEcomPlugin->GetExtNameL( 0 ) ); + EUNIT_ASSERT( tmpBuf.Compare( KTestXNam1 ) == 0 ); + + TInt xValCount = 0; + EUNIT_ASSERT_NO_LEAVE( xValCount = iEcomPlugin->GetExtValueCountL( 0 ) ); + EUNIT_ASSERT( xValCount == 2 ); + + tmpBuf.Zero(); + EUNIT_ASSERT_NO_LEAVE( tmpBuf = iEcomPlugin->GetExtValueL( 0, 0 ) ); + EUNIT_ASSERT( tmpBuf.Compare( KTestXVal1 ) == 0 ); + tmpBuf.Zero(); + EUNIT_ASSERT_NO_LEAVE( tmpBuf = iEcomPlugin->GetExtValueL( 0, 1 ) ); + EUNIT_ASSERT( tmpBuf.Compare( KTestXVal2 ) == 0 ); + + // 2nd extension (index 1) + tmpBuf.Zero(); + EUNIT_ASSERT_NO_LEAVE( tmpBuf = iEcomPlugin->GetExtNameL( 1 ) ); + EUNIT_ASSERT( tmpBuf.Compare( KTestXNam2 ) == 0 ); + + xValCount = 0; + EUNIT_ASSERT_NO_LEAVE( xValCount = iEcomPlugin->GetExtValueCountL( 1 ) ); + EUNIT_ASSERT( xValCount == 2 ); + + tmpBuf.Zero(); + EUNIT_ASSERT_NO_LEAVE( tmpBuf = iEcomPlugin->GetExtValueL( 1, 0 ) ); + EUNIT_ASSERT( tmpBuf.Compare( KTestXVal3 ) == 0 ); + tmpBuf.Zero(); + EUNIT_ASSERT_NO_LEAVE( tmpBuf = iEcomPlugin->GetExtValueL( 1, 1 ) ); + EUNIT_ASSERT( tmpBuf.Compare( KTestXVal4 ) == 0 ); + + // 3nd extension (index 2) + EUNIT_ASSERT_NO_LEAVE( tmpBuf = iEcomPlugin->GetExtNameL( 2 ) ); + EUNIT_ASSERT( tmpBuf.Compare( KTestXNam3 ) == 0 ); + + xValCount = 0; + EUNIT_ASSERT_NO_LEAVE( xValCount = iEcomPlugin->GetExtValueCountL( 2 ) ); + EUNIT_ASSERT( xValCount == 0 ); + + // Ensure that methods leave with illegal indices + TRAP( err, iEcomPlugin->GetExtNameL( -1 ) ); + EUNIT_ASSERT( err == KErrArgument ); + + TRAP( err, iEcomPlugin->GetExtValueCountL( 3 ) ); + EUNIT_ASSERT( err == KErrArgument ); + + TRAP( err, iEcomPlugin->GetExtValueL( 5, 2 ) ); + EUNIT_ASSERT( err == KErrArgument ); + } + +// - Utilities ---------------------------------------------------------------- +void CDevInfExtMgmtIf_Test::PrintExtensions() + { + EUNIT_PRINT( _L( "Extension count %d" ), iEcomPlugin->GetExtensionCountL() ); + + for ( TInt i = 0; i < iEcomPlugin->GetExtensionCountL(); i++ ) + { + EUNIT_PRINT( _L("EXTENSION NUMBER %d"), i ); + + EUNIT_PRINT( _L( "Name" ) ); + EUNIT_PRINT( iEcomPlugin->GetExtNameL( i ) ); + + EUNIT_PRINT( _L( "Values" ) ); + for ( TInt j = 0; j < iEcomPlugin->GetExtValueCountL( i ); j++ ) + { + EUNIT_PRINT( iEcomPlugin->GetExtValueL( i, j ) ); + } + + EUNIT_PRINT( _L("END OF EXTENSION %d"), i ); + } + } + +// - EUnit test table ------------------------------------------------------- + +EUNIT_BEGIN_TEST_TABLE( + CDevInfExtMgmtIf_Test, + "Unit tests for Device info ext management interface.", + "UNIT" ) + +EUNIT_TEST( + "Verify Ecom plugin instantiation", + "CNSmlDevInfExtDataContainerPlugin", + "NewL", + "FUNCTIONALITY", + Empty, NewLL, Empty) + +EUNIT_TEST( + "Test the behaviour with no extensions", + "CNSmlDevInfExtDataContainerPlugin", + "NewL", + "FUNCTIONALITY", + SetupEmptyL, TestEmptyPluginL, Teardown) + +EUNIT_TEST( + "Test the behaviour with one extension", + "CNSmlDevInfExtDataContainerPlugin", + "NewL", + "FUNCTIONALITY", + SetupOneXNamL, TestOneXNamPluginL, Teardown) + +EUNIT_TEST( + "Test the behaviour with multiple extensions", + "CNSmlDevInfExtDataContainerPlugin", + "NewL", + "FUNCTIONALITY", + SetupMultipleXNamL, TestMultipleXNamPluginL, Teardown) + +EUNIT_END_TEST_TABLE + +// End of file