loggingservices/eventlogger/test/src/t_logfilter.cpp
changeset 0 08ec8eefde2f
child 11 667e88a979d7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/loggingservices/eventlogger/test/src/t_logfilter.cpp	Fri Jan 22 11:06:30 2010 +0200
@@ -0,0 +1,294 @@
+// Copyright (c) 2002-2009 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:
+//
+
+#include <s32file.h>
+#include "TEST.H"
+
+/* this fixes a MSVC link warning */
+#ifdef __VC32__
+#pragma comment (linker, "/opt:noref") 
+#endif
+
+#undef test  //there is a "test" macro which hides "RTest test" declaration.
+
+RTest test(_L("Log Filter Test Harness"));
+
+/**
+@SYMTestCaseID          SYSLIB-LOGENG-CT-0924
+@SYMTestCaseDesc	    CLogFilter functionality test
+@SYMTestPriority 	    High
+@SYMTestActions  	    Tests for event,remote,direction,duration,status,contact,number,copying,flags types
+                        Tests for copying of two filter objects and test for its equality.
+@SYMTestExpectedResults Test must not fail
+@SYMREQ                 REQ0000
+*/
+LOCAL_C void TestFilterL()
+//
+//
+//
+	{
+	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0924 "));
+	CLogFilter* filter1 = CLogFilter::NewL();
+	CleanupStack::PushL(filter1);
+
+	// Event type
+	TEST(filter1->EventType() == TUid::Null());
+
+	filter1->SetEventType(TUid::Uid(0x12345678));
+	TEST(filter1->EventType() == TUid::Uid(0x12345678));
+
+	filter1->SetEventType(TUid::Uid(KMaxTInt32));
+	TEST(filter1->EventType() == TUid::Uid(KMaxTInt32));
+
+	filter1->SetEventType(TUid::Null());
+	TEST(filter1->EventType() == TUid::Null());
+
+	// Remote Party
+	TEST(filter1->RemoteParty() == KNullDesC);
+
+	HBufC* buf = TestUtils::CreateBufLC(KLogMaxRemotePartyLength / 2);
+	filter1->SetRemoteParty(buf->Des());
+	TEST(filter1->RemoteParty() == buf->Des());
+	CleanupStack::PopAndDestroy(); // buf
+
+	buf = TestUtils::CreateBufLC(KLogMaxRemotePartyLength);
+	filter1->SetRemoteParty(buf->Des());
+	TEST(filter1->RemoteParty() == buf->Des());
+	CleanupStack::PopAndDestroy(); // buf
+
+	filter1->SetRemoteParty(KNullDesC);
+	TEST(filter1->RemoteParty() == KNullDesC);
+
+	// Direction
+	TEST(filter1->Direction() == KNullDesC);
+
+	buf = TestUtils::CreateBufLC(KLogMaxDirectionLength / 2);
+	filter1->SetDirection(buf->Des());
+	TEST(filter1->Direction() == buf->Des());
+	CleanupStack::PopAndDestroy(); // buf
+
+	buf = TestUtils::CreateBufLC(KLogMaxDirectionLength);
+	filter1->SetDirection(buf->Des());
+	TEST(filter1->Direction() == buf->Des());
+	CleanupStack::PopAndDestroy(); // buf
+
+	filter1->SetDirection(KNullDesC);
+	TEST(filter1->Direction() == KNullDesC);
+
+	// Duration Type
+	TEST(filter1->DurationType() == KLogNullDurationType);
+
+	filter1->SetDurationType(0xf);
+	TEST(filter1->DurationType() == 0xf);
+
+	filter1->SetDurationType(KMaxTInt8);
+	TEST(filter1->DurationType() == KMaxTInt8);
+
+	filter1->SetDurationType(0);
+	TEST(filter1->DurationType() == 0);
+
+	// Status
+	TEST(filter1->Status() == KNullDesC);
+
+	buf = TestUtils::CreateBufLC(KLogMaxStatusLength / 2);
+	filter1->SetStatus(buf->Des());
+	TEST(filter1->Status() == buf->Des());
+	CleanupStack::PopAndDestroy(); // buf
+
+	buf = TestUtils::CreateBufLC(KLogMaxStatusLength);
+	filter1->SetStatus(buf->Des());
+	TEST(filter1->Status() == buf->Des());
+	CleanupStack::PopAndDestroy(); // buf
+
+	filter1->SetStatus(KNullDesC);
+	TEST(filter1->Status() == KNullDesC);
+
+	// Contact
+	TEST(filter1->Contact() == KLogNullContactId);
+
+	filter1->SetContact(0x12345678);
+	TEST(filter1->Contact() == 0x12345678);
+
+	filter1->SetContact(KMaxTInt32);
+	TEST(filter1->Contact() == KMaxTInt32);
+
+	CLogFilter* filter2 = CLogFilter::NewL();
+	CleanupStack::PushL(filter2);
+	TEST(!TestUtils::FiltersEqual(*filter1, *filter2));
+
+	filter1->SetContact(KLogNullContactId);
+	TEST(filter1->Contact() == KLogNullContactId);
+
+	filter1->SetContact(KMinTInt32);
+	TEST(filter1->Contact() == KMinTInt32);
+
+	// Number
+	TEST(filter1->Number() == KNullDesC);
+
+	buf = TestUtils::CreateBufLC(KLogMaxNumberLength / 2);
+	filter1->SetNumber(buf->Des());
+	TEST(filter1->Number() == buf->Des());
+	CleanupStack::PopAndDestroy(); // buf
+
+	buf = TestUtils::CreateBufLC(KLogMaxNumberLength);
+	filter1->SetNumber(buf->Des());
+	TEST(filter1->Number() == buf->Des());
+	CleanupStack::PopAndDestroy(); // buf
+
+	filter1->SetNumber(KNullDesC);
+	TEST(filter1->Number() == KNullDesC);
+
+	// Copying
+	filter1->SetEventType(TUid::Uid(0x12345678));
+
+	buf = TestUtils::CreateBufLC(KLogMaxRemotePartyLength / 2);
+	filter1->SetRemoteParty(buf->Des());
+	TEST(filter1->RemoteParty() == buf->Des());
+	CleanupStack::PopAndDestroy(); // buf
+
+	buf = TestUtils::CreateBufLC(KLogMaxDirectionLength / 2);
+	filter1->SetDirection(buf->Des());
+	TEST(filter1->Direction() == buf->Des());
+	CleanupStack::PopAndDestroy(); // buf
+
+	filter1->SetDurationType(0xf);
+	TEST(filter1->DurationType() == 0xf);
+
+	buf = TestUtils::CreateBufLC(KLogMaxStatusLength / 2);
+	filter1->SetStatus(buf->Des());
+	TEST(filter1->Status() == buf->Des());
+	CleanupStack::PopAndDestroy(); // buf
+
+	filter1->SetContact(0x12345678);
+	TEST(filter1->Contact() == 0x12345678);
+
+	buf = TestUtils::CreateBufLC(KLogMaxNumberLength / 2);
+	filter1->SetNumber(buf->Des());
+	TEST(filter1->Number() == buf->Des());
+	CleanupStack::PopAndDestroy(); // buf
+
+	// Flags
+	TEST(filter1->Flags() == KLogNullFlags);
+	filter1->SetFlags(1);
+	TEST(filter1->Flags() == 1);
+	filter1->SetFlags(2);
+	TEST(filter1->Flags() == 3);
+	filter1->SetFlags(4);
+	TEST(filter1->Flags() == 7);
+	filter1->SetFlags(8);
+	TEST(filter1->Flags() == KLogFlagsMask);
+	filter1->ClearFlags(8);
+	TEST(filter1->Flags() == 7);
+	filter1->ClearFlags(4);
+	TEST(filter1->Flags() == 3);
+	filter1->ClearFlags(2);
+	TEST(filter1->Flags() == 1);
+	filter1->ClearFlags(1);
+	TEST(filter1->Flags() == KLogNullFlags);
+
+	filter1->SetFlags(1);
+	TEST(filter1->Flags() == 1);
+	filter1->SetFlags(3);
+	TEST(filter1->Flags() == 3);
+	filter1->SetFlags(7);
+	TEST(filter1->Flags() == 7);
+	filter1->SetFlags(KLogFlagsMask);
+	TEST(filter1->Flags() == KLogFlagsMask);
+	filter1->ClearFlags(KLogFlagsMask);
+	TEST(filter1->Flags() == KLogNullFlags);
+
+	filter1->SetFlags(0x5);
+	TEST(filter1->Flags() == 0x5);
+	filter1->SetFlags(0xA);
+	TEST(filter1->Flags() == KLogFlagsMask);
+	filter1->ClearFlags(0x5);
+	TEST(filter1->Flags() == 0xA);
+	filter1->ClearFlags(0xA);
+	TEST(filter1->Flags() == KLogNullFlags);
+
+	// Test copying
+
+	filter2->Copy(*filter1);
+	TEST(TestUtils::FiltersEqual(*filter1, *filter2));
+	
+	CleanupStack::PopAndDestroy(); // filter2;
+
+	filter2 = CLogFilter::NewL();
+	CleanupStack::PushL(filter2);
+	TEST(!TestUtils::FiltersEqual(*filter1, *filter2));
+
+	filter1->Copy(*filter2);
+	TEST(TestUtils::FiltersEqual(*filter1, *filter2));
+
+	CleanupStack::PopAndDestroy(2); // filter1, filter2;
+	}
+
+/**
+@SYMTestCaseID          SYSLIB-LOGENG-CT-0925
+@SYMTestCaseDesc	    Filter with heap failure test
+@SYMTestPriority 	    High
+@SYMTestActions  	    Check for any memory and environment errors while creation
+@SYMTestExpectedResults Test must not fail
+@SYMREQ                 REQ0000
+*/
+LOCAL_C void TestFilterWithHeapFailL()
+//
+//
+//
+	{
+	test.Next(_L(" @SYMTestCaseID:SYSLIB-LOGENG-CT-0925 "));
+#ifdef _DEBUG
+	TInt failCount = 0;
+#endif
+
+	TBool finished = EFalse;
+	TInt error;
+
+	CLogFilter* filter = NULL;
+
+	while(!finished)
+		{
+		__UHEAP_FAILNEXT(failCount++);
+
+		TRAP(error, filter = CLogFilter::NewL());
+
+		__UHEAP_RESET;
+
+		if (error == KErrNone)
+			{
+			TEST2(error, KErrNone);
+			delete filter;
+			finished = ETrue;
+			}
+		else
+			TEST2(error, KErrNoMemory);
+		}
+	}
+
+void doTestsL()
+//
+//
+//
+	{
+	TestUtils::Initialize(_L("T_LOGFILTER"));
+
+	test.Start(_L("Filter"));
+	TestFilterL();
+	theLog.Write(_L8("Test 1 OK\n"));
+
+	test.Next(_L("Filter with heap failure"));
+	TestFilterWithHeapFailL();
+	theLog.Write(_L8("Test 2 OK\n"));
+	}