|
1 // Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). |
|
2 // All rights reserved. |
|
3 // This component and the accompanying materials are made available |
|
4 // under the terms of the License "Eclipse Public License v1.0" |
|
5 // which accompanies this distribution, and is available |
|
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
7 // |
|
8 // Initial Contributors: |
|
9 // Nokia Corporation - initial contribution. |
|
10 // |
|
11 // Contributors: |
|
12 // |
|
13 // Description: |
|
14 // Framework headers for Domain Manager tests. |
|
15 // |
|
16 |
|
17 #ifndef __T_DOMAIN_H__ |
|
18 #define __T_DOMAIN_H__ |
|
19 |
|
20 #include <domainmember.h> |
|
21 |
|
22 #include "domainmanager_private.h" |
|
23 |
|
24 // for the test hierarchy, we generate an ordinal for each domain |
|
25 // each byte of which describes the exact location of the domain in the hierarchy |
|
26 |
|
27 #define ORDINAL_FROM_DOMAINID0(id) (id) |
|
28 #define ORDINAL_FROM_DOMAINID1(parent, id) ((parent << 8) | (id)) |
|
29 #define ORDINAL_FROM_DOMAINID2(grandparent, parent, id) ((grandparent << 16) | (parent << 8) | id) |
|
30 #define ORDINAL_FROM_DOMAINID3(greatgrandparent, grandparent, parent, id) ((greatgrandparent << 24) | (grandparent << 16) | (parent << 8) | id) |
|
31 #define PARENT_ORDINAL(id) (id >> 8) |
|
32 |
|
33 #define ORDINAL_LEVEL(ordinal) \ |
|
34 ((ordinal & 0xFF00) == 0) ? 1 : \ |
|
35 ((ordinal & 0xFF0000) == 0) ? 2 : \ |
|
36 ((ordinal & 0xFF000000) == 0) ? 3 : 4; |
|
37 |
|
38 // |
|
39 // Interface for test domain memebers |
|
40 // |
|
41 |
|
42 // MDmDomainMember |
|
43 class MDmDomainMember |
|
44 { |
|
45 public: |
|
46 virtual TDmHierarchyId HierarchyId() = 0; |
|
47 virtual TDmDomainId DomainId() = 0; |
|
48 virtual TDmDomainState State() = 0; |
|
49 virtual TInt Status() = 0; |
|
50 virtual TUint32 Ordinal() = 0; |
|
51 virtual TInt Notifications() = 0; |
|
52 }; |
|
53 |
|
54 |
|
55 // MDmTest |
|
56 class MDmTest |
|
57 { |
|
58 public: |
|
59 virtual void Perform() = 0; |
|
60 virtual void Release() = 0; |
|
61 virtual TInt TransitionNotification(MDmDomainMember& aDomainMember) = 0; |
|
62 virtual void TransitionRequestComplete() = 0; |
|
63 }; |
|
64 |
|
65 |
|
66 TBool GetDomainChar(TDmDomainId aDomainId, TChar& aChar); |
|
67 void GetDomainDesc(TUint32 aOrdinal, TDes& aDes); |
|
68 |
|
69 |
|
70 // CDmTestMember |
|
71 class CDmTestMember : public CActive, public MDmDomainMember |
|
72 { |
|
73 public: |
|
74 // from CActive |
|
75 void RunL(); |
|
76 // from MDmDomainMember |
|
77 inline TDmHierarchyId HierarchyId() {return iHierarchy;}; |
|
78 inline TDmDomainId DomainId() {return iId;}; |
|
79 inline TDmDomainState State() {return iState;}; |
|
80 inline TInt Status() {return iStatus.Int();}; |
|
81 inline TUint32 Ordinal() {return iOrdinal;}; |
|
82 inline TInt Notifications() {return iNotifications;}; |
|
83 |
|
84 CDmTestMember(TDmHierarchyId aHierarchy, TDmDomainId aId, TUint32 aOrdinal, MDmTest*); |
|
85 ~CDmTestMember(); |
|
86 void Acknowledge(); |
|
87 |
|
88 protected: |
|
89 // from CActive |
|
90 virtual void DoCancel(); |
|
91 |
|
92 public: |
|
93 TDmHierarchyId iHierarchy; |
|
94 TDmDomainId iId; |
|
95 TDmDomainState iState; |
|
96 TUint32 iOrdinal; |
|
97 MDmTest* iTest; |
|
98 TInt iNotifications; |
|
99 RDmDomain iDomain; |
|
100 }; |
|
101 |
|
102 |
|
103 // CDomainMemberAo |
|
104 class CDomainMemberAo : public CDmDomain, public MDmDomainMember |
|
105 { |
|
106 public: |
|
107 static CDomainMemberAo* NewL(TDmHierarchyId aHierarchy, TDmDomainId aId, TUint32 aOrdinal, MDmTest*); |
|
108 ~CDomainMemberAo(); |
|
109 |
|
110 // from CActive |
|
111 void RunL(); |
|
112 |
|
113 // from MDmDomainMember |
|
114 inline TDmHierarchyId HierarchyId() {return iHierarchy;}; |
|
115 inline TDmDomainId DomainId() {return iId;}; |
|
116 inline TDmDomainState State() {return iState;}; |
|
117 inline TInt Status() {return iStatus.Int();}; |
|
118 inline TUint32 Ordinal() {return iOrdinal;}; |
|
119 inline TInt Notifications() {return iNotifications;}; |
|
120 |
|
121 private: |
|
122 CDomainMemberAo(TDmHierarchyId aHierarchy, TDmDomainId aId, TUint32 aOrdinal, MDmTest*); |
|
123 |
|
124 public: |
|
125 TDmHierarchyId iHierarchy; |
|
126 TDmDomainId iId; |
|
127 TDmDomainState iState; |
|
128 TUint32 iOrdinal; |
|
129 MDmTest* iTest; |
|
130 TInt iNotifications; |
|
131 }; |
|
132 |
|
133 |
|
134 // CDomainManagerAo |
|
135 class CDomainManagerAo : public CDmDomainManager |
|
136 { |
|
137 public: |
|
138 ~CDomainManagerAo(); |
|
139 static CDomainManagerAo* NewL(TDmHierarchyId aHierarchy, MDmTest& aTest); |
|
140 |
|
141 // from CActive |
|
142 void RunL(); |
|
143 |
|
144 private: |
|
145 CDomainManagerAo(TDmHierarchyId aHierarchy, MDmTest& aTest); |
|
146 |
|
147 private: |
|
148 MDmTest& iTest; |
|
149 }; |
|
150 |
|
151 |
|
152 // |
|
153 // Deferral tests |
|
154 // |
|
155 |
|
156 /** |
|
157 A base class for simple deferral tests |
|
158 */ |
|
159 class CDmDeferralTest : public CActive, public MDmTest |
|
160 { |
|
161 public: |
|
162 // from CActive |
|
163 CDmDeferralTest(TDmHierarchyId aId, TDmDomainState aState); |
|
164 ~CDmDeferralTest(); |
|
165 |
|
166 void RunL(); |
|
167 void DoCancel(); |
|
168 |
|
169 // from MDmTest |
|
170 void Perform(); |
|
171 void Release(); |
|
172 TInt TransitionNotification(MDmDomainMember& aDomainMember); |
|
173 void TransitionRequestComplete(); |
|
174 |
|
175 virtual void DoPerform() =0; |
|
176 |
|
177 protected: |
|
178 CDmTestMember* iMember; |
|
179 RDmDomainManager iManager; |
|
180 TDmHierarchyId iHierarchyId; |
|
181 TDmDomainState iState; |
|
182 }; |
|
183 |
|
184 /** |
|
185 Interface allowing test classes to be informed when a CTestKeepAlive has finished |
|
186 deferrals |
|
187 */ |
|
188 class MDeferringMember |
|
189 { |
|
190 public: |
|
191 virtual void HandleEndOfDeferrals(TInt aError) =0; |
|
192 }; |
|
193 |
|
194 /** |
|
195 This class is a test version of CDmKeepAlive. |
|
196 |
|
197 It will perform up to the number of defferals instructed. |
|
198 */ |
|
199 class CTestKeepAlive : public CActive |
|
200 { |
|
201 public: |
|
202 CTestKeepAlive(RDmDomain& aDomain); |
|
203 ~CTestKeepAlive(); |
|
204 |
|
205 void BeginDeferrals(MDeferringMember* aMember, TInt aDeferralCount); |
|
206 |
|
207 protected: |
|
208 /** |
|
209 Request deadline deferral for the last transition |
|
210 notification |
|
211 */ |
|
212 void DeferAcknowledgement(); |
|
213 |
|
214 /** |
|
215 Re-call DeferNotification() |
|
216 up to count. |
|
217 */ |
|
218 void RunL(); |
|
219 |
|
220 void DoCancel(); |
|
221 |
|
222 RDmDomain& iDomain; |
|
223 |
|
224 TInt iCount; |
|
225 MDeferringMember* iDeferringMember; |
|
226 }; |
|
227 #endif // __T_DOMAIN_H__ |