TestSource.cpp

#include "TestHeader.h"
#include "TestDriver.h"
#include "Logger.h"
#include "cmapexamplesmsengine.h"

#include <msvstore.h>

// ========== logger ==========

#include <flogger.h>

#define __DEFINE_LITERAL(aLiteralName, aStr) _LIT(aLiteralName, aStr);

_LIT( _KLogDir, "MyLogs" );
_LIT( _KLogFile, "test.txt" );

#define _LOGF( aEllipsis )\
    {\
    _LIT(_KFormat,"%S(%d):%Ld:%S: ");\
    __DEFINE_LITERAL( _KFile, __FILE__ );\
    TPtrC8 _func8((TUint8*)__FUNCTION__);\
    TBuf<40> _func;\
    _func.Copy(_func8.Right(40));\
    TBuf<256> _log;\
    _log.Format(_KFormat, &_KFile, __LINE__, RThread().Id().Id(), &_func);\
    _log.AppendFormat aEllipsis;\
    RFileLogger::Write( _KLogDir, _KLogFile, EFileLoggingModeAppend, _log );\
    }

#define _HERE()   _LOGF((KNullDesC))

// ========== stubbed / mocked implementations ==========

class DummyObserver : public MSmsEngineObserver
{
virtual void MessageSent()
    {
    _LOGF((_L("DummyObserver::MessageSent()")));
    }
virtual void MessageReceived(TDesC& aMsg, TDesC& aAddr)
    {
    _LOGF((_L("DummyObserver::MessageReceived(%S, %S)"), &aMsg, &aAddr));
    }
virtual void MessageRequested(TDesC& aMsg, TDesC& aAddr)
    {
    _LOGF((_L("DummyObserver::MessageRequested(%S, %S)"), &aMsg, &aAddr));
    }
virtual void SmsEngineError(TInt aErrorCode)
    {
    _LOGF((_L("DummyObserver::SmsEngineError(%d)"), aErrorCode));
    }
};

void RSendAsMessage::AddRecipientL(const TDesC16& a, RSendAsMessage::TSendAsRecipientType b)
    {
    _LOGF((_L("RSendAsMessage::AddRecipientL(%S, %d)"), &a, b));
    }
void RSendAsMessage::Close()
    {
    _LOGF((_L("RSendAsMessage::Close()")));
    }
void RSendAsMessage::CreateL(RSendAs &a, TUid b)
    {
    _LOGF((_L("RSendAsMessage::CreateL(%d, %d)"), &a, b));
    }
void RSendAsMessage::SendMessage(class TRequestStatus &)
    {
    _LOGF((_L("RSendAsMessage::SendMessage()")));
    }

// global function pointer
void (*gRSendAsMessage_SetBodyTextLHook)() = NULL;

void RSendAsMessage::SetBodyTextL(const TDesC16& a)
    {
    _LOGF((_L("RSendAsMessage::SetBodyTextL(%S)"), &a));
    if(gRSendAsMessage_SetBodyTextLHook)
        gRSendAsMessage_SetBodyTextLHook();
    }

CMsvEntry * CMsvEntry::NewL(CMsvSession &, long, TMsvSelectionOrdering const &)
    {
    _LOGF((_L("CMsvEntry::NewL()")));
    return NULL;
    }
CMsvSession * CMsvSession::OpenAsyncL(MMsvSessionObserver &)
    {
    _LOGF((_L("CMsvSession::OpenAsyncL()")));
    return NULL;
    }
CMsvStore * CMsvEntry::ReadStoreL(void)
    {
    _LOGF((_L("CMsvEntry::ReadStoreL()")));
    return NULL;
    }
TInt CMsvStore::HasBodyTextL(void) const
    {
    _LOGF((_L("CMsvStore::HasBodyTextL()")));
    return KErrNone;
    }
TInt RSendAs::Connect(void)
    {
_LOGF((_L("RSendAs::Connect()")));
    return KErrNone;
    }
TMsvSelectionOrdering::TMsvSelectionOrdering(void)
    {
    _LOGF((_L("TMsvSelectionOrdering::TMsvSelectionOrdering()")));
    }
void CMsvEntry::DeleteL(long)
    {
    _LOGF((_L("TCMsvEntry::DeleteL()")));
    }
void CMsvEntry::SetEntryL(long)
    {
    _LOGF((_L("CMsvEntry::SetEntryL()")));
    }
void CMsvStore::RestoreBodyTextL(CRichText &)
    {
    _LOGF((_L("CMsvStore::RestoreBodyTextL()")));
    }

// ========== test suite ==========

void CMapExampleSmsEngineTest::setUp()
    {
    _HERE();
    gRSendAsMessage_SetBodyTextLHook = NULL;
    iObserver = new (ELeave) DummyObserver();
    iTarget = CMapExampleSmsEngine::NewL(iObserver);
    }

void CMapExampleSmsEngineTest::tearDown()
    {
    _HERE();
    delete iTarget;
    delete iObserver;
    }

void CMapExampleSmsEngineTest::testParseMsgCoordinates()
    {
    _HERE();
    }

void CMapExampleSmsEngineTest::testParseMsgRequestType()
    {
    _HERE();
    }

void CMapExampleSmsEngineTest::testParseMsgUid()
    {
    _HERE();
    iTarget->ParseMsgUid(_L("REQ E01FF1Cd"));
    }

void CMapExampleSmsEngineTest::testSendMessage()
    {
    _HERE();
    iTarget->SendSmsL(_L("12345678"), _L("abcd"));
    }

void ThrowExceptionL()
    {
    _HERE();
    User::Leave(KErrGeneral);
    }

void CMapExampleSmsEngineTest::testSendMessageExceptions()
    {
    _HERE();
    gRSendAsMessage_SetBodyTextLHook = ThrowExceptionL;
    TS_ASSERT_THROWS_ANYTHING(
        iTarget->SendSmsL(_L("12345678"), _L("abcd"))
        );
}