技术开发 频道

在S60平台进行单元测试(下)

  附录A TestSource.cpp

  1 #include "TestHeader.h"
  2 #include "TestDriver.h"
  3 #include "Logger.h"
  4 #include "cmapexamplesmsengine.h"
  5 #include <msvstore.h>
  6
  7 // ========== logger ==========
  8 #include <flogger.h>
  9 #define __DEFINE_LITERAL(aLiteralName, aStr) _LIT(aLiteralName, aStr);
10 _LIT( _KLogDir, "MyLogs" );
11 _LIT( _KLogFile, "test.txt" );
12 #define _LOGF( aEllipsis )\
13         {\
14         _LIT(_KFormat,"%S(%d):%Ld:%S: ");\
15         __DEFINE_LITERAL( _KFile, __FILE__ );\
16         TPtrC8 _func8((TUint8*)__FUNCTION__);\
17         TBuf<40> _func;\
18         _func.Copy(_func8.Right(40));\
19         TBuf<256> _log;\
20         _log.Format(_KFormat, &_KFile, __LINE__, RThread().Id().Id(), &_func);\
21         _log.AppendFormat aEllipsis;\
22         RFileLogger::Write( _KLogDir, _KLogFile, EFileLoggingModeAppend, _log );\
23         }
24 #define _HERE() _LOGF((KNullDesC))
25
26 // ========== stubbed / mocked implementations ==========
27 class DummyObserver : public MSmsEngineObserver
28 {
29 virtual void MessageSent()
30         {
31         _LOGF((_L("DummyObserver::MessageSent()")));
32         }
33 virtual void MessageReceived(TDesC& aMsg, TDesC& aAddr)
34         {
35         _LOGF((_L("DummyObserver::MessageReceived(%S, %S)"), &aMsg, &aAddr));
36         }
37 virtual void MessageRequested(TDesC& aMsg, TDesC& aAddr)
38         {
39         _LOGF((_L("DummyObserver::MessageRequested(%S, %S)"), &aMsg, &aAddr));
40         }
41 virtual void SmsEngineError(TInt aErrorCode)
42         {
43         _LOGF((_L("DummyObserver::SmsEngineError(%d)"), aErrorCode));
44         }
45 };
46
47 void RSendAsMessage::AddRecipientL(const TDesC16& a, RSendAsMessage::TSendAsRecipientType b)
48         {
49         _LOGF((_L("RSendAsMessage::AddRecipientL(%S, %d)"), &a, b));
50         }
51
52 void RSendAsMessage::Close()
53         {
54         _LOGF((_L("RSendAsMessage::Close()")));
55         }
56
57 void RSendAsMessage::CreateL(RSendAs &a, TUid b)
58         {
59         _LOGF((_L("RSendAsMessage::CreateL(%d, %d)"), &a, b));
60         }
61
62 void RSendAsMessage::SendMessage(class TRequestStatus &)
63         {
64         _LOGF((_L("RSendAsMessage::SendMessage()")));
65         }
66
67 // global function pointer
68 void (*gRSendAsMessage_SetBodyTextLHook)() = NULL;
69
70 void RSendAsMessage::SetBodyTextL(const TDesC16& a)
71         {
72         _LOGF((_L("RSendAsMessage::SetBodyTextL(%S)"), &a));
73         if(gRSendAsMessage_SetBodyTextLHook)
74             gRSendAsMessage_SetBodyTextLHook();
75         }
76
77 CMsvEntry * CMsvEntry::NewL(CMsvSession &, long, TMsvSelectionOrdering const &)
78         {
79         _LOGF((_L("CMsvEntry::NewL()")));
80         return NULL;
81         }
82
83 CMsvSession * CMsvSession::OpenAsyncL(MMsvSessionObserver &)
84         {
85         _LOGF((_L("CMsvSession::OpenAsyncL()")));
86         return NULL;
87         }
88
89 CMsvStore * CMsvEntry::ReadStoreL(void)
90         {
91         _LOGF((_L("CMsvEntry::ReadStoreL()")));
92         return NULL;
93         }
94
95 TInt CMsvStore::HasBodyTextL(void) const
96         {
97         _LOGF((_L("CMsvStore::HasBodyTextL()")));
98         return KErrNone;
99         }
100
101 TInt RSendAs::Connect(void)
102         {
103         _LOGF((_L("RSendAs::Connect()")));
104         return KErrNone;
105         }
106
107 TMsvSelectionOrdering::TMsvSelectionOrdering(void)
108         {
109         _LOGF((_L("TMsvSelectionOrdering::TMsvSelectionOrdering()")));
110         }
111
112 void CMsvEntry::DeleteL(long)
113         {
114         _LOGF((_L("TCMsvEntry::DeleteL()")));
115         }
116
117 void CMsvEntry::SetEntryL(long)
118         {
119         _LOGF((_L("CMsvEntry::SetEntryL()")));
120         }
121
122 void CMsvStore::RestoreBodyTextL(CRichText &)
123         {
124         _LOGF((_L("CMsvStore::RestoreBodyTextL()")));
125         }
126
127 // ========== test suite ==========
128 void CMapExampleSmsEngineTest::setUp()
129         {
130         _HERE();
131         gRSendAsMessage_SetBodyTextLHook = NULL;
132         iObserver = new (ELeave) DummyObserver();
133         iTarget = CMapExampleSmsEngine::NewL(iObserver);
134         }
135
136 void CMapExampleSmsEngineTest::tearDown()
137         {
138         _HERE();
139         delete iTarget;
140         delete iObserver;
141         }
142
143 void CMapExampleSmsEngineTest::testParseMsgCoordinates()
144         {
145         _HERE();
146         }
147
148 void CMapExampleSmsEngineTest::testParseMsgRequestType()
149         {
150         _HERE();
151         }
152
153 void CMapExampleSmsEngineTest::testParseMsgUid()
154         {
155         _HERE();
156         iTarget->ParseMsgUid(_L("REQ E01FF1Cd"));
157         }
158
159 void CMapExampleSmsEngineTest::testSendMessage()
160         {
161         _HERE();
162         iTarget->SendSmsL(_L("12345678"), _L("abcd"));
163         }
164
165 void ThrowExceptionL()
166         {
167         _HERE();
168         User::Leave(KErrGeneral);
169         }
170
171 void CMapExampleSmsEngineTest::testSendMessageExceptions()
172         {
173         _HERE();
174         gRSendAsMessage_SetBodyTextLHook = ThrowExceptionL;
175         TS_ASSERT_THROWS_ANYTHING(
176         iTarget->SendSmsL(_L("12345678"), _L("abcd")));
177         }
178
0
相关文章