⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t_viewsort.cpp

📁 测试的一些方面!大家好好的学习!我们互相交流!
💻 CPP
字号:
// T_ViewSort.cpp
// Copyright (c) 2003-2004 Symbian Software Ltd. All rights reserved.
//
// ViewSort Test module


#include <e32test.h>
#include <cntviewbase.h>
#include <cntitem.h>
#include <cntfldst.h>

#include "CContactViewEventQueue.h"


_LIT(KTestName, "T_ViewSort");
_LIT(KTestDbName, "c:\\system\\data\\T_ViewSort.cdb");

// data to find SimpleSortPlugin DLL
_LIT8(KReverseSortPlugin, "application.vnd.symbian.com/contacts-reverse-sort");

LOCAL_D RTest test(KTestName);


class CTestResources : public CBase
    {
    public:
        static CTestResources* NewLC();
        void ConstructL();
        ~CTestResources();

		TContactItemId AddNewContactL(const TDesC& aGivenName, const TDesC& aFamilyName=KNullDesC, const TDesC& aCompanyName=KNullDesC);
		void CreateTestOneContactsL();
		void CreateTestThreeContactsL();
		void StartTestOneL();
		void StartTestThreeL();

        RFs iFs;
        CContactDatabase* iDb;
        CContactViewEventQueue* iViewEventQueue;
		CContactViewEventQueue* iViewEventQueueReverse;
        RContactViewSortOrder iViewSortOrder;
        CContactLocalView* iLocalView;
        CContactLocalView* iLocalReverseView;
		RArray<TContactItemId> iIdsInViewSortOrder;
		RArray<TContactItemId> iIdsInViewReverseSortOrder;
    };

CTestResources* CTestResources::NewLC()
    {
    CTestResources* self = new(ELeave) CTestResources;
    CleanupStack::PushL(self);
    self->ConstructL();
    return self;
    }

void CTestResources::ConstructL()
    {
    User::LeaveIfError(iFs.Connect());
	}

void CTestResources::StartTestOneL()
	{
	// Create an empty database
	iDb = CContactDatabase::ReplaceL(KTestDbName);
	CreateTestOneContactsL();
	
    test.Next(_L("Starting Test 1"));
	
	iViewEventQueue = CContactViewEventQueue::NewL();
	iViewEventQueueReverse = CContactViewEventQueue::NewL();

	iViewSortOrder.AppendL(KUidContactFieldGivenName);
	iViewSortOrder.AppendL(KUidContactFieldFamilyName);
	iViewSortOrder.AppendL(KUidContactFieldCompanyName);

	iLocalView = CContactLocalView::NewL(*iViewEventQueue, *iDb, iViewSortOrder, EContactsOnly);
	TRAPD(err, iLocalReverseView = CContactLocalView::NewL(*iViewEventQueueReverse, *iDb, iViewSortOrder, EContactsOnly, KReverseSortPlugin));
	// KErrNotFound means Sort Plug-in was not found
	test(err == KErrNone);

	// Wait 5 seconds for the view to get ready
	TContactViewEvent event;
	test(iViewEventQueue->ListenForEvent(5,event));
	test(event.iEventType == TContactViewEvent::EReady);

    // Wait 5 seconds for the reverse view to get ready
    test(iViewEventQueueReverse->ListenForEvent(5,event));
    test(event.iEventType == TContactViewEvent::EReady);
    }

void CTestResources::StartTestThreeL()
	{
	// Create an empty database
    iDb = CContactDatabase::ReplaceL(KTestDbName);
	CreateTestThreeContactsL();

	test.Next(_L("Starting Test 3"));

    iViewEventQueue = CContactViewEventQueue::NewL();
	iViewEventQueueReverse = CContactViewEventQueue::NewL();

    iViewSortOrder.AppendL(KUidContactFieldGivenName);
    iViewSortOrder.AppendL(KUidContactFieldFamilyName);
    iViewSortOrder.AppendL(KUidContactFieldCompanyName);

    iLocalView = CContactLocalView::NewL(*iViewEventQueue, *iDb, iViewSortOrder, EContactsOnly);
	TRAPD(err, iLocalReverseView = CContactLocalView::NewL(*iViewEventQueueReverse, *iDb, iViewSortOrder, EContactsOnly, KReverseSortPlugin));
	// KErrNotFound means Sort Plug-in was not found
	test(err == KErrNone);

    // Wait 5 seconds for the view to get ready
    TContactViewEvent event;
    test(iViewEventQueue->ListenForEvent(5,event));
    test(event.iEventType == TContactViewEvent::EReady);

    // Wait 5 seconds for the reverse view to get ready
    test(iViewEventQueueReverse->ListenForEvent(5,event));
    test(event.iEventType == TContactViewEvent::EReady);
    }
    

CTestResources::~CTestResources()
    {
    if (iLocalView) iLocalView->Close(*iViewEventQueue);
    if (iLocalReverseView) iLocalReverseView->Close(*iViewEventQueueReverse);
    iViewSortOrder.Close();
    delete iViewEventQueue;
	delete iViewEventQueueReverse;
    delete iDb;
    iFs.Delete(KTestDbName);
    iFs.Close();
	iIdsInViewSortOrder.Close();
    }


void CTestResources::CreateTestOneContactsL()
	{
	// these must be in the same order as the view ordering
	iIdsInViewSortOrder.Append(AddNewContactL(_L(" a")));	// Check that space before is dealt with properly


	iIdsInViewSortOrder.Append(AddNewContactL(_L(" a"),		_L(" y")));
	iIdsInViewSortOrder.Append(AddNewContactL(_L(" a"),		_L("x")));		
	iIdsInViewSortOrder.Append(AddNewContactL(_L(" aa"),	_L("x")));	// Check that space before is dealt with properly
	iIdsInViewSortOrder.Append(AddNewContactL(_L(" aa"),	_L("y")));	
	iIdsInViewSortOrder.Append(AddNewContactL(_L(" c")));
	iIdsInViewSortOrder.Append(AddNewContactL(_L(" c"),		_L("x")));
	
	
	iIdsInViewSortOrder.Append(AddNewContactL(_L("a")));
	iIdsInViewSortOrder.Append(AddNewContactL(_L("a"),		_L("z")));
	iIdsInViewSortOrder.Append(AddNewContactL(_L("aa")));
	iIdsInViewSortOrder.Append(AddNewContactL(_L("aa"),		_L("x")));
	iIdsInViewSortOrder.Append(AddNewContactL(_L("aa"),		_L("x")));
	iIdsInViewSortOrder.Append(AddNewContactL(_L("aa"),		_L("z")));
	
	iIdsInViewSortOrder.Append(AddNewContactL(_L("b"),		_L(" xx")));
	iIdsInViewSortOrder.Append(AddNewContactL(_L("b"),		_L(" y")));	
	iIdsInViewSortOrder.Append(AddNewContactL(_L("b"),		_L("x")));

	iIdsInViewSortOrder.Append(AddNewContactL(_L("b"),		_L("z    z")));
	iIdsInViewSortOrder.Append(AddNewContactL(_L("b"),		_L("z x")));
	iIdsInViewSortOrder.Append(AddNewContactL(_L("b"),		_L("zx")));

	iIdsInViewSortOrder.Append(AddNewContactL(_L("c"),		_L("X")));
	iIdsInViewSortOrder.Append(AddNewContactL(_L("c"),		_L("z")));
	iIdsInViewSortOrder.Append(AddNewContactL(_L("d"),		_L("x")));
	iIdsInViewSortOrder.Append(AddNewContactL(_L("D"),		_L("y")));
	iIdsInViewSortOrder.Append(AddNewContactL(_L("d"),		_L("z")));
	iIdsInViewSortOrder.Append(AddNewContactL(_L("e")));
	iIdsInViewSortOrder.Append(AddNewContactL(_L(""),		_L(""),		_L("f")));
	iIdsInViewSortOrder.Append(AddNewContactL(_L(""),		_L("g")));
	iIdsInViewSortOrder.Append(AddNewContactL(_L("h"),		_L(""),		_L("a")));
	iIdsInViewSortOrder.Append(AddNewContactL(_L("h"),		_L("b")));
	iIdsInViewSortOrder.Append(AddNewContactL(_L("h"),		_L("b"),	_L("a")));

	// Contacts 11 & 12 have the same text
	// so reverse order sort will put these in Id order
	const TInt count = iIdsInViewSortOrder.Count();
	for (TInt i = 0; i < count; i++)
		{
		TContactItemId id = iIdsInViewSortOrder[count - i - 1];

		if (id == 11)
			{
			iIdsInViewReverseSortOrder.Append(12);
			}
		else if (id == 12)
			{
			iIdsInViewReverseSortOrder.Append(11);
			}
		else
			{
			iIdsInViewReverseSortOrder.Append(id);
			}
		}
	}


void CTestResources::CreateTestThreeContactsL()
	{
	// Content and order specified in original defect report
	// DEF022410
	TContactItemId additionOrder[8];
	
	additionOrder[0] = AddNewContactL(_L("Sunshine"));
	additionOrder[1] = AddNewContactL(_L("Symbian"));
	additionOrder[2] = AddNewContactL(_L("S ymbian"));
	additionOrder[3] = AddNewContactL(_L("Symmetrical"));
	additionOrder[4] = AddNewContactL(_L(" Symbian"));
	additionOrder[5] = AddNewContactL(_L("Symbian "));
	additionOrder[6] = AddNewContactL(_L("_Sunshine"));
	additionOrder[7] = AddNewContactL(_L("S_unshine"));

	iIdsInViewSortOrder.Append(additionOrder[6]);
	iIdsInViewSortOrder.Append(additionOrder[4]);
	iIdsInViewSortOrder.Append(additionOrder[7]);
	iIdsInViewSortOrder.Append(additionOrder[2]);
	iIdsInViewSortOrder.Append(additionOrder[0]);
	iIdsInViewSortOrder.Append(additionOrder[1]);
	iIdsInViewSortOrder.Append(additionOrder[5]);
	iIdsInViewSortOrder.Append(additionOrder[3]);
	}
	
	//	test to check that special characters
	//	are sorted properly (INC039675)
	void CTestResources::CreateTestFourContactsL()
	{
	TContactItemId additionOrder[8];

	additionOrder[0] = AddNewContactL(_L(".alli"));
	additionOrder[1] = AddNewContactL(_L("ally"));
	additionOrder[2] = AddNewContactL(_L("alli"));
	additionOrder[3] = AddNewContactL(_L(".ally"));
	additionOrder[4] = AddNewContactL(_L("alli ."));
	additionOrder[5] = AddNewContactL(_L("al .ly"));
	additionOrder[6] = AddNewContactL(_L("all .i"));
	additionOrder[7] = AddNewContactL(_L(" .ally"));

	//	correct behaviour of view is in this order
	iIdsInViewSortOrder.Append(additionOrder[7]);
	iIdsInViewSortOrder.Append(additionOrder[0]);
	iIdsInViewSortOrder.Append(additionOrder[3]);
	iIdsInViewSortOrder.Append(additionOrder[5]);
	iIdsInViewSortOrder.Append(additionOrder[6]);
	iIdsInViewSortOrder.Append(additionOrder[2]);
	iIdsInViewSortOrder.Append(additionOrder[4]);
	iIdsInViewSortOrder.Append(additionOrder[1]);

	}

LOCAL_C void TestViewOrderOfContactsL()
    {
    test.Next(_L("Test the view sort order"));
	CTestResources* res = CTestResources::NewLC();
	res->StartTestOneL();
	CleanupStack::PopAndDestroy(res);

	res = CTestResources::NewLC();
	res->StartTestThreeL();
	CleanupStack::PopAndDestroy(res);
	
	}



LOCAL_C void DoTestsL()
    {
	test.Start(_L("T_ViewSort"));

	TestViewOrderOfContactsL();

    test.End();
    }

GLDEF_C TInt E32Main()
	{
    // Init
    CTrapCleanup* cleanupStack = CTrapCleanup::New();
    if (!cleanupStack)
        {
        return KErrNoMemory;
        }

    CActiveScheduler* activeScheduler = new CActiveScheduler;
    if (!activeScheduler)
        {
        return KErrNoMemory;
        }
    CActiveScheduler::Install(activeScheduler);

    // Run the tests
    TRAPD(err, DoTestsL());

    // Cleanup
    delete activeScheduler;
    delete cleanupStack;
	return err;
    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -