1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/mm/mmtestenv/mmtestfwunittest/src/tsu_mmtsth01/TSU_MmTsth01.cpp Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,309 @@
1.4 +// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
1.5 +// All rights reserved.
1.6 +// This component and the accompanying materials are made available
1.7 +// under the terms of "Eclipse Public License v1.0"
1.8 +// which accompanies this distribution, and is available
1.9 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
1.10 +//
1.11 +// Initial Contributors:
1.12 +// Nokia Corporation - initial contribution.
1.13 +//
1.14 +// Contributors:
1.15 +//
1.16 +// Description:
1.17 +// This file contains the test steps for Unit Test Suite 01 : Parseline.cpp
1.18 +//
1.19 +//
1.20 +
1.21 +// EPOC includes
1.22 +#include <e32base.h>
1.23 +
1.24 +// Test system includes
1.25 +#include <testframework.h>
1.26 +#include "script.h"
1.27 +#include "parseline.h"
1.28 +#include "Filename.h"
1.29 +
1.30 +// Specific includes for this test suite
1.31 +#include "TSU_MmTsthSuite01.h"
1.32 +
1.33 +// Specific includes for these test steps
1.34 +#include "TSU_MmTsth01.h"
1.35 +
1.36 +// --------------------------------------------
1.37 +
1.38 +// Unit Test Suite 01 : Parseline.cpp
1.39 +// Depends on : none
1.40 +
1.41 +// Tests :-
1.42 +// 1 Initialise a CParseLine
1.43 +// 2 Process line : load & run a sample step
1.44 +// 3 Run a sample panic step
1.45 +// 4 Run a utility
1.46 +// 11 CSuiteDLL initialise and verify
1.47 +
1.48 +// (NB these tests are to test the parser ONLY; the underlying functionality of the
1.49 +// commands parsed is tested in CTestStep, CTestSuite, CTestUtils etc. suites)
1.50 +
1.51 +// ---------------------
1.52 +// RTestMmTsthU0101
1.53 +
1.54 +RTestMmTsthU0101* RTestMmTsthU0101::NewL()
1.55 + {
1.56 + RTestMmTsthU0101* self = new(ELeave) RTestMmTsthU0101;
1.57 + return self;
1.58 + }
1.59 +
1.60 +// Each test step initialises its own name.
1.61 +RTestMmTsthU0101::RTestMmTsthU0101()
1.62 + {
1.63 + iTestStepName = _L("MM-TSTH-U-0101");
1.64 + }
1.65 +
1.66 +// preamble
1.67 +TVerdict RTestMmTsthU0101::OpenL()
1.68 + {
1.69 + // don't call the default preamble
1.70 + return iTestStepResult = EPass;
1.71 + }
1.72 +
1.73 +// postamble
1.74 +void RTestMmTsthU0101::Close()
1.75 + {
1.76 + // don't call the default postamble
1.77 + }
1.78 +
1.79 +// Do the test step.
1.80 +TVerdict RTestMmTsthU0101::DoTestStepL()
1.81 + {
1.82 + INFO_PRINTF1(_L("Unit test for Parseline"));
1.83 +
1.84 + TVerdict currentVerdict = EPass;
1.85 +
1.86 + // initialise a CParseLine
1.87 + CLog* theLogClient = iSuite->LogSystem();
1.88 + CTestUtils* theTestUtils = CTestUtils::NewL(theLogClient);
1.89 + TInt64 theGuardTimer (-1);
1.90 +
1.91 + CleanupStack::PushL(theTestUtils);
1.92 + CScript* theParseScript = CScript::NewLC(theTestUtils, theLogClient, theGuardTimer, KNullDesC);
1.93 + CParseLine* theParser = CParseLine::NewL(theParseScript, theTestUtils, theLogClient, theGuardTimer, KNullDesC);
1.94 + CleanupStack::PushL(theParser);
1.95 +
1.96 + // if we got here, we're constructed successfully
1.97 + INFO_PRINTF1(_L("CParseLine constructed successfully"));
1.98 +
1.99 + CleanupStack::PopAndDestroy(3); // theParser, theParseScript, theTestUtils
1.100 +
1.101 + return iTestStepResult = currentVerdict;
1.102 + }
1.103 +
1.104 +
1.105 +// ---------------------
1.106 +// RTestMmTsthU0102
1.107 +
1.108 +RTestMmTsthU0102* RTestMmTsthU0102::NewL()
1.109 + {
1.110 + RTestMmTsthU0102* self = new(ELeave) RTestMmTsthU0102;
1.111 + return self;
1.112 + }
1.113 +
1.114 +// Each test step initialises its own name.
1.115 +RTestMmTsthU0102::RTestMmTsthU0102()
1.116 + {
1.117 + iTestStepName = _L("MM-TSTH-U-0102");
1.118 + }
1.119 +
1.120 +// Do the test step.
1.121 +TVerdict RTestMmTsthU0102::DoTestStepL()
1.122 + {
1.123 + INFO_PRINTF1(_L("Unit test for ProcessLineL 1"));
1.124 +
1.125 + TVerdict currentVerdict = EPass;
1.126 + _LIT8(KTestStepScriptLine1, "LOAD_SUITE TSU_MMTSTH01");
1.127 + _LIT8(KTestStepScriptLine2, "RUN_TEST_STEP 1000 TSU_MMTSTH01 RTestStepDummy");
1.128 +
1.129 + TRAPD(err1, iParseLine->ProcessLineL(KTestStepScriptLine1, 1));
1.130 + if(err1 != KErrNone)
1.131 + {
1.132 + ERR_PRINTF2(_L("ProcessLineL for LOAD_SUITE left, error code %d"), err1);
1.133 + return iTestStepResult = EFail;
1.134 + }
1.135 + TRAPD(err2, iParseLine->ProcessLineL(KTestStepScriptLine2, 2));
1.136 + if(err2 != KErrNone)
1.137 + {
1.138 + ERR_PRINTF2(_L("ProcessLineL for RUN_TEST_STEP left, error code %d"), err2);
1.139 + return iTestStepResult = EFail;
1.140 + }
1.141 +
1.142 + return iTestStepResult = currentVerdict;
1.143 + }
1.144 +
1.145 +// ---------------------
1.146 +// RTestMmTsthU0103
1.147 +
1.148 +RTestMmTsthU0103* RTestMmTsthU0103::NewL()
1.149 + {
1.150 + RTestMmTsthU0103* self = new(ELeave) RTestMmTsthU0103;
1.151 + return self;
1.152 + }
1.153 +
1.154 +// Each test step initialises its own name.
1.155 +RTestMmTsthU0103::RTestMmTsthU0103()
1.156 + {
1.157 + iTestStepName = _L("MM-TSTH-U-0103");
1.158 + }
1.159 +
1.160 +// Do the test step.
1.161 +TVerdict RTestMmTsthU0103::DoTestStepL()
1.162 + {
1.163 + INFO_PRINTF1(_L("Unit test for ProcessLineL 2"));
1.164 +
1.165 + TVerdict currentVerdict = EPass;
1.166 + _LIT8(KTestStepScriptLine1, "LOAD_SUITE TSU_MMTSTH01");
1.167 + _LIT8(KTestStepScriptLine2, "RUN_PANIC_STEP 1000 TSU_MMTSTH01 RPanicTestStepDummy, PanicDummy, 0");
1.168 +
1.169 + TRAPD(err1, iParseLine->ProcessLineL(KTestStepScriptLine1, 1));
1.170 + if(err1 != KErrNone)
1.171 + {
1.172 + ERR_PRINTF2(_L("ProcessLineL for LOAD_SUITE left, error code %d"), err1);
1.173 + return iTestStepResult = EInconclusive;
1.174 + }
1.175 + TRAPD(err2, iParseLine->ProcessLineL(KTestStepScriptLine2, 2));
1.176 + if(err2 != KErrNone)
1.177 + {
1.178 + ERR_PRINTF2(_L("ProcessLineL for RUN_PANIC_STEP left, error code %d"), err2);
1.179 + return iTestStepResult = EFail;
1.180 + }
1.181 +
1.182 + return iTestStepResult = currentVerdict;
1.183 + }
1.184 +
1.185 +
1.186 +// ---------------------
1.187 +// RTestMmTsthU0104
1.188 +
1.189 +RTestMmTsthU0104* RTestMmTsthU0104::NewL()
1.190 + {
1.191 + RTestMmTsthU0104* self = new(ELeave) RTestMmTsthU0104;
1.192 + return self;
1.193 + }
1.194 +
1.195 +// Each test step initialises its own name.
1.196 +RTestMmTsthU0104::RTestMmTsthU0104()
1.197 + {
1.198 + iTestStepName = _L("MM-TSTH-U-0104");
1.199 + }
1.200 +
1.201 +// Do the test step.
1.202 +TVerdict RTestMmTsthU0104::DoTestStepL()
1.203 + {
1.204 +
1.205 + INFO_PRINTF1(_L("This test step is not available on EKA2 - Passing test!"));
1.206 + return EPass;
1.207 +
1.208 + }
1.209 +
1.210 +// ---------------------
1.211 +// RTestMmTsthU0111
1.212 +
1.213 +RTestMmTsthU0111* RTestMmTsthU0111::NewL()
1.214 + {
1.215 + RTestMmTsthU0111* self = new(ELeave) RTestMmTsthU0111;
1.216 + return self;
1.217 + }
1.218 +
1.219 +// Each test step initialises its own name.
1.220 +RTestMmTsthU0111::RTestMmTsthU0111()
1.221 + {
1.222 + iTestStepName = _L("MM-TSTH-U-0111");
1.223 + }
1.224 +
1.225 +// Do the test step.
1.226 +TVerdict RTestMmTsthU0111::DoTestStepL()
1.227 + {
1.228 + INFO_PRINTF1(_L("Unit test for CSuiteDLL"));
1.229 +
1.230 + TVerdict currentVerdict = EPass;
1.231 +
1.232 + // create a new CSuiteDll object to store info on loaded DLL
1.233 + _LIT(KTestSuiteName, "TSU_MMTSTH01");
1.234 + CSuiteDll* newRef = NULL;
1.235 + TRAPD(err, newRef = CSuiteDll::NewL(KTestSuiteName, iLogClient));
1.236 + if(err != KErrNone)
1.237 + {
1.238 + ERR_PRINTF2(_L("CSuiteDll::NewL left, error code %d"), err);
1.239 + return iTestStepResult = EFail;
1.240 + }
1.241 +
1.242 + // make sure it's not NULL, get its name out and see if it matches
1.243 + CTestSuite* theTestSuite = newRef->Suite();
1.244 + if(theTestSuite == NULL)
1.245 + {
1.246 + ERR_PRINTF1(_L("CSuiteDll::Suite() is NULL"));
1.247 + return iTestStepResult = EFail;
1.248 + }
1.249 +
1.250 + TPtrC theName = newRef->Name();
1.251 + if (theName != KTestSuiteName)
1.252 + {
1.253 + ERR_PRINTF2(_L("CSuiteDll::Name() is %S"), &theName);
1.254 + return iTestStepResult = EFail;
1.255 + }
1.256 +
1.257 + return iTestStepResult = currentVerdict;
1.258 + }
1.259 +
1.260 +// ---------------------
1.261 +// Dummy test step for Parseline testing
1.262 +
1.263 +RTestStepDummy* RTestStepDummy::NewL()
1.264 + {
1.265 + RTestStepDummy* self = new(ELeave) RTestStepDummy;
1.266 + return self;
1.267 + }
1.268 +
1.269 +// Each test step initialises its own name.
1.270 +RTestStepDummy::RTestStepDummy()
1.271 + {
1.272 + iTestStepName = _L("RTestStepDummy");
1.273 + }
1.274 +
1.275 +// Do the test step.
1.276 +TVerdict RTestStepDummy::DoTestStepL()
1.277 + {
1.278 + INFO_PRINTF1(_L("Dummy step completed"));
1.279 +
1.280 + TVerdict currentVerdict = EPass;
1.281 +
1.282 + return iTestStepResult = currentVerdict;
1.283 + }
1.284 +
1.285 +
1.286 +// ---------------------
1.287 +// Dummy panic test steps for Parseline testing
1.288 +
1.289 +RPanicTestStepDummy* RPanicTestStepDummy::NewL()
1.290 + {
1.291 + RPanicTestStepDummy* self = new(ELeave) RPanicTestStepDummy;
1.292 + return self;
1.293 + }
1.294 +
1.295 +// Each test step initialises its own name.
1.296 +RPanicTestStepDummy::RPanicTestStepDummy()
1.297 + {
1.298 + iTestStepName = _L("RPanicTestStepDummy");
1.299 + }
1.300 +
1.301 +// Do the test step.
1.302 +TVerdict RPanicTestStepDummy::DoTestStepL()
1.303 + {
1.304 + INFO_PRINTF1(_L("Dummy panic step running"));
1.305 + User::Panic(_L("PanicDummy"), 0);
1.306 +
1.307 + // NB this code cannot be reached
1.308 + TVerdict currentVerdict = EPass;
1.309 + return iTestStepResult = currentVerdict;
1.310 + }
1.311 +
1.312 +