uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestlist/src/bctestlisteiklistcase.cpp
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AvKon/tsrc/bc/S60_SDK3.0/bctestlist/src/bctestlisteiklistcase.cpp	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,1033 @@
+/*
+* 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 for list classes in eikstd
+*
+*/
+
+
+#include <w32std.h>
+#include <eikenv.h>
+#include <aknlists.h>
+#include <aknscontrolcontext.h>
+#include <eikedwin.h>
+#include <s32file.h>
+#include <eiklbm.h>
+#include <barsread.h>
+#include <bamatch.h>
+
+#include "bctestlisteiklistcase.h"
+#include "bctestlistcontainer.h"
+#include "bctestlist.hrh"
+#include <bctestlist.rsg>
+
+_LIT( KStreamName, "c:\\BCTestLog\\test.txt" );
+_LIT( KEikTestText, "Test text" );
+
+_LIT( KListBoxDataCreate, "Create CListBoxData" );
+_LIT( KTextItemDrawerCreate, "Create CTextListItemDrawer" );
+_LIT( KTextListCreate, "Create CEikTextListBox" );
+_LIT( KSnakingListCreate, "Create CEikSnakingTextListBox" );
+
+_LIT( KListDataTest1, "CListBoxData::SkinBackgroundControlContext" );
+_LIT( KListDataTest2, "CListBoxData::FontBoundValues" );
+_LIT( KListDataTest3, "CListBoxData::SetFontHeight" );
+_LIT( KListDataTest4, "CListBoxData::ConstructFontL" );
+_LIT( KListDataTest5, "CListBoxData::RegenerateFontsL" );
+_LIT( KListDataTest6, "CListBoxData::UpdateFontBoundValues" );
+_LIT( KListDataTest7, "CListBoxData::CFontsWithStyle::SetFontStyle" );
+_LIT( KListDataTest8, "CListBoxData::CFontsWithStyle::FontStyle" );
+_LIT( KListDataTest9, "CListBoxData::SetSearchStringL" );
+_LIT( KListDataTest10, "CListBoxData::IsSearchString" );
+_LIT( KListDataTest11, "CListBoxData::DrawItem" );
+_LIT( KEikSearchString, "abc" );
+
+_LIT( KTestListModelTest1, "CTextListBoxModel::TestItemArrayOwnershipType" );
+
+_LIT( KListBoxEditorTest1, "CEikListBoxEditor::SetFont" );
+_LIT( KListBoxEditorTest2, "CEikListBoxEditor::StartEditingL" );
+_LIT( KListBoxEditorTest3, "CEikListBoxEditor::SetListBoxEditorObserver" );
+_LIT( KListBoxEditorTest4, "CEikListBoxEditor::OfferKeyEventL" );
+_LIT( KListBoxEditorTest5, "CEikListBoxEditor::ItemText" );
+_LIT( KListBoxEditorTest6, "CEikListBoxEditor::WriteInternalStateL" );
+_LIT( KListBoxEditorTest7, "CEikListBoxEditor::UpdateModelL" );
+
+_LIT( KListItemDrawerTest1, "CListItemDrawer::MatcherCursorRect" );
+_LIT( KListItemDrawerTest2, "CListItemDrawer::MatcherCursorAscent" );
+_LIT( KListItemDrawerTest3, "CListItemDrawer::SetSkinEnabledL" );
+_LIT( KListItemDrawerTest4, "CListItemDrawer::SkinBackgroundControlContext" );
+_LIT( KListItemDrawerTest5, "CListItemDrawer::SetSkinEnabledL" );
+_LIT( KListItemDrawerTest6, "CListItemDrawer::SetFont" );
+_LIT( KListItemDrawerTest7, "CListItemDrawer::Font" );
+_LIT( KListItemDrawerTest8, "CTextListItemDrawer::Font" );
+_LIT( KListItemDrawerTest9, "CListItemDrawer::SetMarkColumnWidth" );
+_LIT( KListItemDrawerTest10, "CListItemDrawer::SetMarkGutter" );
+_LIT( KListItemDrawerTest11, "CListItemDrawer::MarkGutter" );
+_LIT( KListItemDrawerTest12, "CListItemDrawer::MarkColumn" );
+_LIT( KListItemDrawerTest13, "CListItemDrawer::DrawItemMark" );
+_LIT( KListItemDrawerTest14, "CListItemDrawer::MinimumCellSize" );
+_LIT( KListItemDrawerTest15, "CListItemDrawer::ItemWidthInPixels" );
+_LIT( KListItemDrawerTest16, "CListItemDrawer::SetSymbolFont" );
+_LIT( KListItemDrawerTest17, "CTextListItemDrawer::MatcherCursorRect" );
+_LIT( KListItemDrawerTest18, "CTextListItemDrawer::MatcherCursorAscent" );
+_LIT( KListItemDrawerTest19, "CTextListItemDrawer::SetSearchStringL" );
+_LIT( KListItemDrawerTest20, "CTextListItemDrawer::DrawItemText" );
+
+_LIT( KListViewTest1, "CListBoxView::ToggleItemL" );
+_LIT( KListViewTest2, "CListBoxView::SetAnchor" );
+_LIT( KListViewTest3, "CListBoxView::DeselectRangeL" );
+_LIT( KListViewTest4, "CListBoxView::ScrollToMakeItemVisible" );
+_LIT( KListViewTest5, "CListBoxView::SetPaintedSelection" );
+_LIT( KListViewTest6, "CListBoxView::SetTextColor" );
+_LIT( KListViewTest7, "CListBoxView::TextColor" );
+_LIT( KListViewTest8, "CListBoxView::DrawEmptyList" );
+_LIT( KListViewTest9, "CListBoxView::SetSelectionIndexesL" );
+_LIT( KListViewTest10, "CListBoxView::GetSelectionIndexesL" );
+
+_LIT( KTextItemDrawerMatchText, "Add Items" );   
+
+_LIT( KTextListTest1, "CEikListBox::SetScrollBarFrame" );
+_LIT( KTextListTest2, "CEikListBox::ConstructL" );
+_LIT( KTextListTest3, "CEikListBox::Reset" );
+_LIT( KTextListTest4, "CEikListBox::CreateMatchBufferL" );
+_LIT( KTextListTest5, "CEikListBox::MatchBuffer" );
+_LIT( KTextListTest6, "CEikListBox::ClearMatchBuffer" );
+_LIT( KTextListTest7, "CEikListBox::CalcWidthBasedOnNumOfChars" );
+_LIT( KTextListTest8, "CEikListBox::CalcWidthBasedOnRequiredItemWidth" );
+_LIT( KTextListTest9, "CEikListBox::CalcHeightBasedOnNumOfItems" );
+_LIT( KTextListTest10, "CEikListBox::MinimumSize" );
+_LIT( KTextListTest11, "CEikListBox::CalcSizeInPixels" );
+_LIT( KTextListTest12, "CEikListBox::SetViewRectFromClientRect" );
+_LIT( KTextListTest13, "CEikListBox::CalculatePopoutRect" );
+_LIT( KTextListTest14, "CEikListBox::BottomItemIndex" );
+_LIT( KTextListTest15, "CEikListBox::SetTopItemIndex" );
+_LIT( KTextListTest16, "CEikListBox::AdjustTopItemIndex" );
+_LIT( KTextListTest17, "CEikListBox::SetCurrentItemIndexAndDraw" );
+_LIT( KTextListTest18, "CEikListBox::SetListBoxObserver" );
+_LIT( KTextListTest19, "CEikListBox::MakeViewClassInstanceL" );
+_LIT( KTextListTest20, "CEikListBox::DrawMatcherCursor" );
+_LIT( KTextListTest21, "CEikListBox::InterItemGap" );
+_LIT( KTextListTest22, "CEikListBox::CreateScrollBarFrameLayout" );
+_LIT( KTextListTest23, "CEikListBox::HorizScrollGranularityInPixels" );
+_LIT( KTextListTest24, "CEikListBox::SetViewRectHeightAdjustment" );
+_LIT( KTextListTest25, "CEikListBox::VerticalInterItemGap" );
+_LIT( KTextListTest26, "CEikListBox::SetSelectionIndexesL" );
+_LIT( KTextListTest27, "CEikListBox::SelectionIndexes" );
+_LIT( KTextListTest28, "CEikListBox::IsMultiselection" );
+_LIT( KTextListTest29, "CEikListBox::ClearSelection" );
+_LIT( KTextListTest30, "CEikListBox::HandleLeftArrowKeyL" );
+_LIT( KTextListTest31, "CEikListBox::HandleRightArrowKeyL" );
+_LIT( KTextListTest32, "CEikListBox::OfferKeyEventL" );
+_LIT( KTextListTest33, "CEikListBox::HorizontalNudgeValue" );
+_LIT( KTextListTest34, "CEikListBox::HandleScrollEventL" );
+_LIT( KTextListTest35, "CEikListBox::HandleDragEventL" );
+_LIT( KTextListTest36, "CEikListBox::SimulateArrowKeyEventL" );
+_LIT( KTextListTest37, "CEikListBox::SetDimmed" );
+_LIT( KTextListTest38, "CEikListBox::UndoLastChar" );
+_LIT( KTextListTest39, "CEikListBox::SetShortcutValueFromPrevList" );
+_LIT( KTextListTest40, "CEikListBox::ShortcutValueForNextList" );
+_LIT( KTextListTest41, "CEikListBox::HighlightRect" );
+_LIT( KTextListTest42, "CEikListBox::MatchTypedCharL" );
+_LIT( KTextListTest43, "CEikListBox::LastCharMatched" );
+_LIT( KTextListTest44, "CEikListBox::SetLaunchingButton" );
+_LIT( KTextListTest45, "CEikListBox::EventModifiers" );
+_LIT( KTextListTest46, "CEikListBox::ReasonForFocusLostL" );
+_LIT( KTextListTest47, "CEikListBox::EditItemL" );
+_LIT( KTextListTest48, "CEikListBox::StopEditingL" );
+_LIT( KTextListTest49, "CEikListBox::HandleItemAdditionL" );
+_LIT( KTextListTest50, "CEikListBox::HandleItemRemovalL" );
+_LIT( KTextListTest51, "CEikListBox::HandleItemRemovalL()" );
+_LIT( KTextListTest52, "CEikTextListBox::Model" );
+_LIT( KTextListTest53, "CEikTextListBox::WriteInternalStateL" );
+_LIT( KTextListTest54, "CEikTextListBox::ConstructFromResourceL" );
+_LIT( KEikAddItem, "One added text" );
+
+_LIT( KSnakingViewTest1, "CSnakingListBoxView::VisibleWidth" );
+_LIT( KSnakingViewTest2, "CSnakingListBoxView::HScroll" );
+_LIT( KSnakingViewTest3, "CSnakingListBoxView::SetItemHeight" );
+_LIT( KSnakingViewTest4, "CSnakingListBoxView::CalculateHScrollOffsetSoItemIsVisible" );
+
+_LIT( KSnakingTest1, "CEikSnakingListBox::MakeViewClassInstanceL" );
+_LIT( KSnakingTest2, "CEikSnakingListBox::SetColumnWidth" );
+_LIT( KSnakingTest3, "CEikSnakingListBox::ColumnWidth" );
+_LIT( KSnakingTest4, "CEikSnakingListBox::HandleLeftArrowKeyL" );
+_LIT( KSnakingTest5, "CEikSnakingListBox::HandleRightArrowKeyL" );
+_LIT( KSnakingTest6, "CEikSnakingListBox::HorizontalNudgeValue" );
+_LIT( KSnakingTest7, "CEikSnakingListBox::HorizScrollGranularityInPixels" );
+_LIT( KSnakingTest8, "CEikSnakingListBox::SetTopItemIndex" );
+_LIT( KSnakingTest9, "CEikSnakingListBox::AdjustTopItemIndex" );
+_LIT( KSnakingTest10, "CEikSnakingListBox::SizeChanged" );
+_LIT( KSnakingTest11, "CEikSnakingListBox::HandleDragEventL" );
+_LIT( KSnakingTest12, "CEikSnakingListBox::HandleViewRectSizeChangeL" );
+_LIT( KSnakingTest13, "CEikSnakingListBox::MoveToNextOrPreviousItemL" );
+_LIT( KSnakingTest14, "CEikSnakingListBox::RestoreClientRectFromViewRect" );
+_LIT( KSnakingTest15, "CEikSnakingListBox::AdjustRectHeightToWholeNumberOfItems" );
+_LIT( KSnakingTest16, "CEikSnakingListBox::GetColorUseListL" );
+_LIT( KSnakingTest17, "CEikSnakingTextListBox::GetColorUseListL" );
+_LIT( KSnakingTest18, "CEikSnakingListBox::HandlePointerEventL" );
+_LIT( KSnakingTest19, "CEikSnakingTextListBox::HandlePointerEventL" );
+_LIT( KSnakingTest20, "CEikSnakingListBox::HandleResourceChange" );
+_LIT( KSnakingTest21, "CEikSnakingTextListBox::HandleResourceChange" );
+_LIT( KSnakingTest22, "CEikSnakingTextListBox::Model" );
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Symbian 2nd static Constructor
+// ---------------------------------------------------------------------------
+//
+CBCTestListEiklistCase* CBCTestListEiklistCase::NewL( 
+    CBCTestListContainer* aContainer, CEikonEnv* aEikEnv )
+    {
+    CBCTestListEiklistCase* self = new( ELeave ) CBCTestListEiklistCase( 
+        aContainer, aEikEnv );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+    
+// ---------------------------------------------------------------------------
+// C++ default constructor
+// ---------------------------------------------------------------------------
+//
+CBCTestListEiklistCase::CBCTestListEiklistCase( CBCTestListContainer* aContainer,
+    CEikonEnv* aEikEnv )
+    : CBCTestListBaseCase( aContainer, aEikEnv )
+    {    
+    }
+    
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CBCTestListEiklistCase::~CBCTestListEiklistCase()
+    {
+    ReleaseCase(); 
+    }
+    
+// ---------------------------------------------------------------------------
+// Symbian 2nd Constructor
+// ---------------------------------------------------------------------------
+//
+void CBCTestListEiklistCase::ConstructL()
+    {    
+    BuildScriptL();    
+    }
+    
+// ---------------------------------------------------------------------------
+// CBCTestListEiklistCase::BuildScriptL
+// ---------------------------------------------------------------------------
+//
+void CBCTestListEiklistCase::BuildScriptL()
+    {    
+    for ( TInt i=0; i <= EBCTestCmdOutline55 - EBCTestCmdOutline51; i++ )
+        {
+        AddTestL( LeftCBA, REP( Down, 8 ), KeyOK, TEND );
+        AddTestL( REP( Down, i ), KeyOK, TEND );
+        }      
+    }
+    
+// ---------------------------------------------------------------------------
+// CBCTestListEiklistCase::RunL
+// ---------------------------------------------------------------------------
+//
+void CBCTestListEiklistCase::RunL( TInt aCmd )
+    {
+    if ( aCmd < EBCTestCmdOutline51 || aCmd > EBCTestCmdOutline55 )
+        {
+        return;
+        }
+    iCurrentCmd = aCmd;
+    ReleaseCase();
+    PrepareCaseL( aCmd );
+    switch( aCmd )
+        {
+        case EBCTestCmdOutline51:
+            TestListBoxDataL();
+            break;
+        case EBCTestCmdOutline52:
+            TestCEikListBoxEditorL();
+            break;
+        case EBCTestCmdOutline53:
+            TestCTextListItemDrawerL();
+            break;
+        case EBCTestCmdOutline54:
+            TestEikListBoxL();
+            TestListBoxViewL();
+            break;
+        case EBCTestCmdOutline55:
+            TestSnakingListBoxL();
+            TestSnakingListBoxViewL();
+        default:
+            break;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestListEiklistCase::PrepareCaseL
+// ---------------------------------------------------------------------------
+//
+void CBCTestListEiklistCase::PrepareCaseL( TInt aCmd )
+    {    
+    TInt flags = CEikListBox::EIncrementalMatching | 
+                EAknListBoxSelectionList | EAknListBoxViewerFlags;  
+    CDesCArray* textArray = NULL;
+    
+    if ( aCmd != EBCTestCmdOutline51 )
+        {
+        textArray = iEikEnv->ReadDesCArrayResourceL( 
+                R_BCTESTLIST_ITEM_SINGLE1_ADD_RM );
+        CleanupStack::PushL( textArray );
+        }
+        
+    if ( aCmd == EBCTestCmdOutline52 || aCmd == EBCTestCmdOutline53 )
+        {
+        iModel = new( ELeave ) CBCTestTextListModel();            
+        iModel->ConstructL( textArray );
+        }
+
+    switch ( aCmd )
+        {
+        case EBCTestCmdOutline51:
+            iData = new( ELeave ) CBCTestListBoxData();
+            AssertNotNullL( iData, KListBoxDataCreate );
+            iData->ConstructL( iEikEnv->NormalFont() );            
+            break;
+        case EBCTestCmdOutline53:
+            iTextDrawer = new( ELeave ) CBCTestTextListItemDrawer( iModel, 
+                iEikEnv->NormalFont() );
+            AssertNotNullL( iTextDrawer, KTextItemDrawerCreate );
+            break;
+        case EBCTestCmdOutline54:
+            {
+            iListBox = new( ELeave ) CBCTestTextListBox();
+            AssertNotNullL( iListBox, KTextListCreate );
+            iListBox->ConstructL( iContainer, flags );
+            iListBox->Model()->SetItemTextArray( textArray );
+            iListBox->Model()->SetOwnershipType( ELbmOwnsItemArray );
+            
+            CEikScrollBarFrame* scrollBarFrame = new( ELeave) CEikScrollBarFrame(
+                iContainer, iListBox, ETrue );
+            CleanupStack::PushL( scrollBarFrame );
+            iListBox->SetScrollBarFrame( scrollBarFrame, 
+                CEikListBox::ENotOwnedExternally );                
+            AssertTrueL( ETrue, KTextListTest1 );
+            CleanupStack::Pop( scrollBarFrame );
+            
+            iContainer->SetControl( iListBox );
+            }
+            break;
+        case EBCTestCmdOutline55:
+            iSnakingList = new( ELeave ) CBCTestTextSnakingListBox();
+            AssertNotNullL( iSnakingList, KSnakingListCreate );
+            flags |= CEikListBox::ELeftDownInViewRect;
+            iSnakingList->ConstructL( iContainer, flags );
+            iSnakingList->Model()->SetItemTextArray( textArray );
+            iSnakingList->Model()->SetOwnershipType( ELbmOwnsItemArray );           
+            
+            iContainer->SetControl( iSnakingList );
+        default:
+            break;
+        }
+        
+    if ( aCmd != EBCTestCmdOutline51 )
+        {
+        CleanupStack::Pop( textArray );
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestListEiklistCase::ReleaseCase
+// ---------------------------------------------------------------------------
+//   
+void CBCTestListEiklistCase::ReleaseCase()
+    {
+    iContainer->ResetControl();    
+    iListBox = NULL;
+    iSnakingList = NULL;  
+    
+    delete iModel;
+    delete iData;    
+    delete iTextDrawer;    
+    
+    iModel = NULL; 
+    iData = NULL;
+    iTextDrawer = NULL;    
+    }
+    
+// ---------------------------------------------------------------------------
+// Test CListBoxData
+// ---------------------------------------------------------------------------
+//
+void CBCTestListEiklistCase::TestListBoxDataL()
+    {   
+    MAknsControlContext* controlCtx = iData->SkinBackgroundControlContext();
+    AssertTrueL( ETrue, KListDataTest1 );    
+    
+    const TListFontBoundValues& boundValue = iData->FontBoundValues();
+    AssertTrueL( ETrue, KListDataTest2 );
+    
+    TInt fontHeightInTwips = 10;
+    TInt height = iData->SetFontHeight( fontHeightInTwips );    
+    AssertTrueL( ETrue, KListDataTest3 );
+    
+    // Test protected API
+    iData->TestConstructFontL( iEikEnv->TitleFont() );
+    AssertTrueL( ETrue, KListDataTest4 );
+    TInt testRet = iData->TestRegenerateFonts();
+    AssertTrueL( ETrue, KListDataTest5 );
+    iData->TestUpdateFontBoundValues( iEikEnv->NormalFont() );
+    AssertTrueL( ETrue, KListDataTest6 );
+    TBool ret = iData->TestCFontWithStyle();
+    AssertTrueL( ret, KListDataTest7 );
+    AssertTrueL( ret, KListDataTest8 );
+    
+    
+    TPtrC ptr( KEikSearchString ); 
+    iData->SetSearchStringL( &ptr );
+    AssertTrueL( ETrue, KListDataTest9 );    
+    TBool search = iData->IsSearchString();
+    AssertTrueL( ETrue, KListDataTest10 );
+    
+    iContainer->ActivateGc();
+    CWindowGc& gc = iContainer->SystemGc();
+    const TInt KRectHeight = 30;
+    TRect rect = iContainer->Rect();
+    rect.iBr.iY = rect.iTl.iY + KRectHeight;            
+    const CFont& font = *iEikEnv->NormalFont();
+    gc.UseFont( &font );
+    iData->DrawItem( gc, rect, KEikTestText, font, 0 );
+    AssertTrueL( ETrue, KListDataTest11 );    
+    iContainer->DeactivateGc();
+    }
+    
+// ---------------------------------------------------------------------------
+// Test CEikListBoxEditor
+// ---------------------------------------------------------------------------
+//
+void CBCTestListEiklistCase::TestCEikListBoxEditorL()
+    {
+    // test CTextListBoxModel
+    const MDesCArray* array = iModel->MatchableTextArray();
+    TListBoxModelItemArrayOwnership type = 
+        iModel->TestItemArrayOwnershipType();
+    AssertIntL( ELbmOwnsItemArray, type, KTestListModelTest1 );
+
+    // test CBCTestListBoxEditor
+    CBCTestListBoxEditor* editor = new( ELeave ) CBCTestListBoxEditor(
+        iModel, iEikEnv );
+    CleanupStack::PushL( editor );
+    editor->SetFont( iEikEnv->NormalFont() );
+    AssertTrueL( ETrue, KListBoxEditorTest1 );
+    
+    TRect rect = iContainer->Rect();
+    rect.iBr.iY = rect.iTl.iY + rect.Size().iHeight / 2;
+    editor->StartEditingL( *iContainer, rect, 0, 30 );
+    AssertTrueL( ETrue, KListBoxEditorTest2 );
+    
+    TBCTestListBoxEditorObserver observer;
+    editor->SetListBoxEditorObserver( &observer );
+    AssertTrueL( ETrue, KListBoxEditorTest3 );
+    
+    TKeyEvent eventEnter = { EKeyEnter, EKeyEnter, 0, 0 };
+    TKeyEvent eventShift = { '1', '1', EModifierCtrl | EModifierShift, 0 };
+    TKeyEvent eventT = { 'T', 'T', 0, 0 };
+    TKeyEvent evente = { 'e', 'e', 0, 0 };
+    TKeyEvent events = { 's', 's', 0, 0 };
+    TKeyEvent eventt = { 't', 't', 0, 0 };
+    
+    editor->OfferKeyEventL( eventEnter, EEventKey );
+    editor->SetListBoxEditorObserver( NULL );
+    
+    editor->OfferKeyEventL( eventT, EEventKey );
+    editor->OfferKeyEventL( evente, EEventKey );
+    editor->OfferKeyEventL( events, EEventKey );
+    editor->OfferKeyEventL( eventt, EEventKey );    
+    editor->OfferKeyEventL( eventShift, EEventKey );    
+    AssertTrueL( ETrue, KListBoxEditorTest4 );
+    
+    TPtrC text = editor->ItemText();
+    AssertTrueL( ETrue, KListBoxEditorTest5 );
+    
+    editor->TestWriteInternalStateL();
+    AssertTrueL( ETrue, KListBoxEditorTest6 );
+    
+    editor->OfferKeyEventL( eventEnter, EEventKey );
+    AssertTrueL( ETrue, KListBoxEditorTest7 );
+        
+    CleanupStack::PopAndDestroy( editor );
+    }
+    
+// ---------------------------------------------------------------------------
+// Test CTextListItemDrawer
+// ---------------------------------------------------------------------------
+//
+void CBCTestListEiklistCase::TestCTextListItemDrawerL()
+    {
+    CTextListItemDrawer* textDrawer = new( ELeave ) CTextListItemDrawer();
+    CleanupStack::PushL( textDrawer );
+    _LIT( KTestItemDrawer1, 
+        "CTextListItemDrawer::CTextListItemDrawer without parameter" );
+    AssertNotNullL( textDrawer, KTestItemDrawer1 );
+    
+    textDrawer->ConstructL( iEikEnv->NormalFont() );
+    _LIT( KTestItemDrawer2, "CTextListItemDrawer::ConstructL" );
+    AssertNotNullL( textDrawer, KTestItemDrawer2 );
+    CleanupStack::PopAndDestroy( textDrawer );
+    
+    // test CListItemDrawer        
+    TRect cursorRect = iTextDrawer->CListItemDrawer::MatcherCursorRect(
+        KTextItemDrawerMatchText, 0, 0, 0 );
+    AssertTrueL( ETrue, KListItemDrawerTest1 );
+       
+    TInt cursorAscent = iTextDrawer->CListItemDrawer::
+        MatcherCursorAscent( 0 );
+    AssertTrueL( ETrue, KListItemDrawerTest2 );
+    
+    iTextDrawer->SetSkinEnabledL( ETrue );
+    AssertTrueL( ETrue, KListItemDrawerTest3 );
+    
+    MAknsControlContext* context = 
+        iTextDrawer->SkinBackgroundControlContext();
+    AssertTrueL( ETrue, KListItemDrawerTest4 );
+    
+    iTextDrawer->SetSkinEnabledL( EFalse );
+    AssertTrueL( ETrue, KListItemDrawerTest5 );
+    
+    iTextDrawer->SetFont( iEikEnv->TitleFont() );
+    AssertTrueL( ETrue, KListItemDrawerTest6 );
+    
+    const CFont* font = iTextDrawer->CListItemDrawer::Font( 0 );
+    AssertTrueL( ETrue, KListItemDrawerTest7 );
+    
+    const CFont* textFont = iTextDrawer->Font( 0 );
+    AssertTrueL( ETrue, KListItemDrawerTest8 );
+    
+    iTextDrawer->SetMarkColumnWidth( 50 );
+    AssertTrueL( ETrue, KListItemDrawerTest9 );
+    
+    iTextDrawer->SetMarkGutter( 20 );
+    AssertTrueL( ETrue, KListItemDrawerTest10 );
+    
+    TInt markGutter = iTextDrawer->MarkGutter();
+    AssertTrueL( ETrue, KListItemDrawerTest11 );
+    
+    TInt markColumn = iTextDrawer->MarkColumn();
+    AssertTrueL( ETrue, KListItemDrawerTest12 );
+    
+    iTextDrawer->DrawItemMark( ETrue, EFalse, TPoint( 0, 0 ) );    
+    AssertTrueL( ETrue, KListItemDrawerTest13 );
+    
+    TRect rect = iContainer->Rect();
+    TSize size = iTextDrawer->CListItemDrawer::MinimumCellSize();
+    AssertTrueL( ETrue, KListItemDrawerTest14 );
+    
+    size = iTextDrawer->ItemCellSize();
+    rect.iBr.iY = rect.iTl.iY + size.iHeight;
+    rect.iBr.iX = rect.iTl.iX + size.iWidth;
+    iTextDrawer->ClearRect( rect );
+    TInt itemWidthInPixel = iTextDrawer->ItemWidthInPixels( 0 );
+    AssertTrueL( ETrue, KListItemDrawerTest15 );
+    
+    iTextDrawer->SetSymbolFont( iEikEnv->NormalFont() );
+    AssertTrueL( ETrue, KListItemDrawerTest16 );
+    
+    // test CTextListItemDrawer
+    cursorRect = iTextDrawer->MatcherCursorRect( KTextItemDrawerMatchText, 0, 0, 0 );
+    AssertTrueL( ETrue, KListItemDrawerTest17 );
+    
+    cursorAscent = iTextDrawer->MatcherCursorAscent( 0 );
+    AssertTrueL( ETrue, KListItemDrawerTest18 );
+    
+    TPtrC ptr( KTextItemDrawerMatchText );    
+    iTextDrawer->SetSearchStringL( &ptr );
+    AssertTrueL( ETrue, KListItemDrawerTest19 );
+    
+    iContainer->ActivateGc();
+    CWindowGc& gc = iContainer->SystemGc();
+    iTextDrawer->TestDrawItemText( gc );
+    AssertTrueL( ETrue, KListItemDrawerTest20 );    
+    iContainer->DeactivateGc();
+    }
+    
+// ---------------------------------------------------------------------------
+// Test CListBoxView
+// ---------------------------------------------------------------------------
+//
+void CBCTestListEiklistCase::TestListBoxViewL()
+    {
+    CListBoxView* view = iListBox->View();
+    view->ToggleItemL( 0 );
+    AssertTrueL( ETrue, KListViewTest1 );
+    
+    view->SetAnchor( 8 );
+    AssertTrueL( ETrue, KListViewTest2 );
+    
+    view->DeselectRangeL( 0, 4 );
+    AssertTrueL( ETrue, KListViewTest3 );
+    
+    TBool visible = view->ScrollToMakeItemVisible( 8 );
+    AssertTrueL( ETrue, KListViewTest4 );
+    
+    view->SetPaintedSelection( ETrue );
+    AssertTrueL( ETrue, KListViewTest5 );
+    
+    view->SetTextColor( KRgbBlack );
+    AssertTrueL( ETrue, KListViewTest6 );
+    
+    TRgb rgb = view->TextColor();    
+    AssertTrueL( rgb == KRgbBlack, KListViewTest7 );
+    
+    view->DrawEmptyList( iContainer->Rect() );
+    AssertTrueL( ETrue, KListViewTest8 );
+    
+    TInt topIndex = view->CalcNewTopItemIndexSoItemIsVisible( 8 );
+    _LIT( KListViewTest11, 
+        "CListBoxView::CalcNewTopItemIndexSoItemIsVisible" );
+    AssertTrueL( ETrue, KListViewTest11 );
+    
+    CArrayFixFlat<TInt>* selectionArray = new( ELeave ) 
+        CArrayFixFlat<TInt>( 5 );
+    CleanupStack::PushL( selectionArray );
+    selectionArray->AppendL( 0 );
+    selectionArray->AppendL( 1 );
+    selectionArray->AppendL( 2 );
+    view->SetSelectionIndexesL( selectionArray );
+    AssertTrueL( ETrue, KListViewTest9 );
+    
+    selectionArray->Reset();    
+    view->GetSelectionIndexesL( selectionArray );
+    AssertTrueL( ( selectionArray->Length() == 4 && 
+        selectionArray->At(0) == 0), 
+        KListViewTest10 );
+    
+    CleanupStack::PopAndDestroy( selectionArray );
+    }
+    
+// ---------------------------------------------------------------------------
+// Test CEikListBox
+// ---------------------------------------------------------------------------
+//
+void CBCTestListEiklistCase::TestEikListBoxL()
+    {
+    // test constructL of CEikListBox
+    CDesCArray* textArray = iEikEnv->ReadDesCArrayResourceL( 
+        R_BCTESTLIST_ITEM_SINGLE1 );
+    CleanupStack::PushL( textArray );    
+    
+    CTextListBoxModel* model = new( ELeave ) CTextListBoxModel();      
+    CleanupStack::PushL( model );
+    model->ConstructL( textArray );
+    
+    CTextListItemDrawer* drawer = new( ELeave ) CTextListItemDrawer();
+    CleanupStack::PushL( drawer );
+    drawer->ConstructL( iEikEnv->NormalFont() );
+    
+    CEikListBox* listBox = new( ELeave ) CEikListBox();
+    CleanupStack::PushL( listBox );    
+    TGulBorder border( TGulBorder::ESingleGray );
+    listBox->ConstructL( model, drawer, 
+        iContainer, border, 
+        EAknListBoxSelectionList | EAknListBoxViewerFlags );    
+
+    CleanupStack::PopAndDestroy( listBox );
+    CleanupStack::Pop( drawer );
+    CleanupStack::Pop( model );
+    CleanupStack::Pop( textArray );
+    AssertTrueL( ETrue, KTextListTest2 );
+
+    // test CEikListBox
+    TRect rect = iContainer->Rect();
+    iListBox->Reset();
+    AssertTrueL( ETrue, KTextListTest3 );
+    iListBox->CreateMatchBufferL();
+    AssertTrueL( ETrue, KTextListTest4 );
+    RIncrMatcherBase* baMatch = iListBox->MatchBuffer();
+    AssertTrueL( ETrue, KTextListTest5 );
+    iListBox->ClearMatchBuffer();
+    AssertTrueL( ETrue, KTextListTest6 );
+    iListBox->CalcWidthBasedOnNumOfChars( 5 );
+    AssertTrueL( ETrue, KTextListTest7 );
+    iListBox->CalcWidthBasedOnRequiredItemWidth( 30 );
+    AssertTrueL( ETrue, KTextListTest8 );
+    iListBox->CalcHeightBasedOnNumOfItems( 2 );
+    AssertTrueL( ETrue, KTextListTest9 );
+    TSize size = iListBox->MinimumSize();
+    AssertTrueL( ETrue, KTextListTest10 );
+    iListBox->CalcSizeInPixels( 5, 2 );
+    AssertTrueL( ETrue, KTextListTest11 );
+    iListBox->SetViewRectFromClientRect( rect );
+    AssertTrueL( ETrue, KTextListTest12 );   
+    iListBox->CalculatePopoutRect( 0, 0, rect );
+    AssertTrueL( ETrue, KTextListTest13 );
+    TInt bottomIndex = iListBox->BottomItemIndex();
+    AssertTrueL( ETrue, KTextListTest14 );
+    iListBox->SetTopItemIndex( 1 );
+    AssertTrueL( ETrue, KTextListTest15 );
+    iListBox->AdjustTopItemIndex();
+    AssertTrueL( ETrue, KTextListTest16 );
+    iListBox->SetCurrentItemIndexAndDraw( 0 );
+    AssertTrueL( ETrue, KTextListTest17 );
+    TBCTestListBoxObserver observer;
+    iListBox->SetListBoxObserver( &observer );
+    AssertTrueL( ETrue, KTextListTest18 );
+    CListBoxView* view = iListBox->MakeViewClassInstanceL();
+    delete view;
+    AssertTrueL( ETrue, KTextListTest19 );
+    iListBox->DrawMatcherCursor();
+    AssertTrueL( ETrue, KTextListTest20 );
+    TInt interItemGap = iListBox->InterItemGap();
+    AssertTrueL( ETrue, KTextListTest21 );
+    TEikScrollBarFrameLayout frameLayout;
+    iListBox->CreateScrollBarFrameLayout( frameLayout );
+    AssertTrueL( ETrue, KTextListTest22 );
+    TInt scrollGraInPixels = iListBox->HorizScrollGranularityInPixels();
+    AssertTrueL( ETrue, KTextListTest23 );
+    iListBox->SetViewRectHeightAdjustment( 5 );
+    AssertTrueL( ETrue, KTextListTest24 );
+    TInt verticalInterItemGap = iListBox->VerticalInterItemGap();
+    AssertTrueL( ETrue, KTextListTest25 );
+    iListBox->ScrollToMakeItemVisible( 5 );
+    
+    CArrayFixFlat<TInt>* selectionArray = new( ELeave ) 
+        CArrayFixFlat<TInt>( 4 );
+    CleanupStack::PushL( selectionArray );
+    selectionArray->AppendL( 0 );
+    selectionArray->AppendL( 1 );
+    selectionArray->AppendL( 3 );
+    iListBox->SetSelectionIndexesL( selectionArray );
+    AssertTrueL( ETrue, KTextListTest26 );
+    const CArrayFix<TInt>* getSelectionArray = iListBox->SelectionIndexes();
+    AssertTrueL( 
+        ( selectionArray->Length() == getSelectionArray->Length() )
+        && ( selectionArray->At( 0 ) == getSelectionArray->At( 0 ) ), 
+        KTextListTest27 );
+    TBool multiselection = iListBox->IsMultiselection();
+    AssertTrueL( !multiselection, KTextListTest28 );
+    CleanupStack::PopAndDestroy( selectionArray );
+    iListBox->ClearSelection();
+    AssertTrueL( ETrue, KTextListTest29 );
+    iListBox->HandleLeftArrowKeyL( CListBoxView::ESingleSelection );
+    AssertTrueL( ETrue, KTextListTest30 );
+    iListBox->HandleRightArrowKeyL( CListBoxView::ENoSelection );
+    AssertTrueL( ETrue, KTextListTest31 );
+    TKeyEvent eventT = { 'T', 'T', 0, 0 };
+    iListBox->OfferKeyEventL( eventT, EEventKey );
+    AssertTrueL( ETrue, KTextListTest32 );
+    TInt horizontalNudge = iListBox->HorizontalNudgeValue();
+    AssertTrueL( ETrue, KTextListTest33 );
+    CEikScrollBar* scrollBar = new( ELeave ) CEikScrollBar();
+    CleanupStack::PushL( scrollBar );
+    scrollBar->ConstructL( iListBox, iContainer, CEikScrollBar::EVertical,
+        iContainer->Rect().Size().iHeight );    
+    iListBox->HandleScrollEventL( scrollBar, EEikScrollDown );
+    AssertTrueL( ETrue, KTextListTest34 );
+    CleanupStack::PopAndDestroy( scrollBar );
+    iListBox->HandleDragEventL( TPoint( 0, 0 ) );
+    AssertTrueL( ETrue, KTextListTest35 );
+    iListBox->SimulateArrowKeyEventL( EKeyDownArrow );
+    AssertTrueL( ETrue, KTextListTest36 );
+    iListBox->SetDimmed( ETrue );    
+    iListBox->SetDimmed( EFalse );
+    AssertTrueL( ETrue, KTextListTest37 );
+    iListBox->UndoLastChar();
+    AssertTrueL( ETrue, KTextListTest38 );
+    
+    iListBox->SetShortcutValueFromPrevList( 1 );
+    AssertTrueL( ETrue, KTextListTest39 );
+    TInt shortcutValue = iListBox->ShortcutValueForNextList();
+    AssertTrueL( ETrue, KTextListTest40 );
+    TRect hightlightRect = iListBox->HighlightRect();
+    AssertTrueL( ETrue, KTextListTest41 );
+    iListBox->MatchTypedCharL( 'm' );
+    AssertTrueL( ETrue, KTextListTest42 );
+    TBool lastCharMatched = iListBox->LastCharMatched();
+    AssertTrueL( ETrue, KTextListTest43 );
+    iListBox->SetLaunchingButton( NULL );
+    AssertTrueL( ETrue, KTextListTest44 );
+    
+    TInt eventModified = iListBox->EventModifiers();
+    AssertTrueL( ETrue, KTextListTest45 );
+    CEikListBox::TReasonForFocusLost reason = 
+        iListBox->ReasonForFocusLostL();
+    AssertTrueL( ETrue, KTextListTest46 );
+    iListBox->EditItemL( 40 );
+    AssertTrueL( ETrue, KTextListTest47 );
+    iListBox->StopEditingL( EFalse );
+    AssertTrueL( ETrue, KTextListTest48 );
+    
+    CArrayFixFlat<TInt>* indexArray = new( ELeave ) CArrayFixFlat<TInt>( 4 );
+    CleanupStack::PushL( indexArray );
+    indexArray->AppendL( 9 );
+    indexArray->AppendL( 10 );    
+    CDesCArray* array = static_cast<CDesCArray*>( 
+        iListBox->Model()->ItemTextArray() );
+    array->AppendL( KEikAddItem );
+    array->AppendL( KEikAddItem );    
+    iListBox->HandleItemAdditionL( *indexArray );
+    AssertTrueL( ETrue, KTextListTest49 );
+    iListBox->HandleItemRemovalL( *indexArray );
+    AssertTrueL( ETrue, KTextListTest50 );
+    iListBox->HandleItemRemovalL();
+    AssertTrueL( ETrue, KTextListTest51 );
+    CleanupStack::PopAndDestroy( indexArray );
+    
+    // test CEikTextListBox
+    CTextListBoxModel* textModel = iListBox->Model();
+    AssertTrueL( ETrue, KTextListTest52 );
+    
+    RFs& tempServer = iEikEnv->FsSession();    
+    tempServer.Delete( KStreamName );    
+    RFileWriteStream fWrite;
+    User::LeaveIfError( fWrite.Create( tempServer, 
+        KStreamName, EFileWrite ) );
+    CleanupClosePushL( fWrite );
+    iListBox->WriteInternalStateL( fWrite );
+    AssertTrueL( ETrue, KTextListTest53 );
+    CleanupStack::PopAndDestroy( &fWrite );
+    
+    CEikTextListBox* textList = new( ELeave ) CEikTextListBox();
+    CleanupStack::PushL( textList );
+    textList->SetContainerWindowL( *iContainer );
+    TResourceReader textReader;
+    iEikEnv->CreateResourceReaderLC( textReader, 
+        R_BCTESTLIST_SINGLE_1_ADD_RM );
+    textList->ConstructFromResourceL( textReader );
+    CleanupStack::PopAndDestroy(); // textReader
+    CleanupStack::PopAndDestroy( textList );
+    AssertTrueL( ETrue, KTextListTest54 );
+    }
+
+// ---------------------------------------------------------------------------
+// Test CSnakingListBoxView
+// ---------------------------------------------------------------------------
+//
+void CBCTestListEiklistCase::TestSnakingListBoxViewL()
+    {
+    CSnakingListBoxView* view = 
+        static_cast<CSnakingListBoxView*>( iSnakingList->View() );
+    TInt num = view->VisibleWidth( view->ViewRect() );
+    AssertTrueL( ETrue, KSnakingViewTest1 );
+    view->HScroll( num - 1 );
+    AssertTrueL( ETrue, KSnakingViewTest2 );
+    view->SetItemHeight( 30 );
+    AssertTrueL( ETrue, KSnakingViewTest3 );
+    TInt visible = view->CalculateHScrollOffsetSoItemIsVisible( 0 );
+    AssertTrueL( ETrue, KSnakingViewTest4 );
+    }
+
+// ---------------------------------------------------------------------------
+// Test CEikSnakingListBox
+// ---------------------------------------------------------------------------
+//
+void CBCTestListEiklistCase::TestSnakingListBoxL()
+    {
+    TRect rect = iContainer->Rect();
+    CListBoxView* view = iSnakingList->MakeViewClassInstanceL();
+    delete view;
+    AssertTrueL( ETrue, KSnakingTest1 );
+    iSnakingList->SetColumnWidth( 100 );
+    AssertTrueL( ETrue, KSnakingTest2 );
+    TInt columnWidth = iSnakingList->ColumnWidth();
+    AssertIntL( 100, columnWidth, KSnakingTest3 );
+    iSnakingList->HandleLeftArrowKeyL( CListBoxView::ESingleSelection );
+    AssertTrueL( ETrue, KSnakingTest4 );
+    iSnakingList->HandleRightArrowKeyL( CListBoxView::EContiguousSelection );
+    AssertTrueL( ETrue, KSnakingTest5 );
+    TInt horizontalNudge = iSnakingList->HorizontalNudgeValue();
+    AssertTrueL( ETrue, KSnakingTest6 );
+    TInt horizGranuInPixel = iSnakingList->HorizScrollGranularityInPixels();
+    AssertTrueL( ETrue, KSnakingTest7 );
+    iSnakingList->SetTopItemIndex( 1 );
+    AssertTrueL( ETrue, KSnakingTest8 );
+    iSnakingList->AdjustTopItemIndex();
+    AssertTrueL( ETrue, KSnakingTest9 );
+    iSnakingList->SizeChanged();
+    AssertTrueL( ETrue, KSnakingTest10 );
+    iSnakingList->HandleDragEventL( TPoint( 0, 0 ) );
+    AssertTrueL( ETrue, KSnakingTest11 );
+    iSnakingList->HandleViewRectSizeChangeL();
+    AssertTrueL( ETrue, KSnakingTest12 );
+    iSnakingList->MoveToNextOrPreviousItemL( TPoint( 10, 50 ) );
+    AssertTrueL( ETrue, KSnakingTest13 );
+    iSnakingList->RestoreClientRectFromViewRect( rect );
+    AssertTrueL( ETrue, KSnakingTest14 );
+    TInt height = iSnakingList->AdjustRectHeightToWholeNumberOfItems( 
+        rect );
+    AssertTrueL( ETrue, KSnakingTest15 );
+    
+    CArrayFixFlat<TCoeColorUse>* colorUseList = new( ELeave ) 
+        CArrayFixFlat<TCoeColorUse>( 4 );
+    CleanupStack::PushL( colorUseList );
+    iSnakingList->CEikSnakingListBox::GetColorUseListL( *colorUseList );
+    AssertTrueL( ETrue, KSnakingTest16 );
+    colorUseList->Reset();    
+    iSnakingList->GetColorUseListL( *colorUseList );
+    AssertTrueL( ETrue, KSnakingTest17 );
+    CleanupStack::PopAndDestroy( colorUseList );    
+    TPointerEvent event;
+    event.iType = TPointerEvent::EButton1Down;
+    event.iModifiers = 0;
+    TPoint eventPos(0, 30);
+    event.iPosition = eventPos;
+    event.iParentPosition = eventPos;
+    iSnakingList->CEikSnakingListBox::HandlePointerEventL( event );
+    AssertTrueL( ETrue, KSnakingTest18 );
+    iSnakingList->HandlePointerEventL( event );
+    AssertTrueL( ETrue, KSnakingTest19 );
+    iSnakingList->CEikSnakingListBox::HandleResourceChange( 
+        KAknsMessageSkinChange );
+    AssertTrueL( ETrue, KSnakingTest20 );
+    iSnakingList->HandleResourceChange( KAknsMessageSkinChange );
+    AssertTrueL( ETrue, KSnakingTest21 );
+    CTextListBoxModel* model = iSnakingList->Model();
+    AssertTrueL( ETrue, KSnakingTest22 );
+    }
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CBCTestListBoxData::TestConstructFont
+// ---------------------------------------------------------------------------
+//
+void CBCTestListBoxData::TestConstructFontL( const CFont* aBaseFont )
+    {
+    TFontStyle style( EPostureItalic, EStrokeWeightBold, 
+        EPrintPosSuperscript );    
+    ConstructFontL( aBaseFont, style, iItalicFont );    
+    }
+    
+// ---------------------------------------------------------------------------
+// CBCTestListBoxData::TestRegenerateFonts
+// ---------------------------------------------------------------------------
+//
+TInt CBCTestListBoxData::TestRegenerateFonts()
+    {       
+    TInt fontHeightInTwips = 20;
+    TInt ret = RegenerateFonts( iNormalFont, fontHeightInTwips );    
+    return ret;
+    }
+    
+// ---------------------------------------------------------------------------
+// CBCTestListBoxData::TestUpdateFontBoundValues
+// ---------------------------------------------------------------------------
+//
+void CBCTestListBoxData::TestUpdateFontBoundValues( const CFont* aBaseFont )
+    {    
+    UpdateFontBoundValues( *aBaseFont );
+    }
+
+// ---------------------------------------------------------------------------
+// CBCTestListBoxData::TestCFontWithStyle
+// ---------------------------------------------------------------------------
+//
+TBool CBCTestListBoxData::TestCFontWithStyle()
+    {
+    TFontStyle style( EPostureItalic, EStrokeWeightBold, 
+        EPrintPosSuperscript );    
+    iNormalFont.SetFontStyle( style );
+    TFontStyle fontStyle = iNormalFont.FontStyle();
+    iNormalFont.ReleaseFonts();    
+    return ( fontStyle == style );
+    }
+    
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// TBCTestListBoxEditorObserver::HandleListBoxEditorEventL
+// Empty functions for test CEikListBoxTextEditor
+// ---------------------------------------------------------------------------
+//
+TKeyResponse TBCTestListBoxEditorObserver::HandleListBoxEditorEventL(
+    MEikListBoxEditor* , const TKeyEvent& )
+    {
+    return EKeyWasConsumed;
+    }
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// C++ constructor
+// ---------------------------------------------------------------------------
+//
+CBCTestListBoxEditor::CBCTestListBoxEditor( MListBoxModel* aModel, 
+    CEikonEnv* aEikEnv ): CEikListBoxTextEditor( aModel ), iEikEnv( aEikEnv )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// Test protected API WriteInternalStateL
+// ---------------------------------------------------------------------------
+//
+void CBCTestListBoxEditor::TestWriteInternalStateL()
+    {
+    RFs& tempServer = iEikEnv->FsSession();
+    tempServer.Delete( KStreamName );
+    
+    RFileWriteStream fWrite;
+    User::LeaveIfError( fWrite.Create( tempServer, 
+        KStreamName, EFileWrite ) );
+    CleanupClosePushL( fWrite );
+    WriteInternalStateL( fWrite );
+    CleanupStack::PopAndDestroy( &fWrite );
+    }
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CBCTestTextListItemDrawer::CBCTestTextListItemDrawer( 
+    MTextListBoxModel* aTextListBoxModel, const CFont* aFont ):
+    CTextListItemDrawer( aTextListBoxModel, aFont )
+    {    
+    }
+
+// ---------------------------------------------------------------------------
+// Test protected API of CTextListItemDrawer and CListItemDrawer
+// ---------------------------------------------------------------------------
+//
+void CBCTestTextListItemDrawer::TestDrawItemText( CWindowGc& aGc )
+    {
+    CListItemDrawer::SetGc( &aGc );
+    SetGc( &aGc );    
+    TSize size = ItemCellSize();
+    TRect rect( TPoint( 0, 0 ), size );    
+    DrawItemText( 0, rect, ETrue, EFalse, EFalse );
+    }
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Fake list box observer
+// ---------------------------------------------------------------------------
+//
+void TBCTestListBoxObserver::HandleListBoxEventL( CEikListBox*, 
+        TListBoxEvent )
+    {    
+    }
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Test protected API: ItemArrayOwnershipType
+// ---------------------------------------------------------------------------
+//
+TListBoxModelItemArrayOwnership CBCTestTextListModel::
+    TestItemArrayOwnershipType()
+    {
+    return ItemArrayOwnershipType();   
+    }