uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestbuttons/src/bctestbuttonscase.cpp
branchRCL_3
changeset 56 d48ab3b357f1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestbuttons/src/bctestbuttonscase.cpp	Wed Sep 01 12:16:19 2010 +0100
@@ -0,0 +1,1317 @@
+/*
+* 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:  test case
+*
+*/
+
+
+#include <w32std.h>
+#include <coecntrl.h>
+#include <avkon.hrh>
+#include <AknsConstants.h> //
+
+#include <eikbgfty.h>
+#include <eikenv.h>
+#include <eikcolib.h>
+#include <eikbtgpc.h>
+#include <eikcmbut.h>
+#include <eikbutb.h>
+#include <s32file.h>
+#include <eikcba.h>
+#include <eikcmbut.h>
+#include <barsread.h>
+#include <avkon.mbg>
+#include <eiklbbut.h>
+#include <coecntrl.h>
+#include <eikmnbut.h>
+#include <eikbtgps.h>
+#include <eikbtgrp.h>
+
+#include <akniconutils.h>
+#include <bctestbuttons.rsg>
+#include <bctestbuttons.mbg>
+
+#include "bctestbuttonscase.h"
+#include "bctestbuttonscontainer.h"
+#include "bctestbuttons.hrh"
+#include "streamlogger.h"
+
+_LIT( KStreamName, "c:\\BCTestLog\\buttontest.txt" );
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Symbian 2nd static Constructor
+// ---------------------------------------------------------------------------
+//
+CBCTestButtonsCase* CBCTestButtonsCase::NewL(
+    CBCTestButtonsContainer* aContainer )
+    {
+    CBCTestButtonsCase* self = new( ELeave ) CBCTestButtonsCase(
+        aContainer );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// C++ default constructor
+// ---------------------------------------------------------------------------
+//
+CBCTestButtonsCase::CBCTestButtonsCase(
+    CBCTestButtonsContainer* aContainer )
+    : iContainer( aContainer )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CBCTestButtonsCase::~CBCTestButtonsCase()
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// Symbian 2nd Constructor
+// ---------------------------------------------------------------------------
+//
+void CBCTestButtonsCase::ConstructL()
+    {
+    BuildScriptL();
+    iEnv = CEikonEnv::Static();
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestButtonsCase::BuildScriptL
+// ---------------------------------------------------------------------------
+//
+void CBCTestButtonsCase::BuildScriptL()
+    {
+    // Add script as your need.
+	AddTestL( DELAY(1), TEND);
+    TInt loop = EBCTestCmdMaxOutline - EBCTestCmdTestEikBgftyAndEikBtgpcL;
+    for ( TInt i = 0; i < loop; i++ )
+        {
+        AddTestL( LeftCBA, REP( Down, i ), KeyOK, TEND );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestButtonsCase::RunL
+// ---------------------------------------------------------------------------
+//
+void CBCTestButtonsCase::RunL( TInt aCmd )
+    {
+    if ( aCmd < EBCTestCmdTestEikBgftyAndEikBtgpcL  || aCmd > EBCTestCmdMaxOutline )
+        {
+        return;
+        }
+    // Call release before prepare to let container has time to draw the
+    // control created in PrepareCaseL.
+    switch ( aCmd )
+        {
+        case EBCTestCmdTestEikBgftyAndEikBtgpcL:
+            TestEikBgftyAndEikBtgpcL();
+            break;
+        case EBCTestCmdTestEikButbAndEikCbaL:
+            TestEikButbAndEikCbaL();
+            break;
+        case EBCTestCEikCommandButtonL:
+            TestCEikCommandButtonL();
+            break;
+        case EBCTestCEikTwoPictureCmdL:
+            TestCEikTwoPictureCmdL();
+            break;
+        case EBCTestCEikInverterCmdL:
+            TestCEikInverterCmdL();
+            break;
+        case EBCTestCEikTextBtnL:
+            TestCEikTextBtnL();
+            break;
+        case EBCTestCEikBitmapBtnL:
+            TestCEikBitmapBtnL();
+            break;
+        case EBCTestCEikLabeledBtnL:
+            TestCEikLabeledBtnL();
+            break;
+        case EBCTestMnbutAndBtgpsAndBtgrpL:
+            TestMnbutAndBtgpsAndBtgrpL();
+            break;
+        case EBCTestCba:
+            TestCbaButtonL();
+            break;
+        default:
+            break;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestButtonsCase::TestEikBgftyAndEikBtgpcL
+// ---------------------------------------------------------------------------
+//
+void CBCTestButtonsCase::TestEikBgftyAndEikBtgpcL()
+    {
+    // Test some API for class EikButtonGroupFactory
+    TBCTestCommandObserver commandObserver;
+    TInt resourceId = R_BCTESTBUTTONS_MENU;
+
+    RWindowGroup& parentWg = iEnv->RootWin();
+    TUint flags = 0;
+
+    EikButtonGroupFactory::TCreationData creationData(
+        CEikButtonGroupContainer::EView, &commandObserver,
+        resourceId, &parentWg, flags,
+        CEikButtonGroupContainer::EVertical );
+    _LIT( KTCreationData, "TCreationData test" );
+    AssertTrueL( ETrue, KTCreationData );
+
+    // Test some API for class CEikButtonGroupFactoryArray
+    CEikButtonGroupFactoryArray::AppendFactoryFunctionL(
+        CEikCoCtlLibrary::ButtonGroupFactory() );
+    _LIT( KAppendFactoryFunctionL, "AppendFactoryFunctionL test" );
+    AssertTrueL( ETrue, KAppendFactoryFunctionL );
+
+    CEikButtonGroupFactoryArray::RemoveFactoryFunction(
+        CEikCoCtlLibrary::ButtonGroupFactory() );
+    _LIT( KRemoveFactoryFunction, "RemoveFactoryFunction test" );
+    AssertTrueL( ETrue, KRemoveFactoryFunction );
+
+    // Test some API for class CEikButtonGroupContainer
+    TInt resourceIdForToolbar = R_BCTESTBUTTONS_TOOLBAR;
+    CEikButtonGroupContainer* buttonGroupContainer1 =
+        CEikButtonGroupContainer::NewL( CEikButtonGroupContainer::EView,
+        CEikButtonGroupContainer::EVertical, &commandObserver,
+        resourceIdForToolbar, CEikButtonGroupContainer::EAddToStack );
+    CleanupStack::PushL( buttonGroupContainer1 );
+    _LIT( KNewL, "NewL test" );
+    AssertTrueL( ETrue, KNewL );
+    CleanupStack::PopAndDestroy( buttonGroupContainer1 );
+
+    CEikButtonGroupContainer* buttonGroupContainer2 =
+        CEikButtonGroupContainer::NewL( CEikButtonGroupContainer::EView,
+        CEikButtonGroupContainer::EVertical, &commandObserver,
+        resourceIdForToolbar, *iContainer,
+        CEikButtonGroupContainer::EAddToStack);
+    CleanupStack::PushL( buttonGroupContainer2 );
+    _LIT( KNewLWithCCoeControl, "NewL WithCCoeControl test" );
+    AssertTrueL( ETrue, KNewLWithCCoeControl );
+    CleanupStack::PopAndDestroy( buttonGroupContainer2 );
+
+
+    CEikButtonGroupContainer* buttonGroupContainer3 =
+        CEikButtonGroupContainer::NewL( CEikButtonGroupContainer::EView,
+        CEikButtonGroupContainer::EVertical, &commandObserver,
+        resourceIdForToolbar, parentWg,
+        CEikButtonGroupContainer::EAddToStack );
+    CleanupStack::PushL( buttonGroupContainer3 );
+    _LIT( KNewLWithRWindowGroup, "NewL With RWindowGroup test" );
+    AssertTrueL( ETrue, KNewLWithRWindowGroup );
+    CleanupStack::PopAndDestroy( buttonGroupContainer3 );
+
+    CEikButtonGroupContainer* buttonGroupContainer4 =
+        CEikButtonGroupContainer::Current();
+
+    _LIT( KCurrent, "Current test" );
+    AssertTrueL( ETrue, KCurrent );
+
+    TInt resourceIdForCba = R_BCTESTBUTTONS_CBA_OPTIONS_NEXT;
+    buttonGroupContainer4->SetCommandSetL( resourceIdForCba );
+    _LIT( KSetCommandSetL, "SetCommandSetL test" );
+    AssertTrueL( ETrue, KSetCommandSetL );
+
+    buttonGroupContainer4->AddCommandSetToStackL( resourceIdForCba );
+    _LIT( KAddCommandSetToStackL, "AddCommandSetToStackL test" );
+    AssertTrueL( ETrue, KAddCommandSetToStackL );
+
+    TInt commandId = EAknSoftkeyOptions;
+    TInt position = buttonGroupContainer4->PositionById( commandId );
+    _LIT( KPositionById, "PositionById test" );
+    AssertTrueL( ETrue, KPositionById );
+
+    buttonGroupContainer4->RemoveCommandFromStack( position, commandId);
+    _LIT( KRemoveCommandFromStack, "RemoveCommandFromStack test" );
+    AssertTrueL( ETrue, KRemoveCommandFromStack );
+
+    buttonGroupContainer4->SetDefaultCommand( commandId );
+    _LIT( KSetDefaultCommand, "SetDefaultCommand test" );
+    AssertTrueL( ETrue, KSetDefaultCommand );
+
+    TSize size1 = buttonGroupContainer4->CalcMinimumSizeL( resourceIdForCba );
+    _LIT( KCalcMinimumSizeL, "CalcMinimumSizeL test" );
+    AssertTrueL( ETrue, KCalcMinimumSizeL );
+
+    buttonGroupContainer4->CleanupCommandPushL( position );
+    _LIT( KCleanupCommandPushL, "CleanupCommandPushL test" );
+    AssertTrueL( ETrue, KCleanupCommandPushL );
+    
+    TInt res( KErrNone );
+    _LIT( KOfferCommandListL, "OfferCommandListL tested" );
+    TRAP( res, buttonGroupContainer4->OfferCommandListL( resourceIdForCba ) );
+    AssertTrueL( ETrue, KOfferCommandListL );
+    
+    RArray<TInt> arr;
+    arr.Append( commandId );
+    _LIT( KOfferCommandListLOverload, "OfferCommandListL overload tested" );
+    TRAP( res, buttonGroupContainer4->OfferCommandListL( arr ) );
+    AssertTrueL( ETrue, KOfferCommandListLOverload );
+    arr.Close();
+
+    TInt countForCleanupCommandPop = 1;
+    buttonGroupContainer4->CleanupCommandPop( countForCleanupCommandPop );
+    _LIT( KCleanupCommandPop, "CleanupCommandPop test" );
+    AssertTrueL( ETrue, KCleanupCommandPop );
+
+    TInt maxCommands = buttonGroupContainer4->MaxCommands();
+    _LIT( KMaxCommands, "MaxCommands test" );
+    AssertTrueL( ETrue, KMaxCommands );
+
+    TInt buttonCount = buttonGroupContainer4->ButtonCount();
+    _LIT( KButtonCount, "ButtonCount test" );
+    AssertTrueL( ETrue, KButtonCount );
+
+    TBool dimmed = ETrue;
+    buttonGroupContainer4->DimCommand( commandId, dimmed );
+    _LIT( KDimCommand, "DimCommand test" );
+    AssertTrueL( ETrue, KDimCommand );
+    buttonGroupContainer4->DimCommand( commandId, EFalse );
+
+    TBool isCommandDimmed = buttonGroupContainer4->IsCommandDimmed( commandId );
+    _LIT( KIsCommandDimmed, "IsCommandDimmed test" );
+    AssertTrueL( ETrue, KIsCommandDimmed );
+
+    TBool visible = ETrue;
+    buttonGroupContainer4->MakeCommandVisible( commandId, visible );
+     _LIT( KMakeCommandVisible, "MakeCommandVisible test" );
+    AssertTrueL( ETrue, KMakeCommandVisible );
+
+    TBool isCommandVisible = buttonGroupContainer4->IsCommandVisible( commandId );
+    _LIT( KIsCommandVisible, "IsCommandVisible test" );
+    AssertTrueL( ETrue, KIsCommandVisible );
+
+    buttonGroupContainer4->AnimateCommand( commandId );
+    _LIT( KAnimateCommand1, "AnimateCommand test" );
+    AssertTrueL( ETrue, KAnimateCommand1 );
+
+    CEikButtonGroupContainer::TLocation location =
+        buttonGroupContainer4->Location();
+    _LIT( KLocation, "Location test" );
+    AssertTrueL( ETrue, KLocation );
+
+#ifndef _DEBUG
+    CEikCommandButton* commandButton1 =
+        buttonGroupContainer4->CommandButtonOrNull( commandId );
+    CleanupStack::PushL( commandButton1 );
+    _LIT( KCommandButtonOrNull, "CommandButtonOrNull test" );
+    AssertTrueL( ETrue, KCommandButtonOrNull );
+    CleanupStack::PopAndDestroy( commandButton1 );
+#endif
+
+    TRect rect = iContainer->Rect();
+    buttonGroupContainer4->SetBoundingRect( rect );
+    _LIT( KSetBoundingRect, "SetBoundingRect test" );
+    AssertTrueL( ETrue, KSetBoundingRect );
+
+    buttonGroupContainer4->ReduceRect( rect );
+    _LIT( KReduceRect, "ReduceRect test" );
+    AssertTrueL( ETrue, KReduceRect );
+
+    CCoeControl* coeControl =
+        buttonGroupContainer4->ControlOrNull( commandId );
+    _LIT( KControlOrNull, "ControlOrNull test" );
+    AssertTrueL( ETrue, KControlOrNull );
+
+#ifndef _DEBUG
+    CEikCommandButton* commandbutton2 =
+        buttonGroupContainer4->ButtonById( commandId );
+    _LIT( KButtonById, "ButtonById test" );
+    AssertTrueL( ETrue, KButtonById );
+#endif
+
+    TInt keyId = 1;
+    buttonGroupContainer4->UpdateHotKey( commandId,
+        CEikButtonGroupContainer::EShowHotKey, keyId);
+    _LIT( KUpdateHotKey, "UpdateHotKey test" );
+    AssertTrueL( ETrue, KUpdateHotKey );
+
+    TInt pos = 1;
+    buttonGroupContainer4->UpdateCommandObserverL( pos, commandObserver );
+    _LIT( KUpdateCommandObserverL, "UpdateCommandObserverL test" );
+    AssertTrueL( ETrue, KUpdateCommandObserverL );
+
+    buttonGroupContainer4->RemoveCommandObserver( pos );
+    _LIT( KRemoveCommandObserver, "RemoveCommandObserver test" );
+    AssertTrueL( ETrue, KRemoveCommandObserver );
+
+    TBool delayActivation = buttonGroupContainer4->DelayActivation();
+    _LIT( KDelayActivation, "DelayActivation test" );
+    AssertTrueL( ETrue, KDelayActivation );
+
+    TSize minimumSize1 = buttonGroupContainer4->MinimumSize();
+    _LIT( KMinimumSize1, "MinimumSize test" );
+    AssertTrueL( ETrue, KMinimumSize1 );
+
+    TKeyEvent keyEvent1 = { EKeyPause, EStdKeySpace, 0, 0  };
+    TKeyResponse keyresponse =
+        buttonGroupContainer4->OfferKeyEventL( keyEvent1, EEventKey );
+    _LIT( KOfferKeyEventL1, "OfferKeyEventL test" );
+    AssertTrueL( ETrue, KOfferKeyEventL1 );
+
+    RFs& tempServer = iEnv->FsSession();
+    tempServer.Delete( KStreamName );
+    RFileWriteStream fWrite;
+    User::LeaveIfError( fWrite.Create( tempServer,
+        KStreamName, EFileWrite ) );
+    CleanupClosePushL( fWrite );
+    buttonGroupContainer4->WriteInternalStateL( fWrite );
+    CleanupStack::PopAndDestroy( &fWrite );
+    tempServer.Delete( KStreamName );
+    _LIT( KWriteInternalStateL1, "WriteInternalStateLtest test" );
+    AssertTrueL( ETrue, KWriteInternalStateL1);
+
+    buttonGroupContainer4->Reserved_MtsmPosition();
+    _LIT( KReserved_MtsmPosition, "Reserved_MtsmPosition" );
+    AssertTrueL( ETrue, KReserved_MtsmPosition );
+
+    buttonGroupContainer4->Reserved_MtsmObject();
+     _LIT( KReserved_MtsmObject, "Reserved_MtsmObject test" );
+    AssertTrueL( ETrue, KReserved_MtsmObject );
+
+    TBool isCommandInGroup = buttonGroupContainer4->IsCommandInGroup( commandId );
+    _LIT( KIsCommandInGroup, "IsCommandInGroup test" );
+    AssertTrueL( ETrue, KIsCommandInGroup );
+
+    buttonGroupContainer4->ReplaceCommand( commandId, resourceIdForCba );
+    _LIT( KReplaceCommand, "ReplaceCommand test" );
+    AssertTrueL( ETrue, KReplaceCommand );
+    }
+
+// --------------------------------------------------------------------------
+// TBCTestCommandObserver::ProcessCommandL
+// ---------------------------------------------------------------------------
+//
+void TBCTestCommandObserver::ProcessCommandL( TInt )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestButtonsCase::TestEikButbAndEikCbaL
+// ---------------------------------------------------------------------------
+//
+void CBCTestButtonsCase::TestEikButbAndEikCbaL()
+    {
+    // Test some API for class TEikButtonCoordinator
+    TEikButtonCoordinator coordinator;
+    _LIT( KTEikButtonCoordinator, "TEikButtonCoordinator test" );
+    AssertTrueL( ETrue, KTEikButtonCoordinator );
+
+    CEikButtonBase* chosenButton = new( ELeave ) CEikButtonBase();
+    CleanupStack::PushL( chosenButton );
+    coordinator.SetChosenButton( chosenButton );
+     _LIT( KSetChosenButton, "SetChosenButton test" );
+    AssertTrueL( ETrue, KSetChosenButton );
+    CleanupStack::PopAndDestroy( chosenButton );
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestButtonsCase::SetupCommandBtnL
+// ---------------------------------------------------------------------------
+//
+CEikCommandButton* CBCTestButtonsCase::SetupCommandBtnL()
+    {
+    //1. just new
+    CEikCommandButton* commandButton = new( ELeave )CEikCommandButton();
+    CleanupStack::PushL( commandButton );
+
+    //2. construct from res
+    TResourceReader reader1;
+    iEnv->CreateResourceReaderLC( reader1, R_BCTESTBUTTONS_CMBUT );
+    commandButton->ConstructFromResourceL( reader1 );
+    _LIT( KConstructFromResourceL1, "ConstructFromResourceL test" );
+    AssertTrueL( ETrue, KConstructFromResourceL1 );
+    CleanupStack::PopAndDestroy(); //reader1
+
+    return commandButton;
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestButtonsCase::TeardownCommandBtnL
+// ---------------------------------------------------------------------------
+//
+void CBCTestButtonsCase::TeardownCommandBtnL(CEikCommandButton* aBtn)
+    {
+    CleanupStack::PopAndDestroy( aBtn );
+    _LIT( KDesCommandButton, "~CommandButton() test" );
+    AssertTrueL( ETrue, KDesCommandButton );
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestButtonsCase::TestSetBtnLayoutL
+// ---------------------------------------------------------------------------
+//
+void CBCTestButtonsCase::TestSetBtnLayoutL()
+    {
+    CEikCommandButton* commandButton = SetupCommandBtnL();
+
+    commandButton->SetButtonLayout( CEikCommandButton::ETextRightPictureLeft );
+    _LIT( KSetButtonLayout, "TSetButtonLayout test" );
+    AssertTrueL( ETrue, KSetButtonLayout);
+
+    TeardownCommandBtnL(commandButton);
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestButtonsCase::TestExcessSpace
+// ---------------------------------------------------------------------------
+//
+void CBCTestButtonsCase::TestExcessSpace()
+    {
+    CEikCommandButton* commandButton = SetupCommandBtnL();
+
+    commandButton->SetExcessSpace( CEikCommandButton::EShare );
+    _LIT( KSetExcessSpace, "SetExcessSpace test" );
+    AssertTrueL( ETrue, KSetExcessSpace );
+
+    TeardownCommandBtnL(commandButton);
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestButtonsCase::TestStuff
+// ---------------------------------------------------------------------------
+//
+void CBCTestButtonsCase::TestStuff()
+    {
+    CEikCommandButton* commandButton = SetupCommandBtnL();
+
+    _LIT( KText, "xxxxxxxxx" );
+    commandButton->SetTextL( KText );
+    _LIT( KSetTextL1, "SetTextL test" );
+    AssertTrueL( ETrue, KSetTextL1 );
+
+    CEikLabel* label = commandButton->Label();
+    _LIT( KLabel1, "Label test" );
+    AssertTrueL( ETrue, KLabel1 );
+
+    commandButton->SetDisplayContent( CEikCommandButton::ETextOnly );
+    _LIT( KSetDisplayContent, "SetDisplayContent test" );
+    AssertTrueL( ETrue, KSetDisplayContent );
+
+    TeardownCommandBtnL(commandButton);
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestButtonsCase::TestImgBtnL()
+// ---------------------------------------------------------------------------
+//
+void CBCTestButtonsCase::TestImgBtnL()
+    {
+    CEikCommandButton* commandButton = SetupCommandBtnL();
+
+    _LIT( KButtonIconFile1, "z:\\resource\\apps\\BCTestButtons.mbm" );
+    TInt normal1 = 1;
+    CFbsBitmap * normalBitmap1 = AknIconUtils::CreateIconL( KButtonIconFile1, normal1 );
+    CleanupStack::PushL( normalBitmap1 );
+
+    commandButton->SetPictureL( normalBitmap1, NULL );
+    _LIT( KSetPictureL1, "SetPictureL test" );
+    AssertTrueL( ETrue, KSetPictureL1 );
+
+    CEikImage* image = commandButton->Picture();
+    _LIT( KPicture, "Picture test" );
+    AssertTrueL( ETrue, KPicture );
+
+    CleanupStack::Pop(normalBitmap1);
+
+    TeardownCommandBtnL(commandButton);
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestButtonsCase::TestStackRelatedL
+// ---------------------------------------------------------------------------
+//
+void CBCTestButtonsCase::TestStackRelatedL()
+    {
+    // stack realated have issues
+    CEikCommandButton* commandButton = SetupCommandBtnL();
+
+    _LIT( KButtonIconFile2, "z:\\resource\\apps\\BCTestButtons.mbm" );
+    TInt normal2 = 1;
+    CFbsBitmap * normalBitmap2 = AknIconUtils::CreateIconL( KButtonIconFile2, normal2 );
+    CleanupStack::PushL( normalBitmap2 );
+
+    TInt commandId2 = EProgCmdAutoTest;
+    TBuf<10> buf2 = _L( "xxxxxxx" );
+    commandButton->AddCommandToStackL( commandId2, &buf2, normalBitmap2, normalBitmap2 );
+    _LIT( KAddCommandToStackL, "AddCommandToStackL test" );
+    AssertTrueL( ETrue, KAddCommandToStackL );
+
+    CleanupStack::Pop( normalBitmap2 );
+
+    TBool removeCommandFromStack = commandButton->RemoveCommandFromStack( R_BCTESTBUTTONS_CBA_OPTIONS_NEXT );
+    _LIT( KRemoveCommandFromStack, "RemoveCommandFromStack test" );
+    AssertTrueL( ETrue, KRemoveCommandFromStack );
+
+    TInt popCommandFromStack = commandButton->PopCommandFromStack();
+    _LIT( KPopCommandFromStack, "PopCommandFromStack test" );
+    AssertTrueL( ETrue, KPopCommandFromStack );
+
+    TeardownCommandBtnL(commandButton);
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestButtonsCase::TestCommandButtonBaseL
+// ---------------------------------------------------------------------------
+//
+void CBCTestButtonsCase::TestCommandButtonBaseL()
+    {
+    CEikCommandButton* commandButton = SetupCommandBtnL();
+
+    commandButton->CCoeControl::DrawNow();
+    _LIT( KDraw, "Draw for CEikCommandButtonBase test" );
+    AssertTrueL( ETrue, KDraw );
+	
+    commandButton->CEikCommandButtonBase::LayoutComponents();
+    _LIT( KLayoutComponents,
+        "LayoutComponents for CEikCommandButtonBase test" );
+    AssertTrueL( ETrue, KLayoutComponents );
+
+    commandButton->CEikCommandButtonBase::SetDefault( ETrue );
+    _LIT( KSetDefault, "SetDefault for CEikCommandButtonBase test" );
+    AssertTrueL( ETrue, KSetDefault );
+
+    /*iCmdBtnBase = new( ELeave )CBCTestCmdBtnBase();
+    iContainer->SetControl( iCmdBtnBase );
+    _LIT( KDraw, "Draw for CEikCommandButtonBase test" );
+    AssertTrueL( ETrue, KDraw );*/
+
+    commandButton->CEikCommandButtonBase::FocusChanged( ENoDrawNow );
+    _LIT( KFocusChanged, "FocusChanged for CEikCommandButtonBase test" );
+    AssertTrueL( ETrue, KFocusChanged );
+
+    CArrayFixFlat<TCoeColorUse>* colorUseList2 =
+        new( ELeave ) CArrayFixFlat<TCoeColorUse>( 1 );
+    TCoeColorUse colorUse2;
+    colorUseList2->AppendL( colorUse2 );
+    commandButton->CEikCommandButtonBase::GetColorUseListL( *colorUseList2 );
+    CleanupStack::PushL( colorUseList2 );
+    _LIT( KGetColorUseListL2,
+        "GetColorUseListL for CEikCommandButtonBase test" );
+    AssertTrueL( ETrue, KGetColorUseListL2 );
+    CleanupStack::PopAndDestroy( colorUseList2 );
+
+    TKeyEvent keyEvent3 = { EKeyPause, EStdKeySpace, 0, 0  };
+    TKeyResponse keyResponse =
+        commandButton->CEikCommandButtonBase::OfferKeyEventL(
+        keyEvent3, EEventNull );
+    _LIT( KOfferKeyEventL3, "OfferKeyEventL for CEikCommandButtonBase test" );
+    AssertTrueL( ETrue, KOfferKeyEventL3 );
+
+    commandButton->CEikCommandButtonBase::ActivateL();
+    _LIT( KActivateL2, "ActivateL for CEikCommandButtonBase test" );
+    AssertTrueL( ETrue, KActivateL2 );
+
+    commandButton->CEikCommandButtonBase::UpdateComponentAlignment();
+    _LIT( KUpdateComponentAlignment,
+        "UpdateComponentAlignment for CEikCommandButtonBase test" );
+    AssertTrueL( ETrue, KUpdateComponentAlignment );
+
+
+    TeardownCommandBtnL(commandButton);
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestButtonsCase::TestButtonBaseL
+// ---------------------------------------------------------------------------
+//
+void CBCTestButtonsCase::TestButtonBaseL()
+    {
+    CEikCommandButton* commandButton = SetupCommandBtnL();
+
+    CBCTestBtnBase* btnBase = new( ELeave )CBCTestBtnBase();
+    CleanupStack::PushL( btnBase );
+
+    CEikButtonBase* buttonBase = new( ELeave ) CEikButtonBase();
+    CleanupStack::PushL( buttonBase );
+    btnBase->CEikButtonBase::CopyDrawStateTo( buttonBase );
+    CleanupStack::PopAndDestroy( buttonBase );
+    _LIT( KCopyDrawStateTo, "CopyDrawStateTo for CEikButtonBase test" );
+    AssertTrueL( ETrue, KCopyDrawStateTo );
+
+    TBool isPressed = btnBase->CEikButtonBase::IsPressed();
+    _LIT( KIsPressed, "IsPressed for CEikButtonBase test" );
+    AssertTrueL( ETrue, KIsPressed );
+
+    btnBase->CEikButtonBase::SetAllowTristate();
+    _LIT( KSetAllowTristate, "SetAllowTristate for CEikButtonBase test" );
+    AssertTrueL( ETrue, KSetAllowTristate );
+
+    CleanupStack::PopAndDestroy( btnBase );
+
+    CArrayFixFlat<TCoeColorUse>* colorUseList3 =
+        new( ELeave ) CArrayFixFlat<TCoeColorUse>( 1 );
+    TCoeColorUse colorUse3;
+    colorUseList3->AppendL( colorUse3 );
+    commandButton->CEikButtonBase::GetColorUseListL( *colorUseList3 );
+    CleanupStack::PushL( colorUseList3 );
+    _LIT( KGetColorUseListL3,
+        "GetColorUseListL for CEikButtonBase test" );
+    AssertTrueL( ETrue, KGetColorUseListL3 );
+    CleanupStack::PopAndDestroy( colorUseList3 );
+
+    TCoeInputCapabilities capabilities =
+        commandButton->CEikButtonBase::InputCapabilities();
+    _LIT( KInputCapabilities, "InputCapabilities for CEikButtonBase test" );
+    AssertTrueL( ETrue, KInputCapabilities );
+
+    TKeyEvent keyEvent4 = { EKeyPause, EStdKeySpace, 0, 0  };
+    TKeyResponse keyResponse4 =
+        commandButton->CEikButtonBase::OfferKeyEventL(
+        keyEvent4, EEventNull );
+    _LIT( KOfferKeyEventL4, "OfferKeyEventL for CEikButtonBase test" );
+    AssertTrueL( ETrue, KOfferKeyEventL4 );
+
+    TEikButtonCoordinator butCoord;
+    commandButton->CEikButtonBase::SetCoordinator( &butCoord );
+    _LIT( KSetCoordinator, "SetCoordinator for CEikButtonBase test" );
+    AssertTrueL( ETrue, KSetCoordinator );
+
+    commandButton->CEikButtonBase::SetIgnoreNextPointerUp();
+    _LIT( KSetIgnoreNextPointerUp, "SetIgnoreNextPointerUp for CEikButtonBase test" );
+    AssertTrueL( ETrue, KSetIgnoreNextPointerUp );
+
+    TeardownCommandBtnL(commandButton);
+    }
+// ---------------------------------------------------------------------------
+// CBCTestButtonsCase::TestCEikCommandButton
+// ---------------------------------------------------------------------------
+//
+void CBCTestButtonsCase::TestCEikCommandButtonL()
+    {
+    // Test some API for class CEikCommandButtonBase
+    TestSetBtnLayoutL();
+    TestExcessSpace();
+    TestStuff();
+    TestImgBtnL();
+    TestCommandButtonBaseL();
+    TestButtonBaseL();
+
+    CEikCommandButton* commandButton = SetupCommandBtnL();
+
+    _LIT( KButtonIconFile1, "z:\\resource\\apps\\BCTestButtons.mbm" );
+    TInt normal1 = 1;
+    CFbsBitmap * normalBitmap1 = AknIconUtils::CreateIconL( KButtonIconFile1, normal1 );
+    CleanupStack::PushL( normalBitmap1 );
+
+    TInt commandId = R_BCTESTBUTTONS_CBA_OPTIONS_NEXT;
+    TBuf<10> buf = _L( "xxxxxxx" );
+    commandButton->SetCommandL( commandId, &buf, normalBitmap1, normalBitmap1 );
+    _LIT( KSetCommandL, "SetCommandL test" );
+    AssertTrueL( ETrue, KSetCommandL );
+
+    CleanupStack::Pop(normalBitmap1);
+
+    TPointerEvent pointerEvent1;
+    pointerEvent1.iType = TPointerEvent::EButton1Up;
+    commandButton->HandlePointerEventL( pointerEvent1 );
+    _LIT( KHandlePointerEventL1, "HandlePointerEventL test" );
+    AssertTrueL( ETrue, KHandlePointerEventL1 );
+
+    commandButton->UpdateComponentAlignment();
+    _LIT( KUpdateComponentAlignment, "UpdateComponentAlignment test" );
+    AssertTrueL( ETrue, KUpdateComponentAlignment );
+
+    commandButton->SetPictureFromFileL( AknIconUtils::AvkonIconFileName(),
+        EMbmAvkonQgn_indi_marked_add, EMbmAvkonQgn_indi_marked_add_mask );
+    _LIT( KSetPictureFromFileL1, "SetPictureFromFileL test" );
+    AssertTrueL( ETrue, KSetPictureFromFileL1 );
+
+    TestStackRelatedL();
+
+    TeardownCommandBtnL(commandButton);
+    }
+
+CEikTwoPictureCommandButton* CBCTestButtonsCase::SetupTwoPictureCmdL()
+    {
+    //1. just new
+    CEikTwoPictureCommandButton* twoPictureCommandButton =
+        new( ELeave ) CEikTwoPictureCommandButton();
+    CleanupStack::PushL( twoPictureCommandButton );
+    _LIT( KCEikTwoPictureCommandButton, "CEikTwoPictureCommandButton() test" );
+    AssertTrueL( ETrue, KCEikTwoPictureCommandButton );
+
+    //2. construct from res
+    TResourceReader reader2;
+    iEnv->CreateResourceReaderLC( reader2, R_BCTESTBUTTONS_PICMBUT );
+    twoPictureCommandButton->ConstructFromResourceL( reader2 );
+    _LIT( KConstructFromResourceL2,
+        "ConstructFromResourceL For CEikTwoPictureCommandButton test" );
+    AssertTrueL( ETrue, KConstructFromResourceL2 );
+    CleanupStack::PopAndDestroy(); //reader2
+
+    return twoPictureCommandButton;
+    }
+
+void CBCTestButtonsCase::TeardownTwoPictureCmdL(CEikTwoPictureCommandButton* aBtn)
+    {
+    CleanupStack::PopAndDestroy( aBtn );
+    _LIT( KDesCEikTwoPictureCommandButton, "~CEikTwoPictureCommandButton() test" );
+    AssertTrueL( ETrue, KDesCEikTwoPictureCommandButton );
+    }
+
+void CBCTestButtonsCase::TestSetTwoPicturesL()
+    {
+    CEikTwoPictureCommandButton* twoPictureCommandButton = SetupTwoPictureCmdL();
+
+    _LIT( KButtonIconFile2, "z:\\resource\\apps\\BCTestButtons.mbm" );
+    TInt normal2 = 1;
+    CFbsBitmap * normalBitmap2 = AknIconUtils::CreateIconL( KButtonIconFile2, normal2 );
+    CleanupStack::PushL( normalBitmap2 );
+
+    twoPictureCommandButton->SetTwoPicturesL( normalBitmap2, NULL, NULL, NULL);
+    _LIT( KSetTwoPicturesL, "SetTwoPicturesL test" );
+    AssertTrueL( ETrue, KSetTwoPicturesL );
+
+    CleanupStack::Pop(normalBitmap2);
+    TeardownTwoPictureCmdL( twoPictureCommandButton );
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestButtonsCase::TestCEikTwoPictureCmd
+// ---------------------------------------------------------------------------
+//
+void CBCTestButtonsCase::TestCEikTwoPictureCmdL()
+    {
+    // Test some API for class CEikTwoPictureCommandButton
+    CEikTwoPictureCommandButton* twoPictureCommandButton = SetupTwoPictureCmdL();
+
+    TestSetTwoPicturesL();
+
+    TBool isSecondPictureOwnedExternally =
+        twoPictureCommandButton->IsSecondPictureOwnedExternally();
+    _LIT( KIsSecondPictureOwnedExternally, "IsSecondPictureOwnedExternally test" );
+    AssertTrueL( ETrue, KIsSecondPictureOwnedExternally );
+
+    CEikImage* eikImage =  twoPictureCommandButton->Picture();
+    _LIT( KPicture2, "Picture test" );
+    AssertTrueL( ETrue, KPicture2 );
+
+    _LIT( KText2,"xxxxxxxxxx" );
+    twoPictureCommandButton->SetTextL( KText2 );
+    _LIT( KSetTextL2, "SetTextL For CEikTwoPictureCommandButton test" );
+    AssertTrueL( ETrue, KSetTextL2 );
+
+    _LIT( KButtonIconFile3, "z:\\resource\\apps\\BCTestButtons.mbm" );
+    TInt normal3 = 1;
+    CFbsBitmap * normalBitmap3 = AknIconUtils::CreateIconL( KButtonIconFile3, normal3 );
+    CleanupStack::PushL( normalBitmap3 );
+
+    twoPictureCommandButton->SetSecondPicture( normalBitmap3, NULL );
+    _LIT( KSetSecondPicture3, "SetSecondPicture test" );
+    AssertTrueL( ETrue, KSetSecondPicture3 );
+
+    CleanupStack::Pop(normalBitmap3);
+
+    twoPictureCommandButton->SetSecondPictureOwnedExternally( EFalse );
+    _LIT( KSetSecondPictureOwnedExternally, "SetSecondPictureOwnedExternally test" );
+    AssertTrueL( ETrue, KSetSecondPictureOwnedExternally );
+
+    twoPictureCommandButton->ActivateL();
+    _LIT( KActivateL1, "ActivateL test" );
+    AssertTrueL( ETrue, KActivateL1 );
+
+    TPointerEvent pointerEvent2;
+    pointerEvent2.iType = TPointerEvent::EButton1Up;
+    twoPictureCommandButton->HandlePointerEventL( pointerEvent2 );
+    _LIT( KHandlePointerEventL2,
+        "HandlePointerEventL For CEikTwoPictureCommandButton test" );
+    AssertTrueL( ETrue, KHandlePointerEventL2 );
+
+    CBCTestTwoPicture* twoPicture = new( ELeave ) CBCTestTwoPicture();
+    CleanupStack::PushL( twoPicture );
+    TResourceReader reader;
+    iEnv->CreateResourceReaderLC( reader, R_BCTESTBUTTONS_PICMBUT );
+    twoPicture->ConstructFromResourceL( reader );
+    CleanupStack::PopAndDestroy(); // reader
+
+    _LIT( KStreamName2, "c:\\BCTestLog\\buttontest.txt" );
+    RFs& tempServer2 = iEnv->FsSession();
+    tempServer2.Delete( KStreamName2 );
+    RFileWriteStream fWrite2;
+    User::LeaveIfError( fWrite2.Create( tempServer2,
+        KStreamName2, EFileWrite ) );
+    CleanupClosePushL( fWrite2 );
+    twoPicture->WriteInternalStateL( fWrite2 );
+    CleanupStack::PopAndDestroy( &fWrite2 );
+    CleanupStack::PopAndDestroy( twoPicture );
+    _LIT( KWriteInternalStateL2, "WriteInternalStateL test" );
+    AssertTrueL( ETrue, KWriteInternalStateL2 );
+
+    TeardownTwoPictureCmdL( twoPictureCommandButton );
+    
+    // Test private APIs
+    CCoeControl* test = new( ELeave ) CEikTwoPictureCommandButton();
+    CleanupStack::PushL( test );
+    test->DrawNow();
+    _LIT( KDraw, "Draw for CEikTwoPictureCommandButton test" );
+    AssertTrueL( ETrue, KDraw );
+    CleanupStack::PopAndDestroy( test );
+    
+    
+    }
+
+CEikInverterCommandButton* CBCTestButtonsCase::SetupInverterCmdL()
+    {
+    //1. just new
+    CEikInverterCommandButton* inverterCommandButton = new( ELeave ) CEikInverterCommandButton();
+    CleanupStack::PushL( inverterCommandButton );
+    _LIT( KCEikInverterCommandButton, "CEikInverterCommandButton test" );
+    AssertTrueL( ETrue, KCEikInverterCommandButton );
+
+    return inverterCommandButton;
+    }
+
+void CBCTestButtonsCase::TeardownInverterCmdL(CEikInverterCommandButton* aBtn)
+
+    {
+    CleanupStack::PopAndDestroy( aBtn );
+    _LIT( KDesCEikInverterCommandButton, "~CEikInverterCommandButton() test" );
+    AssertTrueL( ETrue, KDesCEikInverterCommandButton );
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestButtonsCase::TestCEikInverterCmdL
+// ---------------------------------------------------------------------------
+//
+void CBCTestButtonsCase::TestCEikInverterCmdL()
+    {
+    // Test some API for class CEikInverterCommandButton
+    CEikInverterCommandButton* inverterCommandButton = SetupInverterCmdL();
+
+    TPointerEvent pointerEvent3;
+    pointerEvent3.iType = TPointerEvent::EButton1Up;
+    inverterCommandButton->HandlePointerEventL( pointerEvent3 );
+    _LIT( KHandlePointerEventL3, "HandlePointerEventL For CEikInverterCommandButton test" );
+    AssertTrueL( ETrue, KHandlePointerEventL3 );
+
+    CBCTestInverterCmdButton* inverterBtn = new( ELeave ) CBCTestInverterCmdButton();
+    CleanupStack::PushL( inverterBtn );
+    TResourceReader reader;
+    iEnv->CreateResourceReaderLC( reader, R_BCTESTBUTTONS_CMBUT );
+    inverterBtn->ConstructFromResourceL( reader );
+    CleanupStack::PopAndDestroy(); // reader
+
+    _LIT( KStreamName2, "c:\\BCTestLog\\buttontest.txt" );
+    RFs& tempServer2 = iEnv->FsSession();
+    tempServer2.Delete( KStreamName2 );
+    RFileWriteStream fWrite2;
+    User::LeaveIfError( fWrite2.Create( tempServer2,
+        KStreamName2, EFileWrite ) );
+    CleanupClosePushL( fWrite2 );
+    inverterBtn->WriteInternalStateL( fWrite2 );
+    CleanupStack::PopAndDestroy( &fWrite2 );
+    //WriteInternalStateL(RWriteStream& aWriteStream)
+    CleanupStack::PopAndDestroy( inverterBtn );
+    _LIT( KWriteInternalStateL3, "WriteInternalStateL test" );
+    AssertTrueL( ETrue, KWriteInternalStateL3 );
+
+    TeardownInverterCmdL( inverterCommandButton );
+    }
+
+CEikTextButton* CBCTestButtonsCase::SetupTextBtnL()
+    {
+    //1. just new
+    CEikTextButton* textButton = new( ELeave ) CEikTextButton();
+    CleanupStack::PushL( textButton );
+    _LIT( KCEikTextButton, "CEikTextButton test" );
+    AssertTrueL( ETrue, KCEikTextButton );
+    //2. construct from res
+    TResourceReader reader3;
+    iEnv->CreateResourceReaderLC( reader3, R_BCTESTBUTTONS_TXTBUT );
+    textButton->ConstructFromResourceL( reader3 );
+    _LIT( KConstructFromResourceL3, "ConstructFromResourceL For CEikTextButton test" );
+    AssertTrueL( ETrue, KConstructFromResourceL3 );
+    CleanupStack::PopAndDestroy(); //reader3
+    return textButton;
+    }
+
+void CBCTestButtonsCase::TeardownTextBtnL( CEikTextButton* aBtn )
+
+    {
+    CleanupStack::PopAndDestroy( aBtn );
+    _LIT( KDesCEikTextButton, "~CEikTextButton() test" );
+    AssertTrueL( ETrue, KDesCEikTextButton );
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestButtonsCase::TestCEikTextBtnL()
+// ---------------------------------------------------------------------------
+//
+void CBCTestButtonsCase::TestCEikTextBtnL()
+    {
+    // Test some API for class CEikTextButton
+    CEikTextButton* textButton = SetupTextBtnL();
+
+    _LIT( KText3, "xxxxxxxxxxx" );
+    textButton->SetTextL( KText3, CEikCommandButtonBase::EFirst );
+    _LIT( KSetTextL3, "SetTextL For CEikTextButton test" );
+    AssertTrueL( ETrue, KSetTextL3 );
+
+    CEikLabel* label2 = textButton->Label( CEikCommandButtonBase::EFirst );
+    _LIT( KLabel2, "Label test" );
+    AssertTrueL( ETrue, KLabel2 );
+
+    TPointerEvent pointerEvent4;
+    pointerEvent4.iType = TPointerEvent::EButton1Up;
+    textButton->HandlePointerEventL( pointerEvent4 );
+    _LIT( KHandlePointerEventL4, "HandlePointerEventL For CEikTextButton test" );
+    AssertTrueL( ETrue, KHandlePointerEventL4 );
+
+    TeardownTextBtnL( textButton );
+    }
+
+CEikBitmapButton* CBCTestButtonsCase::SetupBitmapBtnL()
+    {
+    //1. just new
+    CEikBitmapButton* bitmapButton = new( ELeave ) CEikBitmapButton();
+    CleanupStack::PushL( bitmapButton );
+    _LIT( KCEikBitmapButton, "CEikBitmapButton test" );
+    AssertTrueL( ETrue, KCEikBitmapButton );
+    //2. construct from res
+    TResourceReader reader4;
+    iEnv->CreateResourceReaderLC( reader4, R_BCTESTBUTTONS_BMPBUT );
+    bitmapButton->ConstructFromResourceL( reader4 );
+    _LIT( KConstructFromResourceL4, "ConstructFromResourceL For CEikBitmapButton test" );
+    AssertTrueL( ETrue, KConstructFromResourceL4 );
+    CleanupStack::PopAndDestroy();//reader4
+
+    return bitmapButton;
+    }
+void CBCTestButtonsCase::TeardownBitmapBtnL( CEikBitmapButton* aBtn )
+    {
+    CleanupStack::PopAndDestroy( aBtn );
+    _LIT( KDesCEikBitmapButton, "~CEikBitmapButton test" );
+    AssertTrueL( ETrue, KDesCEikBitmapButton );
+    }
+// ---------------------------------------------------------------------------
+// CBCTestButtonsCase::TestCEikBitmapBtnL
+// ---------------------------------------------------------------------------
+//
+void CBCTestButtonsCase::TestCEikBitmapBtnL()
+    {
+    CEikBitmapButton* bitmapButton = SetupBitmapBtnL();
+
+    // Test some API for class CEikBitmapButton
+    _LIT( KButtonIconFile3, "z:\\resource\\apps\\BCTestButtons.mbm" );
+    TInt normal3 = 1;
+    CFbsBitmap * normalBitmap3 = AknIconUtils::CreateIconL(
+        KButtonIconFile3, normal3 );
+    CleanupStack::PushL( normalBitmap3 );
+
+    bitmapButton->SetPictureL( normalBitmap3, NULL,
+        CEikCommandButtonBase::EFirst );
+    _LIT( KSetPictureL3, "SetPictureL for CEikBitmapButton test" );
+    AssertTrueL( ETrue, KSetPictureL3 );
+
+    CleanupStack::Pop( normalBitmap3 );
+
+    bitmapButton->SetPictureFromFileL( KButtonIconFile3,
+        EMbmBctestbuttonsSampleicon, EMbmBctestbuttonsSampleiconmask,
+        CEikCommandButtonBase::ESecond );
+    _LIT( KBitmapBtn1, "CEikBitmapButton::SetPictureFromFileL" );
+    AssertTrueL( ETrue, KBitmapBtn1 );
+
+    CEikImage* picture = bitmapButton->Picture( CEikCommandButtonBase::EFirst );
+    _LIT( KPicture1, "Picture For CEikTextButton test" );
+    AssertTrueL( ETrue, KPicture1 );
+
+
+    TPointerEvent pointerEvent5;
+    pointerEvent5.iType = TPointerEvent::EButton1Up;
+    bitmapButton->HandlePointerEventL( pointerEvent5 );
+    _LIT( KHandlePointerEventL5, "HandlePointerEventL For CEikBitmapButton test" );
+    AssertTrueL( ETrue, KHandlePointerEventL5 );
+
+    TeardownBitmapBtnL( bitmapButton );
+    }
+
+CEikLabeledButton* CBCTestButtonsCase::SetupLabeledBtnLC()
+    {
+    //1. just new
+    CEikLabeledButton* labeledButton = new( ELeave ) CEikLabeledButton();
+    CleanupStack::PushL( labeledButton );
+    _LIT( KCEikLabeledButton, "CEikLabeledButton test" );
+    AssertTrueL( ETrue, KCEikLabeledButton );
+
+    //2. construct from res
+    TInt hotKeyCode = 1;
+    TInt flags = 1;
+    CEikCommandButton* commandButton = new( ELeave )CEikCommandButton();
+    CleanupStack::PushL( commandButton );
+    labeledButton->ConstructL( commandButton, hotKeyCode, flags );
+    _LIT( KConstructL, "ConstructL For CEikLabelButton test" );
+    AssertTrueL( ETrue, KConstructL );
+    CleanupStack::Pop( commandButton );
+    CleanupStack::PopAndDestroy( labeledButton );
+
+    labeledButton = new( ELeave ) CEikLabeledButton();
+    CleanupStack::PushL( labeledButton );
+    TResourceReader reader5;
+    iEnv->CreateResourceReaderLC( reader5, R_BCTESTBUTTONS_LBBUT );
+    labeledButton->ConstructFromResourceL( reader5 );
+    _LIT( KConstructFromResourceL5, "ConstructFromResourceL For CEikLabeledButton test" );
+    AssertTrueL( ETrue, KConstructFromResourceL5 );
+    CleanupStack::PopAndDestroy(); //reader5
+
+    return labeledButton;
+    }
+
+void CBCTestButtonsCase::TeardownLabeledBtnL( CEikLabeledButton* aBtn )
+    {
+    CleanupStack::PopAndDestroy( aBtn );
+    _LIT( KDesCEikLabeledButton, "~CEikLabeledButton test" );
+    AssertTrueL( ETrue, KDesCEikLabeledButton );
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestButtonsCase::TestCEikLabeledBtnL
+// ---------------------------------------------------------------------------
+//
+void CBCTestButtonsCase::TestCEikLabeledBtnL()
+    {
+    // Test some API for class CEikLabeledButton
+    CEikLabeledButton* labeledButton = SetupLabeledBtnLC();
+
+    CEikCommandButtonBase* commandButtonBase = labeledButton->Button();
+    _LIT( KButton, "Button test" );
+    AssertTrueL( ETrue, KButton );
+
+    CEikLabel* label3 = labeledButton->Label();
+    _LIT( KLabel3, "Label For CEikLabeledButton test" );
+    AssertTrueL( ETrue, KLabel3 );
+
+    TInt hotKeyCode2 = labeledButton->HotKeyCode();
+    _LIT( KHotKeyCode2, "HotKeyCode For CEikLabeledButton test" );
+    AssertTrueL( ETrue, KHotKeyCode2 );
+
+    TBool showsHotKey = labeledButton->ShowsHotKey();
+    _LIT( KShowsHotKey, "ShowsHotKey test" );
+    AssertTrueL( ETrue, KShowsHotKey );
+
+    TBool plainHotKey = labeledButton->PlainHotKey();
+    _LIT( KPlainHotKey, "PlainHotKey test" );
+    AssertTrueL( ETrue, KPlainHotKey );
+
+    labeledButton->Animate();
+    _LIT( KAnimate1, "Animate test" );
+    AssertTrueL( ETrue, KAnimate1 );
+
+    labeledButton->UpdateHotKey( EAknSoftkeyOk, CEikLabeledButton::EShowHotKey );
+    _LIT( KUpdateHotKey2, "UpdateHotKeytest" );
+    AssertTrueL( ETrue, KUpdateHotKey2 );
+
+    TKeyEvent keyEvent2 = { EKeyPause, EStdKeySpace, 0, 0  };
+    TKeyResponse keyResponse = labeledButton->OfferKeyEventL( keyEvent2, EEventNull );
+    _LIT( KOfferKeyEventL2, "OfferKeyEventL For CeikLabeledButton test" );
+    AssertTrueL( ETrue, KOfferKeyEventL2 );
+
+    TSize size2 = labeledButton->MinimumSize();
+    _LIT( KMinimumSize2, "MinimumSize test" );
+    AssertTrueL( ETrue, KMinimumSize2 );
+
+    labeledButton->SetContainerWindowL( *iContainer );
+    _LIT( KSetContainerWindowL, "SetContainerWindowL test" );
+    AssertTrueL( ETrue, KSetContainerWindowL );
+
+    labeledButton->SetDimmed( ETrue );
+    _LIT( KSetDimmed, "SetDimmed test" );
+    AssertTrueL( ETrue, KSetDimmed );
+
+    CArrayFixFlat<TCoeColorUse>* colorUseList = new( ELeave ) CArrayFixFlat<TCoeColorUse>( 1 );
+    TCoeColorUse colorUse;
+    colorUseList->AppendL( colorUse );
+    labeledButton->GetColorUseListL( *colorUseList );
+    CleanupStack::PushL( colorUseList );
+    _LIT( KGetColorUseListL, "GetColorUseListL test" );
+    AssertTrueL( ETrue, KGetColorUseListL );
+    CleanupStack::PopAndDestroy( colorUseList );
+
+    TInt type = 1;
+    labeledButton->HandleResourceChange( type );
+    _LIT( KHandleResourceChange, "HandleResourceChange test" );
+    AssertTrueL( ETrue, KHandleResourceChange );
+
+    TCoeInputCapabilities inputCapablilities = labeledButton->InputCapabilities();
+    _LIT( KInputCapabilities, "InputCapabilities test" );
+    AssertTrueL( ETrue, KInputCapabilities );
+
+
+    TPointerEvent pointerEvent6;
+    pointerEvent6.iType = TPointerEvent::EButton1Up;
+    labeledButton->HandlePointerEventL( pointerEvent6 );
+    _LIT( KHandlePointerEventL6, "HandlePointerEventL test" );
+    AssertTrueL( ETrue, KHandlePointerEventL6 );
+
+    TeardownLabeledBtnL( labeledButton );
+    }
+
+
+// ---------------------------------------------------------------------------
+// CBCTestButtonsCase::TestMnbutAndBtgpsAndBtgrpL
+// ---------------------------------------------------------------------------
+//
+void CBCTestButtonsCase::TestMnbutAndBtgpsAndBtgrpL()
+    {
+    // Test some API for class CEikMenuButton
+    CBCTestMenuButton* menuButton = new( ELeave ) CBCTestMenuButton();
+    CleanupStack::PushL( menuButton );
+    _LIT( KCEikMenuButton, "CEikMenuButton test" );
+    AssertTrueL( ETrue, KCEikMenuButton );
+
+    menuButton->SetContainerWindowL( *iContainer );
+
+    TResourceReader reader6;
+    iEnv->CreateResourceReaderLC( reader6, R_BCTESTBUTTONS_MNBUT );
+    menuButton->ConstructFromResourceL( reader6 );
+    _LIT( KConstructFromResourceL6, "ConstructFromResourceL For CEikMenuButton test" );
+    AssertTrueL( ETrue, KConstructFromResourceL6 );
+    CleanupStack::PopAndDestroy(); //reader6
+
+    menuButton->SetMenuPaneId( R_BCTESTBUTTONS_MENU );
+    _LIT( KSetMenuPaneId, "SetMenuPaneId test" );
+    AssertTrueL( ETrue, KSetMenuPaneId );
+
+    TBCTestMenuObserver menuObserver;
+    menuButton->LaunchPopupMenuL( &menuObserver );
+    _LIT( KLaunchPopupMenuL, "LaunchPopupMenuL test" );
+    AssertTrueL( ETrue, KLaunchPopupMenuL );
+
+    menuButton->Animate();
+    _LIT( KAnimate2, "Animatet For CEikMenuButton test" );
+    AssertTrueL( ETrue, KAnimate2 );
+
+    RFs& tempServer = iEnv->FsSession();
+    tempServer.Delete( KStreamName );
+    RFileWriteStream fWrite;
+    User::LeaveIfError( fWrite.Create( tempServer,
+        KStreamName, EFileWrite ) );
+    CleanupClosePushL( fWrite );
+    menuButton->WriteInternalStateL( fWrite );
+    CleanupStack::PopAndDestroy( &fWrite );
+    tempServer.Delete( KStreamName );
+    _LIT( KMenuWriteInternal, "CEikMenuButton::WriteInternalStateL" );
+    AssertTrueL( ETrue, KMenuWriteInternal );
+
+    TPointerEvent pointerEvent7;
+    pointerEvent7.iType = TPointerEvent::EButton1Up;
+    menuButton->HandlePointerEventL( pointerEvent7 );
+    _LIT( KHandlePointerEventL7, "HandlePointerEventL For CEikMenuButton test" );
+    AssertTrueL( ETrue, KHandlePointerEventL7 );
+
+    CleanupStack::PopAndDestroy( menuButton );
+    _LIT( KDesCEikMenuButton, "~CEikMenuButton() test" );
+    AssertTrueL( ETrue, KDesCEikMenuButton );
+
+    // Test some API for class CEikButtonGroupStack
+    TSize minimumSize3 = CEikButtonGroupStack::MinimumSize();
+     _LIT( KMinimumSize, "MinimumSizetest For CEikMenuButton" );
+    AssertTrueL( ETrue, KMinimumSize );
+    }
+
+void CBCTestButtonsCase::TestCbaButtonL()
+    {
+    
+    _LIT( KSetButtonGroupFlags, " SetButtonGroupFlags " );
+    _LIT( KSetSkinBackgroundId, " SetSkinBackgroundId " );
+    _LIT( KOfferCommandListL, " OfferCommandListL( array )" );
+    _LIT( KOfferCommandListResL, " OfferCommandListL( resource ) " );
+    _LIT( KIsCommandInGroup, " IsCommandInGroup " );
+    _LIT( KReplaceCommand, " ReplaceCommand " );
+    _LIT( KHandlePointerEventL, "HandlePointerEventL" );
+    
+    TInt resourceid = R_BCTESTBUTTONS_MENU;
+    TBCTestCommandObserver commandobserver;
+    
+    RWindowGroup& parentwg = iEnv->RootWin();
+    TUint flags = 0;
+
+    EikButtonGroupFactory::TCreationData creationData(
+        CEikButtonGroupContainer::EView, &commandobserver,
+        resourceid, &parentwg, flags, CEikButtonGroupContainer::EVertical );
+     
+    TInt toolbarresid = R_BCTESTBUTTONS_TOOLBAR;
+    
+    CEikButtonGroupContainer* buttongroup1 = CEikButtonGroupContainer::NewL( 
+        CEikButtonGroupContainer::EView, CEikButtonGroupContainer::EVertical, 
+        &commandobserver, toolbarresid, parentwg,
+        CEikButtonGroupContainer::EAddToStack );
+    CleanupStack::PushL( buttongroup1 );
+    CleanupStack::PopAndDestroy( buttongroup1 );
+
+    CEikButtonGroupContainer* buttongroup = CEikButtonGroupContainer::Current();
+    
+    CEikCba *eikcba = static_cast<CEikCba*>( buttongroup->ButtonGroup() );
+    
+    eikcba->SetButtonGroupFlags( 0 );
+    AssertTrueL( ETrue, KSetButtonGroupFlags );
+    
+    eikcba->SetSkinBackgroundId( KAknsIIDQsnBgAreaControlIdle );
+    AssertTrueL( ETrue, KSetSkinBackgroundId );
+    
+    TInt toolbarresourceid = R_BCTESTBUTTONS_CBA_OPTIONS_NEXT;
+    TInt commandid = EAknSoftkeyOptions;
+    TInt res;
+    
+    RArray<TInt> arr;
+    arr.Append( commandid );
+    TRAP( res, eikcba->OfferCommandListL( arr ) );
+    AssertTrueL( ETrue, KOfferCommandListL );
+    arr.Close();
+    
+    eikcba->IsCommandInGroup( commandid );
+    AssertTrueL( ETrue, KIsCommandInGroup );
+    eikcba->ReplaceCommand( commandid, toolbarresourceid );
+    AssertTrueL( ETrue, KReplaceCommand );
+   
+    TRAP( res, eikcba->OfferCommandListL( commandid ) );
+    AssertTrueL( ETrue, KOfferCommandListResL );
+    
+    CEikCbaButton* cbabutton = (CEikCbaButton*) buttongroup->ControlOrNull(commandid);
+    TPointerEvent pevent;
+    pevent.iType = TPointerEvent::EButton1Up; 
+    TRAP( res, cbabutton->HandlePointerEventL( pevent ) );
+    AssertTrueL( ETrue, KHandlePointerEventL );
+    }
+// --------------------------------------------------------------------------
+// TBCTestMenuObserver::SetEmphasis
+// ---------------------------------------------------------------------------
+//
+void TBCTestMenuObserver::SetEmphasis( CCoeControl*, TBool )
+    {
+    }
+// --------------------------------------------------------------------------
+// TBCTestMenuObserver::ProcessCommandL
+// ---------------------------------------------------------------------------
+//
+void TBCTestMenuObserver::ProcessCommandL( TInt )
+    {
+
+    }
+
+
+
+
+
+
+