--- /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 <EUnitMacros.h>
+#include <EUnitDecorators.h>
+#include <nsmldevinfextdatacontainerplugin.h>
+
+// 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