1 // Copyright (c) 2006-2009 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 // Performs various actions related to reading a file |
|
15 // |
|
16 // |
|
17 |
|
18 #include "basetestfat32readfile.h" |
|
19 |
|
20 |
|
21 static RFile TheFile; |
|
22 |
|
23 /** |
|
24 Class Constructor |
|
25 */ |
|
26 CBaseTestFat32ReadFile::CBaseTestFat32ReadFile() |
|
27 { |
|
28 SetTestStepName(KTestStepReadFile); |
|
29 } |
|
30 |
|
31 /** |
|
32 Class Destructor |
|
33 */ |
|
34 CBaseTestFat32ReadFile::~CBaseTestFat32ReadFile() |
|
35 { |
|
36 } |
|
37 |
|
38 /** |
|
39 The function performs the following actions: |
|
40 1. Get the file name and path from the ini file. |
|
41 -> If no file name is specified he create a file |
|
42 -> If no path is specified, use the session path. |
|
43 2. Get the action that is required from the ini file |
|
44 3. Call the function that carries out that particular action |
|
45 |
|
46 @return EPass if test passes and EFail if test fails |
|
47 */ |
|
48 TVerdict CBaseTestFat32ReadFile::doTestStepL() |
|
49 { |
|
50 SetTestStepResult(EFail); |
|
51 TInt r = KErrNone; |
|
52 _LIT(KFileName,"FileName"); |
|
53 _LIT(KCreatedFileName,"ReadTestFile.txt"); |
|
54 TBufC<255> fileName; |
|
55 TPtrC16 filename = fileName; |
|
56 _LIT(KPath,"Path"); |
|
57 TBufC<255> pathName; |
|
58 TPtrC16 path = pathName; |
|
59 _LIT(KReadAction,"ReadAction"); |
|
60 TBufC<255> readAction; |
|
61 TPtrC16 readaction = readAction; |
|
62 TBuf<255> fullPath; |
|
63 TBool alright = GetStringFromConfig(ConfigSection(), KFileName, filename); |
|
64 if(alright) |
|
65 { |
|
66 TBool alright2 = GetStringFromConfig(ConfigSection(), KPath, path); |
|
67 if(alright2) |
|
68 { |
|
69 fullPath.Append(path); |
|
70 } |
|
71 else |
|
72 { |
|
73 fullPath.Append(iSessionPath); |
|
74 } |
|
75 fullPath.Append(filename); |
|
76 |
|
77 TBool alright3 = GetStringFromConfig(ConfigSection(), KReadAction, readaction); |
|
78 if(alright3) |
|
79 { |
|
80 if (readaction == _L("OpenFile")) |
|
81 { |
|
82 r = OpenFile(fullPath); |
|
83 } |
|
84 if (readaction == _L("ReadFile")) |
|
85 { |
|
86 r = ReadFile(fullPath); |
|
87 } |
|
88 if (readaction == _L("GetModTime")) |
|
89 { |
|
90 INFO_PRINTF1(_L("Calling the function GetModTime")); |
|
91 r = GetModTime(fullPath); |
|
92 INFO_PRINTF2(_L("Finished the function GetModTime - r=%d"),r); |
|
93 } |
|
94 if (readaction == _L("GetModDate")) |
|
95 { |
|
96 INFO_PRINTF1(_L("Calling the function GetModDate")); |
|
97 r = GetModDate(fullPath); |
|
98 INFO_PRINTF2(_L("Finished the function GetModDate - r=%d"),r); |
|
99 } |
|
100 |
|
101 if(r != KErrNone) |
|
102 { |
|
103 _LIT(KErrorReadFile, "Error with read action"); |
|
104 INFO_PRINTF1(KErrorReadFile); |
|
105 SetTestStepResult(EFail); |
|
106 return TestStepResult(); |
|
107 } |
|
108 else |
|
109 { |
|
110 SetTestStepResult(EPass); |
|
111 _LIT(KReadPass, "Read Action Passed"); |
|
112 INFO_PRINTF1(KReadPass); |
|
113 return TestStepResult(); |
|
114 } |
|
115 } |
|
116 } |
|
117 else |
|
118 { |
|
119 TInt r = TheFile.Replace(iTheFs,KCreatedFileName,EFileRead|EFileWrite); |
|
120 if (r != KErrNone) |
|
121 { |
|
122 _LIT(KErrorCreateNewFile, "Cannot creat new file - Error code = %d"); |
|
123 INFO_PRINTF2(KErrorCreateNewFile,r); |
|
124 SetTestStepResult(EFail); |
|
125 return TestStepResult(); |
|
126 } |
|
127 else |
|
128 { |
|
129 TInt r = ReadFile(KCreatedFileName); |
|
130 if(r != KErrNone) |
|
131 { |
|
132 _LIT(KErrorReadFile, "Error reading the file, Error Code = %d"); |
|
133 INFO_PRINTF2(KErrorReadFile, r); |
|
134 SetTestStepResult(EFail); |
|
135 return TestStepResult(); |
|
136 } |
|
137 else |
|
138 { |
|
139 SetTestStepResult(EPass); |
|
140 _LIT(KReadPass, "Read Passed"); |
|
141 INFO_PRINTF1(KReadPass); |
|
142 return TestStepResult(); |
|
143 } |
|
144 } |
|
145 } |
|
146 return TestStepResult(); |
|
147 } |
|
148 |
|
149 |
|
150 /** |
|
151 Read the file |
|
152 |
|
153 @param aFile The name of the file to read |
|
154 |
|
155 @return KErrNone if successfull |
|
156 */ |
|
157 TInt CBaseTestFat32ReadFile::ReadFile(const TDesC16& aFile) |
|
158 { |
|
159 TBuf8<255> temp; |
|
160 temp.Copy(aFile); |
|
161 TInt r = KErrNone; |
|
162 // _LIT(KReadCheckCode,"ReadCheckCode"); |
|
163 // TInt readcheckcode; |
|
164 r = TheFile.Open(iTheFs, aFile, EFileRead); |
|
165 r = TheFile.Read(temp); |
|
166 return r; |
|
167 } |
|
168 |
|
169 /** |
|
170 Open a file and check whether the error code returned is equal to that |
|
171 stated in the ini file |
|
172 |
|
173 @param aFile The name of the file to read |
|
174 |
|
175 @return KErrNone if successfull |
|
176 */ |
|
177 TInt CBaseTestFat32ReadFile::OpenFile(const TDesC16& aFile) |
|
178 { |
|
179 TBuf8<255> temp; |
|
180 temp.Copy(aFile); |
|
181 _LIT(KReadCheckCode,"ReadCheckCode"); |
|
182 TInt readcheckcode; |
|
183 TInt res = TheFile.Open(iTheFs, aFile, EFileRead); |
|
184 TBool alright = GetIntFromConfig(ConfigSection(), KReadCheckCode, readcheckcode); |
|
185 if(alright) |
|
186 { |
|
187 if (res == readcheckcode) |
|
188 { |
|
189 _LIT(KReadPass, "Check code for open file is correct res = %d"); |
|
190 INFO_PRINTF2(KReadPass, res); |
|
191 return KErrNone; |
|
192 } |
|
193 else |
|
194 { |
|
195 _LIT(KReadFail, "Check code for open file is incorrect correct res = %d, correct return = %d"); |
|
196 INFO_PRINTF3(KReadFail, res, readcheckcode); |
|
197 return KErrNone; |
|
198 } |
|
199 |
|
200 } |
|
201 else |
|
202 { |
|
203 _LIT(KNoIni, "Unable to get ReadCheckCode from ini file"); |
|
204 INFO_PRINTF1(KNoIni); |
|
205 return -1; |
|
206 } |
|
207 |
|
208 } |
|
209 |
|
210 /** |
|
211 Check what error the RFs::Modified fuction should return from the ini file |
|
212 and call RFs::Modified() |
|
213 |
|
214 @param aFile The name of the file to read |
|
215 |
|
216 @return KErrNone if successfull |
|
217 */ |
|
218 TInt CBaseTestFat32ReadFile::GetModDate(const TDesC16& aFile) |
|
219 { |
|
220 TInt r = KErrNone; |
|
221 TTime modifiedTime; |
|
222 TBufC<9> checkDate; |
|
223 TPtrC16 actualDate = checkDate; |
|
224 _LIT(KCheckDate,"Date"); |
|
225 TBuf <255> date; |
|
226 TBool alright = GetStringFromConfig(ConfigSection(), KCheckDate, actualDate); |
|
227 if(alright) |
|
228 { |
|
229 INFO_PRINTF1(_L("Calling the function RFs::Modified within GetModTime")); |
|
230 r = iTheFs.Modified(aFile, modifiedTime); |
|
231 modifiedTime.FormatL(date, _L("%D%M%Y%1 %2 %3")); |
|
232 INFO_PRINTF2(_L("Returned from RFs::Modified within the function GetModTime - r=%d"), r); |
|
233 TPtrC16 readdate = date; |
|
234 if (readdate == actualDate) |
|
235 { |
|
236 INFO_PRINTF1(_L("RFs::Modified returns the correct value ")); |
|
237 return KErrNone; |
|
238 } |
|
239 else |
|
240 { |
|
241 INFO_PRINTF2(_L("RFs::Modified returns the incorrect value %S"), &date); |
|
242 return -1; |
|
243 } |
|
244 } |
|
245 return r; |
|
246 } |
|
247 |
|
248 /** |
|
249 Check what error the RFs::Modified fuction should return from the ini file |
|
250 and call RFs::Modified() |
|
251 |
|
252 @param aFile The name of the file to read |
|
253 |
|
254 @return KErrNone if successfull |
|
255 */ |
|
256 TInt CBaseTestFat32ReadFile::GetModTime(const TDesC16& aFile) |
|
257 { |
|
258 TInt r = KErrNone; |
|
259 TTime modifiedTime; |
|
260 TBufC<9> checkTime; |
|
261 TPtrC16 actualTime = checkTime; |
|
262 _LIT(KCheckTime,"Time"); |
|
263 TBuf <255> time; |
|
264 TBool alright = GetStringFromConfig(ConfigSection(), KCheckTime, actualTime); |
|
265 if(alright) |
|
266 { |
|
267 INFO_PRINTF1(_L("Calling the function RFs::Modified within GetModTime")); |
|
268 r = iTheFs.Modified(aFile, modifiedTime); |
|
269 modifiedTime.FormatL(time, _L("%H%T%S")); |
|
270 INFO_PRINTF2(_L("Returned from RFs::Modified within the function GetModTime - r=%d"), r); |
|
271 TPtrC16 readtime = time; |
|
272 if (readtime == actualTime) |
|
273 { |
|
274 INFO_PRINTF1(_L("RFs::Modified returns the correct value ")); |
|
275 return KErrNone; |
|
276 } |
|
277 else |
|
278 { |
|
279 INFO_PRINTF2(_L("RFs::Modified returns the incorrect value %S"), &time); |
|
280 return -1; |
|
281 } |
|
282 } |
|
283 return r; |
|
284 } |
|