--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/photosgallery/viewframework/commandhandlers/tsrc/ut__commandhandlermarking/src/t_glxcommandhandlermarking.cpp Thu Dec 17 08:45:44 2009 +0200
@@ -0,0 +1,563 @@
+/*
+* Copyright (c) 2006 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: CommandHandlerMarking unit test cases
+*
+*/
+
+
+
+
+// CLASS HEADER
+#include "t_glxcommandhandlermarking.h"
+
+// EXTERNAL INCLUDES
+#include <EUnitMacros.h>
+#include <EUnitDecorators.h>
+
+#include <avkon.hrh>
+
+#include <mglxmedialist.h>
+#include <glxattributeretriever.h>
+#include <glxscreenfurniture.h>
+
+// INTERNAL INCLUDES
+
+//
+CGlxMedia::CGlxMedia(const TGlxMediaId& aId)
+ : iId(aId)
+ {
+ }
+
+CGlxMedia::~CGlxMedia()
+ {
+ Reset();
+ iValues.Close();
+ iAttributes.Close();
+ }
+
+class _CGlxTestMediaList: public CBase, public MGlxMediaList
+ {
+public:
+ ~_CGlxTestMediaList()
+ {
+ iItems.Close();
+ iMedia.ResetAndDestroy();
+ iSelectedItems.Close();
+ }
+
+ virtual void Close()
+ {
+ };
+ virtual TGlxMediaListId Id() const
+ {
+ return KGlxIdNone;
+ }
+
+ virtual TInt Count(NGlxListDefs::TCountType /*aType*/) const
+ {
+ return iItems.Count();
+ }
+
+ virtual TInt FocusIndex() const
+ {
+ return iFocusIndex;
+ }
+
+ virtual void SetFocusL(NGlxListDefs::TFocusSetType /*aType*/, TInt aValue)
+ {
+ iFocusIndex = aValue;
+ }
+
+ virtual const TGlxMedia& Item(TInt aIndex) const
+ {
+ return iItems[aIndex];
+ }
+
+ virtual TInt Index(const TGlxIdSpaceId& /* aIdSpaceId */, const TGlxMediaId& aId) const
+ {
+ TInt count = iItems.Count();
+ for (TInt i = 0; i < count; i++)
+ {
+ if (iItems[i].Id() == aId)
+ {
+ return i;
+ }
+ }
+ return KErrNotFound;
+ }
+
+ virtual void AddMediaListObserverL(MGlxMediaListObserver* /*aObserver*/)
+ {
+ }
+
+ virtual void RemoveMediaListObserver(MGlxMediaListObserver* /*aObserver*/)
+ {
+ }
+
+ virtual void AddContextL(const MGlxFetchContext* /*aContext*/, TInt /*aPriority*/)
+ {
+ }
+
+ virtual void RemoveContext(const MGlxFetchContext* /*aContext*/)
+ {
+ }
+
+ virtual MMPXCollection& Collection() const
+ {
+ // we know that this method is not called in our tests, this is just to make the code compile
+ MMPXCollection* empty = NULL;
+ return *empty;
+ }
+
+ virtual TBool IsSelected(TInt aIndex) const
+ {
+ TInt idx = iSelectedItems.Find(aIndex);
+ return (idx != KErrNotFound);
+ }
+
+ virtual void SetSelectedL(TInt aIndex, TBool aSelected)
+ {
+ if (aSelected)
+ {
+ iSelectedItems.InsertInOrder(aIndex);
+ }
+ else
+ {
+ iSelectedItems.Remove(iSelectedItems.Find(aIndex));
+ }
+ }
+
+ virtual const TArray<TInt> Selection() const
+ {
+ return iSelectedItems.Array();
+ }
+
+ virtual void CommandL(CMPXCommand& /*aCommand*/)
+ {
+ }
+
+ virtual void CancelCommand()
+ {
+ }
+
+ virtual void SetFilterL(CMPXFilter* /*aFilter*/)
+ {
+ }
+
+ virtual CMPXFilter* Filter() const
+ {
+ return NULL;
+ }
+
+ virtual TGlxIdSpaceId IdSpaceId(TInt /*aIndex*/) const
+ {
+ return KGlxIdNone;
+ }
+
+ void AppendL(TInt aId, TBool aCreateMedia)
+ {
+ if (aCreateMedia)
+ {
+ CGlxMedia* media = new (ELeave) CGlxMedia(TGlxMediaId(aId));
+ CleanupStack::PushL(media);
+ iMedia.AppendL(media);
+ CleanupStack::Pop(media);
+ iItems.AppendL(TGlxMedia(TGlxMediaId(aId), media));
+ }
+ else
+ {
+ iItems.AppendL(TGlxMedia(TGlxMediaId(aId)));
+ }
+ }
+
+ CGlxMedia* MediaObj(TInt aIndex) const
+ {
+ return const_cast<CGlxMedia*>(static_cast<const CGlxMedia*>(iItems[aIndex].Properties()));
+ }
+
+ CMPXCollectionPath* PathLC(NGlxListDefs::TPathType /*aType*/) const
+ {
+ return NULL;
+ }
+
+ TInt SelectionCount() const
+ {
+ return iSelectedItems.Count();
+ }
+
+ TInt SelectedItemIndex(TInt /*aSelectionIndex*/) const
+ {
+ return 0;
+ }
+
+ TBool IsPopulated() const
+ {
+ return ETrue;
+ }
+
+ void AddStaticItemL( CGlxMedia* /*aStaticItem*/,
+ NGlxListDefs::TInsertionPosition /*aTargetPosition*/ ) {};
+
+ void RemoveStaticItem(const TGlxMediaId& /*aItemId*/) {};
+
+ void SetStaticItemsEnabled( TBool aEnabled ) { iStaticItemsEnabled = aEnabled; };
+
+ TBool IsStaticItemsEnabled() const { return iStaticItemsEnabled; };
+
+ void SetFocusInitialPosition(NGlxListDefs::TFocusInitialPosition aFocusInitialPosition){};
+
+ void ResetFocus(){};
+
+ void SetVisibleWindowIndexL( TInt aIndex ){};
+ TInt VisibleWindowIndex() const {};
+
+ RArray<TGlxMedia> iItems;
+ RPointerArray<CGlxMedia> iMedia;
+ RArray<TInt> iSelectedItems;
+ TInt iFocusIndex;
+ TBool iStaticItemsEnabled;
+ };
+
+
+TInt GlxAttributeRetriever::RetrieveL(const MGlxFetchContext&, MGlxMediaList&, TBool)
+ {
+ return KErrNone;
+ }
+
+
+
+CGlxMarkingCommandHandlerTester* CGlxMarkingCommandHandlerTester::NewL()
+ {
+ CGlxMarkingCommandHandlerTester* me = new(ELeave)CGlxMarkingCommandHandlerTester();
+ CleanupStack::PushL(me);
+ me->ConstructL();
+ CleanupStack::Pop();
+ return me;
+ }
+
+CGlxMarkingCommandHandlerTester::~CGlxMarkingCommandHandlerTester()
+ {
+ iMarker->Deactivate();
+
+ iCommandHandlerList.ResetAndDestroy();
+ iCommandHandlerList.Close();
+
+ delete iMediaList;
+ }
+
+
+CGlxMarkingCommandHandlerTester::CGlxMarkingCommandHandlerTester()
+ {
+
+ }
+
+void CGlxMarkingCommandHandlerTester::ConstructL()
+ {
+ EUNIT_PRINT(_L("CGlxMarkingCommandHandlerTester::ConstructL"));
+
+ iMediaList = new (ELeave) _CGlxTestMediaList;
+
+ EUNIT_PRINT(_L("Construct command handler"));
+ iMarker = CGlxCommandHandlerMarking::NewL(this,ETrue);
+
+ iCommandHandlerList.AppendL(iMarker);
+
+ iMarker->ActivateL(0);
+
+ EUNIT_PRINT(_L("CGlxMarkingCommandHandlerTester::ConstructL complete"));
+ }
+
+MGlxMediaList& CGlxMarkingCommandHandlerTester::MediaList()
+ {
+ return *iMediaList;
+ }
+
+TBool CGlxMarkingCommandHandlerTester::ExecuteL(TInt aCommand)
+ {
+ return iCommandHandlerList[0]->ExecuteL( aCommand );
+ }
+
+TBool CGlxMarkingCommandHandlerTester::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
+ {
+ TKeyResponse resp = iMarker->OfferKeyEventL(aKeyEvent, aType);
+ return (resp == EKeyWasConsumed);
+ }
+
+void CGlxMarkingCommandHandlerTester::HandleFocusChangedL(NGlxListDefs::TFocusChangeType aType, TInt aNewIndex, TInt aOldIndex)
+ {
+ iMarker->HandleFocusChangedL(aType, aNewIndex, aOldIndex, iMediaList);
+ }
+
+// CONSTRUCTION
+ut__commandhandlermarking* ut__commandhandlermarking::NewL()
+ {
+ ut__commandhandlermarking* self = ut__commandhandlermarking::NewLC();
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+ut__commandhandlermarking* ut__commandhandlermarking::NewLC()
+ {
+ ut__commandhandlermarking* self = new( ELeave ) ut__commandhandlermarking();
+ CleanupStack::PushL( self );
+
+ self->ConstructL();
+
+ return self;
+ }
+
+// Destructor (virtual by CBase)
+ut__commandhandlermarking::~ut__commandhandlermarking()
+ {
+ }
+
+// Default constructor
+ut__commandhandlermarking::ut__commandhandlermarking()
+ {
+ }
+
+// Second phase construct
+void ut__commandhandlermarking::ConstructL()
+ {
+ CEUnitTestSuiteClass::ConstructL();
+ }
+
+// METHODS
+
+
+void ut__commandhandlermarking::SetupL( )
+ {
+ EUNIT_PRINT(_L("ut__commandhandlermarking::SetupL"));
+ iTester = CGlxMarkingCommandHandlerTester::NewL();
+ }
+
+
+void ut__commandhandlermarking::Teardown( )
+ {
+ delete iTester;
+ iTester = NULL;
+ }
+
+
+void ut__commandhandlermarking::T_TestCreateL( )
+ {
+ }
+
+void ut__commandhandlermarking::T_TestExecuteNoItemsL()
+ {
+ EUNIT_PRINT(_L("ut__commandhandlermarking::T_TestExecuteNoItemsL"));
+ TBool exe = iTester->ExecuteL(EAknCmdMark);
+ EUNIT_ASSERT_DESC( exe == EFalse, "Mark unsupported ");
+
+ exe = iTester->ExecuteL(EAknCmdUnmark);
+ EUNIT_ASSERT_DESC( exe == EFalse, "Unmark unsupported");
+
+ exe = iTester->ExecuteL(EAknMarkAll);
+ EUNIT_ASSERT_DESC( exe == EFalse, "Mark all unsupported");
+
+ exe = iTester->ExecuteL(EAknUnmarkAll);
+ EUNIT_ASSERT_DESC( exe == EFalse, "Unmark all unsupported");
+
+ exe = iTester->ExecuteL(-1);
+ EUNIT_ASSERT_DESC( exe == EFalse, "unknown command -1");
+
+ exe = iTester->ExecuteL(1024);
+ EUNIT_ASSERT_DESC( exe == EFalse, "unknown command 1024");
+ }
+
+
+
+void ut__commandhandlermarking::T_TestExecuteItemsL()
+ {
+ EUNIT_PRINT(_L("ut__commandhandlermarking::T_TestExecuteItemsL"));
+
+ _CGlxTestMediaList* ml = dynamic_cast<_CGlxTestMediaList*>(&iTester->MediaList());
+
+ ml->AppendL(0, ETrue);
+ ml->AppendL(1, ETrue);
+ ml->AppendL(2, ETrue);
+ ml->AppendL(3, ETrue);
+ ml->AppendL(4, ETrue);
+ ml->iFocusIndex = 0;
+
+ TBool exe = iTester->ExecuteL(EAknCmdMark);
+ EUNIT_ASSERT_DESC( exe, "Mark supported");
+
+ exe = iTester->ExecuteL(EAknCmdMark);
+ EUNIT_ASSERT_DESC( exe == EFalse, "Already marked");
+
+ exe = iTester->ExecuteL(EAknCmdUnmark);
+ EUNIT_ASSERT_DESC( exe, "Unmark supported");
+
+ exe = iTester->ExecuteL(EAknCmdUnmark);
+ EUNIT_ASSERT_DESC( exe == EFalse, "Unmark not supported");
+
+ exe = iTester->ExecuteL(EAknMarkAll);
+ EUNIT_ASSERT_DESC( exe, "Mark all");
+
+ exe = iTester->ExecuteL(EAknCmdMark);
+ EUNIT_ASSERT_DESC( exe == EFalse, "Cannot mark");
+
+ exe = iTester->ExecuteL(EAknMarkAll);
+ EUNIT_ASSERT_DESC( exe == EFalse, "Mark all not supported");
+
+ exe = iTester->ExecuteL(EAknUnmarkAll);
+ EUNIT_ASSERT_DESC( exe, "Unmark all");
+
+ exe = iTester->ExecuteL(EAknUnmarkAll);
+ EUNIT_ASSERT_DESC( exe==EFalse, "Unmark all not supported");
+
+ exe = iTester->ExecuteL(EAknCmdUnmark);
+ EUNIT_ASSERT_DESC( exe == EFalse, "Unmark not supported");
+
+ exe = iTester->ExecuteL(EAknCmdMark);
+ EUNIT_ASSERT_DESC( exe, "Mark supported");
+
+ EUNIT_PRINT(_L("ut__commandhandlermarking::T_TestExecuteItemsL change focus pos"));
+
+ ml->iFocusIndex = 1;
+ exe = iTester->ExecuteL(EAknCmdMark);
+ EUNIT_ASSERT_DESC( exe, "Mark supported");
+
+ exe = iTester->ExecuteL(EAknCmdUnmark);
+ EUNIT_ASSERT_DESC( exe, "Unmark supported");
+
+ ml->iFocusIndex = 0;
+
+ exe = iTester->ExecuteL(EAknCmdMark);
+ EUNIT_ASSERT_DESC( exe == EFalse, "Already marked");
+
+ ml->iFocusIndex = 1;
+ exe = iTester->ExecuteL(EAknCmdUnmark);
+ EUNIT_ASSERT_DESC( exe == EFalse, "not marked");
+ }
+
+void ut__commandhandlermarking::T_TestOfferKeyL()
+ {
+ _CGlxTestMediaList* ml = dynamic_cast<_CGlxTestMediaList*>(&iTester->MediaList());
+
+ ml->AppendL(0, ETrue);
+ ml->AppendL(1, ETrue);
+ ml->AppendL(2, ETrue);
+ ml->AppendL(3, ETrue);
+ ml->AppendL(4, ETrue);
+ ml->iFocusIndex = 0;
+
+ TKeyEvent kev = { 0 };
+ kev.iModifiers |= EModifierShift;
+
+ // shift key pressed
+ iTester->OfferKeyEventL(kev, EEventKeyDown);
+
+ // change focus
+ iTester->HandleFocusChangedL( NGlxListDefs::EForward, 4,0);
+
+ // all items should now be marked
+ TBool exe = iTester->ExecuteL(EAknCmdMark);
+ EUNIT_ASSERT_DESC( exe == EFalse, "Cannot mark");
+
+ exe = iTester->ExecuteL(EAknMarkAll);
+ EUNIT_ASSERT_DESC( exe == EFalse, "All already marked");
+
+ // shift key disabled
+ kev.iModifiers = 0;
+ iTester->OfferKeyEventL(kev, EEventKeyUp);
+
+ iTester->OfferKeyEventL(kev, EEventKeyDown);
+
+ // changing focus has no effect
+ iTester->HandleFocusChangedL( NGlxListDefs::EBackward, 0,4);
+
+ exe = iTester->ExecuteL(EAknCmdMark);
+ EUNIT_ASSERT_DESC( exe == EFalse, "Cannot mark");
+
+ exe = iTester->ExecuteL(EAknMarkAll);
+ EUNIT_ASSERT_DESC( exe == EFalse, "All already marked");
+
+ kev.iModifiers |= EModifierShift;
+
+ // shift key down
+ iTester->OfferKeyEventL(kev, EEventKeyDown);
+
+ iTester->HandleFocusChangedL( NGlxListDefs::EForward, 4,0);
+
+ // all items have been unmarked
+ exe = iTester->ExecuteL(EAknUnmarkAll);
+ EUNIT_ASSERT_DESC( exe == EFalse, "None marked");
+
+ exe = iTester->ExecuteL(EAknCmdMark);
+ EUNIT_ASSERT_DESC( exe, "Can mark");
+
+ exe = iTester->ExecuteL(EAknCmdMark);
+ EUNIT_ASSERT_DESC( exe == EFalse, "Already marked");
+
+ // select with shift down
+ kev.iScanCode=EStdKeyDevice3;
+ TBool resp = iTester->OfferKeyEventL(kev, EEventKey);
+ EUNIT_ASSERT_DESC( resp, "Event consumed");
+
+ // item has been unmarked
+ exe = iTester->ExecuteL(EAknCmdMark);
+ EUNIT_ASSERT_DESC( exe, "Can mark");
+
+ // shift key up
+ // select should have no effect on marking
+ kev.iScanCode=EStdKeyDevice3;
+ kev.iModifiers = 0;
+ resp = iTester->OfferKeyEventL(kev, EEventKeyDown);
+ EUNIT_ASSERT_DESC( resp == EFalse, "Event notconsumed");
+
+ exe = iTester->ExecuteL(EAknCmdMark);
+ EUNIT_ASSERT_DESC( exe == EFalse, "Already marked");
+ }
+
+// TEST TABLE
+EUNIT_BEGIN_TEST_TABLE(
+ ut__commandhandlermarking,
+ "Add test suite description here.",
+ "MODULE" )
+
+EUNIT_TEST(
+ "Test0",
+ "Create marking command handler",
+ "Test0",
+ "FUNCTIONALITY",
+ SetupL, T_TestCreateL, Teardown)
+
+EUNIT_TEST(
+ "Test1",
+ "Test execute no items",
+ "Test1",
+ "FUNCTIONALITY",
+ SetupL, T_TestExecuteNoItemsL, Teardown)
+
+EUNIT_TEST(
+ "Test2",
+ "Test execute items",
+ "Test2",
+ "FUNCTIONALITY",
+ SetupL, T_TestExecuteItemsL, Teardown)
+
+ EUNIT_TEST(
+ "Test3",
+ "Test offer key events",
+ "Test3",
+ "FUNCTIONALITY",
+ SetupL, T_TestOfferKeyL, Teardown)
+
+
+EUNIT_END_TEST_TABLE
+
+// END OF FILE