phoneengine/phoneservices/tsrc/ut_ctiurischemeparser/unit_tests.cpp
author hgs
Fri, 17 Sep 2010 17:09:12 +0300
changeset 74 d1c62c765e48
parent 46 bc5a64e5bc3c
permissions -rw-r--r--
201037

/*!
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). 
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:  Unit tests for CTI URI Parser.
*
*/

#include <QtTest/QtTest>
#include <mockservice.h>
#include "ctiurischemeparser.h"

const QString KCtiUriSchemePrefix = "cti:";

class UT_CtiUriSchemeParser : public QObject, public MockService
{
    Q_OBJECT
    
public:
    UT_CtiUriSchemeParser();
    virtual ~UT_CtiUriSchemeParser();

private slots:
    void init();
    void cleanup();
    
    void t_isSupportedUriScheme();
    void t_ctiUriWithLocalNumber();
    void t_ctiUriWithGlobalNumber();
    void t_ctiUriWithGlobalNumberAndVisualSeparators();
    void t_ctiUriWithGlobalNumberAndToneInput();
    void t_invalidUriWrongSchema();
    void t_invalidUriTooLongPhoneNumber();
    void t_invalidUriMultipleWaitInSuccession();
    void t_invalidUriInvalidCharacters();
    void t_invalidUriToneInputOnly();
    void t_invalidUriOnlyVisualSeparators();
    void t_invalidUriOnlyPausesAndWaits();
    void t_invalidUriToneInputCharactersInNumber();

private:
    CtiUriSchemeParser *m_uriParser;
};


UT_CtiUriSchemeParser::UT_CtiUriSchemeParser()
    :
    m_uriParser(NULL)
{
}


UT_CtiUriSchemeParser::~UT_CtiUriSchemeParser()
{
    delete m_uriParser;
}


void UT_CtiUriSchemeParser::init()
{
    initialize();
    
    m_uriParser = new CtiUriSchemeParser();
}


void UT_CtiUriSchemeParser::cleanup()
{
    reset();
    
    delete m_uriParser;
    m_uriParser = NULL;
}


void UT_CtiUriSchemeParser::t_isSupportedUriScheme()
{
    // valid scheme
    QString uriWithValidScheme(
        QString("cti:") +
        QString("1234567890"));
    bool result = m_uriParser->isSupportedUriScheme(uriWithValidScheme);
    
    QCOMPARE(result, true);   
    
    // invalid scheme
    QString uriWithWrongScheme(
        QString("tel:") +
        QString("1234567890"));
    result = m_uriParser->isSupportedUriScheme(uriWithWrongScheme);
    
    QCOMPARE(result, false);   
    QVERIFY(verify());
}


void UT_CtiUriSchemeParser::t_ctiUriWithLocalNumber()
{
    QString KExpectedPhoneNumber = "0401234567890";
    QString KExpectedDtmfString = "";
    QString ctiUriWithLocalNumber(KCtiUriSchemePrefix + KExpectedPhoneNumber);
    
    QString phoneNumber = "";
    QString dtmfString = "";
    bool result = m_uriParser->parseUri(
        ctiUriWithLocalNumber, phoneNumber, dtmfString);
    
    QCOMPARE(result, true);
    QCOMPARE(phoneNumber, KExpectedPhoneNumber);
    QCOMPARE(dtmfString, KExpectedDtmfString);
    QVERIFY(verify());
}


void UT_CtiUriSchemeParser::t_ctiUriWithGlobalNumber()
{
    QString KExpectedPhoneNumber = "+358401234567890";
    QString KExpectedDtmfString = "";
    QString ctiUriWithGlobalNumber(KCtiUriSchemePrefix + KExpectedPhoneNumber);
    
    QString phoneNumber = "";
    QString dtmfString = "";
    bool result = m_uriParser->parseUri(
        ctiUriWithGlobalNumber, phoneNumber, dtmfString);
    
    QCOMPARE(result, true);
    QCOMPARE(phoneNumber, KExpectedPhoneNumber);
    QCOMPARE(dtmfString, KExpectedDtmfString);
    QVERIFY(verify());
}


void UT_CtiUriSchemeParser::t_ctiUriWithGlobalNumberAndVisualSeparators()
{
    QString KExpectedPhoneNumber = "+358401234567890";
    QString KExpectedDtmfString = "";
    QString ctiUriWithVisualSeparators("cti:+358-(40)12345.6789 0");
    
    QString phoneNumber = "";
    QString dtmfString = "";
    bool result = m_uriParser->parseUri(
        ctiUriWithVisualSeparators, phoneNumber, dtmfString);
    
    QCOMPARE(result, true);
    QCOMPARE(phoneNumber, KExpectedPhoneNumber);
    QCOMPARE(dtmfString, KExpectedDtmfString);
    QVERIFY(verify());
}


void UT_CtiUriSchemeParser::t_ctiUriWithGlobalNumberAndToneInput()
{
    QString KExpectedPhoneNumber = "+358401234567890";
    QString KExpectedDtmfString = "w0123456789pp*#";
    QString ctiUriWithNumberAndToneInput("cti:+358401234567890/0123456789,,*#");
    
    QString phoneNumber = "";
    QString dtmfString = "";
    bool result = m_uriParser->parseUri(
        ctiUriWithNumberAndToneInput, phoneNumber, dtmfString);
    
    QCOMPARE(result, true);
    QCOMPARE(phoneNumber, KExpectedPhoneNumber);
    QCOMPARE(dtmfString, KExpectedDtmfString);
    QVERIFY(verify());
}


void UT_CtiUriSchemeParser::t_invalidUriWrongSchema()
{
    QString KExpectedPhoneNumber = "";
    QString KExpectedDtmfString = "";
    QString uriWithWrongSchema(
        QString("tel:") +
        QString("1234567890"));
    
    QString phoneNumber = "";
    QString dtmfString = "";
    bool result = m_uriParser->parseUri(
        uriWithWrongSchema, phoneNumber, dtmfString);
    
    QCOMPARE(result, false);
    QCOMPARE(phoneNumber, KExpectedPhoneNumber);
    QCOMPARE(dtmfString, KExpectedDtmfString);
    QVERIFY(verify());
}


void UT_CtiUriSchemeParser::t_invalidUriTooLongPhoneNumber()
{
    QString KExpectedPhoneNumber = "";
    QString KExpectedDtmfString = "";
    QString uriWithTooLongPhoneNumber(
        QString("cti:") +
        QString("12345678901234567890123456789012345678901234567890") +
        QString("12345678901234567890123456789012345678901234567890") + 
        QString("1"));

    QString phoneNumber = "";
    QString dtmfString = "";
    bool result = m_uriParser->parseUri(
        uriWithTooLongPhoneNumber, phoneNumber, dtmfString);
    
    QCOMPARE(result, false);
    QCOMPARE(phoneNumber, KExpectedPhoneNumber);
    QCOMPARE(dtmfString, KExpectedDtmfString);
    QVERIFY(verify());
}


void UT_CtiUriSchemeParser::t_invalidUriMultipleWaitInSuccession()
{
    QString KExpectedPhoneNumber = "";
    QString KExpectedDtmfString = "";
    QString uriWithMultipleWaitInSuccession(
        QString("cti:") +
        QString("1234567890//123//"));

    QString phoneNumber = "";
    QString dtmfString = "";
    bool result = m_uriParser->parseUri(
        uriWithMultipleWaitInSuccession, phoneNumber, dtmfString);
    
    QCOMPARE(result, false);
    QCOMPARE(phoneNumber, KExpectedPhoneNumber);
    QCOMPARE(dtmfString, KExpectedDtmfString);
    QVERIFY(verify());
}


void UT_CtiUriSchemeParser::t_invalidUriInvalidCharacters()
{
    QString KExpectedPhoneNumber = "";
    QString KExpectedDtmfString = "";
    QString uriWithInvalidCharacters(
        QString("cti:") +
        QString("abcdefghijklmnopqrstuvxyz"));

    QString phoneNumber = "";
    QString dtmfString = "";
    bool result = m_uriParser->parseUri(
        uriWithInvalidCharacters, phoneNumber, dtmfString);
    
    QCOMPARE(result, false);   
    QCOMPARE(phoneNumber, KExpectedPhoneNumber);
    QCOMPARE(dtmfString, KExpectedDtmfString);
    QVERIFY(verify());
    
    QString invalidUri(
        QString("cti:") +
        QString("a"));
    result = m_uriParser->parseUri(
        invalidUri, phoneNumber, dtmfString);
    
    QCOMPARE(result, false);
    QCOMPARE(phoneNumber, KExpectedPhoneNumber);
    QCOMPARE(dtmfString, KExpectedDtmfString);
    QVERIFY(verify());
}


void UT_CtiUriSchemeParser::t_invalidUriToneInputOnly()
{
    QString KExpectedPhoneNumber = "";
    QString KExpectedDtmfString = "";
    QString uriWithToneInputOnly(
        QString("cti:") +
        QString("/123,321"));
    
    QString phoneNumber = "";
    QString dtmfString = "";
    bool result = m_uriParser->parseUri(
        uriWithToneInputOnly, phoneNumber, dtmfString);
    
    QCOMPARE(result, false);
    QCOMPARE(phoneNumber, KExpectedPhoneNumber);
    QCOMPARE(dtmfString, KExpectedDtmfString);
    QVERIFY(verify());
}


void UT_CtiUriSchemeParser::t_invalidUriOnlyVisualSeparators()
{
    QString KExpectedPhoneNumber = "";
    QString KExpectedDtmfString = "";
    QString uriWithToneInputOnly(
        QString("cti:") +
        QString(" -.()"));

    QString phoneNumber = "";
    QString dtmfString = "";
    bool result = m_uriParser->parseUri(
        uriWithToneInputOnly, phoneNumber, dtmfString);
    
    QCOMPARE(result, false);
    QCOMPARE(phoneNumber, KExpectedPhoneNumber);
    QCOMPARE(dtmfString, KExpectedDtmfString);
    QVERIFY(verify());
}


void UT_CtiUriSchemeParser::t_invalidUriOnlyPausesAndWaits()
{
    QString KExpectedPhoneNumber = "";
    QString KExpectedDtmfString = "";
    QString uriWithPausesAndWaitsOnly(
        QString("cti:") +
        QString(",,//"));
    
    QString phoneNumber = "";
    QString dtmfString = "";
    bool result = m_uriParser->parseUri(
        uriWithPausesAndWaitsOnly, phoneNumber, dtmfString);
    
    QCOMPARE(result, false);
    QCOMPARE(phoneNumber, KExpectedPhoneNumber);
    QCOMPARE(dtmfString, KExpectedDtmfString);
    QVERIFY(verify());
}


void UT_CtiUriSchemeParser::t_invalidUriToneInputCharactersInNumber()
{
    QString KExpectedPhoneNumber = "";
    QString KExpectedDtmfString = "";
    QString uriWithToneInputCharactersInNumber1(
        QString("cti:") +
        QString("1234567890*#"));
    
    QString phoneNumber = "";
    QString dtmfString = "";
    bool result = m_uriParser->parseUri(
        uriWithToneInputCharactersInNumber1, phoneNumber, dtmfString);
    
    QCOMPARE(result, false);
    QCOMPARE(phoneNumber, KExpectedPhoneNumber);
    QCOMPARE(dtmfString, KExpectedDtmfString);
    
    QString uriWithToneInputCharactersInNumber2(
        QString("cti:") +
        QString("*#1234567890"));
    result = m_uriParser->parseUri(
        uriWithToneInputCharactersInNumber2, phoneNumber, dtmfString);
    QCOMPARE(result, false);
    QCOMPARE(phoneNumber, KExpectedPhoneNumber);
    QCOMPARE(dtmfString, KExpectedDtmfString);
    
    QVERIFY(verify());
}

QTEST_MAIN(UT_CtiUriSchemeParser)
#include "unit_tests.moc"