--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32test/misc/t_uid.cpp Mon Oct 19 15:55:17 2009 +0100
@@ -0,0 +1,186 @@
+// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "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:
+// e32test\misc\t_uid.cpp
+// Overview:
+// Test handling of UIDs (Unique Identifiers).
+// API Information:
+// TUid, TUidType, TCheckedUid.
+// Details:
+// - Assign some globally unique 32-bit numbers with specified values,
+// get standard text form of the UID and check it is as expected.
+// - Set the specified Uid type to be packaged and verify
+// - validity of UID type.
+// - Uid type contained is as expected.
+// - component UIDs are same as specified UID.
+// - the most derived UID is as expected.
+// - Check the process' Uids are as expected.
+// - Load the specified DLL, get Uid of DLL, name of this DLL's file,
+// compare the name with a specified text and check it is as expected,
+// verify the Uid is as expected.
+// Platforms/Drives/Compatibility:
+// All
+// Assumptions/Requirement/Pre-requisites:
+// Failures and causes:
+// Base Port information:
+//
+//
+
+#include <e32test.h>
+
+LOCAL_D RTest test(_L("T_UID"));
+
+const TUid g1 = {0x10000001};
+const TUid g11 = {0x10000001};
+const TUid g2 = {0x10000002};
+const TUid g22 = {0x10000002};
+const TUid g3 = {0x10000003};
+const TUid g33 = {0x10000003};
+
+LOCAL_C void testUid()
+//
+// Test UIDs
+//
+ {
+
+ test.Start(_L("All functions"));
+ test(g1==g11);
+ test(g2==g22);
+ test(g1!=g2);
+ TName a1Name = g1.Name();
+ TName a11Name = g11.Name();
+ TName a2Name = g2.Name();
+ TName a22Name = g22.Name();
+ test.Printf(_L("%S %S\n"),&a1Name,&a11Name);
+ test.Printf(_L("%S %S\n"),&a2Name,&a22Name);
+ test.End();
+ }
+
+LOCAL_C void testCheckedUid()
+//
+// Test checked UIDs
+//
+ {
+
+ test.Start(_L("All functions"));
+ TCheckedUid check1;
+ check1.Set(TUidType(g1));
+ test(check1.UidType().IsValid()==TRUE);
+ test(check1.UidType()[0]==g1);
+ test(check1.UidType()[1]==KNullUid);
+ test(check1.UidType()[2]==KNullUid);
+ test(check1.UidType().MostDerived()==g1);
+ test(check1.UidType().IsPresent(g1)==TRUE);
+ test(check1.UidType().IsPresent(g2)==FALSE);
+ test(check1.UidType().IsPresent(g3)==FALSE);
+ TCheckedUid check2;
+ check2.Set(TUidType(g1,g2));
+ test(check2.UidType().IsValid()==TRUE);
+ test(check2.UidType()[0]==g1);
+ test(check2.UidType()[1]==g2);
+ test(check2.UidType()[2]==KNullUid);
+ test(check2.UidType().MostDerived()==g2);
+ test(check2.UidType().IsPresent(g1)==TRUE);
+ test(check2.UidType().IsPresent(g2)==TRUE);
+ test(check2.UidType().IsPresent(g3)==FALSE);
+ TCheckedUid check3;
+ check3.Set(TUidType(g1,g2,g3));
+ test(check3.UidType().IsValid()==TRUE);
+ test(check3.UidType()[0]==g1);
+ test(check3.UidType()[1]==g2);
+ test(check3.UidType()[2]==g3);
+ test(check3.UidType().MostDerived()==g3);
+ test(check3.UidType().IsPresent(g1)==TRUE);
+ test(check3.UidType().IsPresent(g2)==TRUE);
+ test(check3.UidType().IsPresent(g3)==TRUE);
+ HBufC8* pH=check3.Des().Alloc();
+ TUidType t1(g3,check3.UidType()[1],check3.UidType()[2]);
+ check3=t1;
+ test(check3.UidType().IsValid()==TRUE);
+ TUidType t2(g3,g1,check3.UidType()[2]);
+ check3=t2;
+ test(check3.UidType().IsValid()==TRUE);
+ TUidType t3(g3,g1,g2);
+ check3=t3;
+ test(check3.UidType().IsValid()==TRUE);
+ test(check3.UidType()[0]==g3);
+ test(check3.UidType()[1]==g1);
+ test(check3.UidType()[2]==g2);
+ test(check3.UidType().IsPresent(g1)==TRUE);
+ test(check3.UidType().IsPresent(g2)==TRUE);
+ test(check3.UidType().IsPresent(g3)==TRUE);
+ check3.Set(*pH);
+ test(check3.UidType().IsValid()==TRUE);
+ test(check3.UidType()[0]==g1);
+ test(check3.UidType()[1]==g2);
+ test(check3.UidType()[2]==g3);
+ test(check3.UidType().IsPresent(g1)==TRUE);
+ test(check3.UidType().IsPresent(g2)==TRUE);
+ test(check3.UidType().IsPresent(g3)==TRUE);
+ TCheckedUid check4(*pH);
+ delete pH;
+ test(check4.UidType().IsValid()==TRUE);
+ test(check4.UidType()[0]==g1);
+ test(check4.UidType()[1]==g2);
+ test(check4.UidType()[2]==g3);
+//
+ test.End();
+ }
+
+GLDEF_C TInt E32Main()
+//
+// Test Uid handling.
+//
+ {
+
+ test.Title();
+//
+ test.Start(_L("Uid tests"));
+ testUid();
+//
+ test.Next(_L("Checked Uid tests"));
+ testCheckedUid();
+//
+ test.Next(_L("Check this process's Uids"));
+ test(RProcess().Type()[1]==TUid::Uid(0x22222222));
+ test(RProcess().Type()[2]==TUid::Uid(0x33333333));
+
+ test.Next(_L("Load Uid DLL"));
+ RLibrary lib;
+ TInt r=lib.Load(_L("T_DUID.DLL"));
+ test(r==KErrNone);
+ test.Next(_L("Test FileName"));
+ test.Printf(lib.FileName());
+ test.Printf(_L("\n"));
+
+#if defined(__WINS__)
+ if(PlatSec::ConfigSetting(PlatSec::EPlatSecEnforceSysBin))
+ test(lib.FileName().CompareF(_L("Z:\\Sys\\Bin\\T_DUID.DLL"))==0);
+ else
+ test(lib.FileName().CompareF(_L("Z:\\System\\Bin\\T_DUID.DLL"))==0);
+#else
+ if(PlatSec::ConfigSetting(PlatSec::EPlatSecEnforceSysBin))
+ test(lib.FileName().MatchF(_L("?:\\Sys\\Bin\\T_DUID.DLL"))!=KErrNotFound);
+ else
+ test(lib.FileName().MatchF(_L("?:\\System\\Bin\\T_DUID.DLL"))!=KErrNotFound);
+#endif
+ test.Next(_L("Check DLL Uid"));
+ test(lib.Type()[1]==TUid::Uid(0x12345678));
+ test(lib.Type()[2]==TUid::Uid(0x87654321));
+ lib.Close();
+ test.End();
+ return(KErrNone);
+ }
+
+
+