camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxefilenamegeneratorsymbian/unittest_cxefilenamegeneratorsymbian.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:03:46 +0300
branchRCL_3
changeset 53 61bc0f252b2b
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
* Copyright (c) 2009-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:
*
*/
#include <QDate>
#include <QTest>
#include <QDebug>

#include "unittest_cxefilenamegeneratorsymbian.h"
#include "cxefilenamegeneratorsymbian.h"
#include "cxesettings.h"
#include "cxefakesettings.h"

namespace
{
    static const char* FILENAME_SUFFIX = "CxTest";
}

UnitTestCxeFilenameGeneratorSymbian::UnitTestCxeFilenameGeneratorSymbian()
    : mFileNameGenerator(NULL), mFakeSettings(NULL), mMode(Cxe::ImageMode)
{
}

UnitTestCxeFilenameGeneratorSymbian::~UnitTestCxeFilenameGeneratorSymbian()
{
    delete mFileNameGenerator;
    delete mFakeSettings;
}

// Run before each individual test case
void UnitTestCxeFilenameGeneratorSymbian::init()
{
    mFakeSettings = new CxeFakeSettings();
    
    mFakeSettings->set(CxeSettingIds::FNAME_MONTH_FOLDER, QDate::currentDate().toString("yyyyMM"));
    mFakeSettings->set(CxeSettingIds::FNAME_IMAGE_COUNTER, 0);
    mFakeSettings->set(CxeSettingIds::FNAME_VIDEO_COUNTER, 0);
    mFakeSettings->set(CxeSettingIds::FNAME_FOLDER_SUFFIX, FILENAME_SUFFIX);

    mFileNameGenerator = new CxeFilenameGeneratorSymbian(*mFakeSettings, mMode);
    mFileNameGenerator->init(mMode);
    }

// Run after each individual test case
void UnitTestCxeFilenameGeneratorSymbian::cleanup()
{
    delete mFileNameGenerator;
    mFileNameGenerator = NULL;
    delete mFakeSettings;
    mFakeSettings = NULL;
}

void UnitTestCxeFilenameGeneratorSymbian::testStartNewImageFilenameSequence()
{
    mFileNameGenerator->startNewImageFilenameSequence();
}

void UnitTestCxeFilenameGeneratorSymbian::testNextImageFilenameInSequence()
{
    mFileNameGenerator->startNewImageFilenameSequence();
    QString filename;
    QString ext(".jpg");
    CxeError::Id error = mFileNameGenerator->nextImageFilenameInSequence(filename, ext);
    filename = removeDrive(filename);
    QString reference(generateSequenceImageFileName(0, 0));

    qDebug() << "UnitTestCxeFilenameGeneratorSymbian - Check generated sequence filename (root path removed)..";
    qDebug() << "UnitTestCxeFilenameGeneratorSymbian - Generated: [" << filename << "]";
    qDebug() << "UnitTestCxeFilenameGeneratorSymbian - Reference: [" << reference << "]";
    QVERIFY(QString::compare(removeDrive(filename), reference, Qt::CaseInsensitive) == 0);
}

void UnitTestCxeFilenameGeneratorSymbian::testGenerateFilename()
{
    QString filename;
    QString ext(".jpg");
    CxeError::Id error = mFileNameGenerator->generateFilename(filename, ext);
    filename = removeDrive(filename);
    QString reference(generateImageFileName(0));
    qDebug() << "UnitTestCxeFilenameGeneratorSymbian - Check generated filename (root path removed)..";
    qDebug() << "UnitTestCxeFilenameGeneratorSymbian - Generated: [" << filename << "]";
    qDebug() << "UnitTestCxeFilenameGeneratorSymbian - Reference: [" << reference << "]";
    QVERIFY(QString::compare(filename, generateImageFileName(0), Qt::CaseInsensitive) == 0);
}

QString UnitTestCxeFilenameGeneratorSymbian::generateImageFileName(int counter)
{
    // get the file name suffix
    //QString fileNameSuffix;
    //qobject_cast<CxeSettings*>(mFakeSettings)->get(CxeSettingIds::FNAME_FOLDER_SUFFIX, fileNameSuffix);
    //QString fileNameSuffix("");
    //QString cleanedFileNameSuffix = fnFormat.arg(fileNameSuffix);

    QString monthName = QDate::currentDate().toString("yyyyMM");
    QString filename;
    //filename.sprintf("\\Images\\Camera\\%s\\%sA0\\%04d%s.jpg", monthName.toAscii().data(), monthName.toAscii().data(), counter, fileNameSuffix);
    filename.sprintf("\\Images\\Camera\\%s\\%sA0\\%04d.jpg", monthName.toAscii().data(), monthName.toAscii().data(), counter);
    return filename;
}

QString UnitTestCxeFilenameGeneratorSymbian::generateSequenceImageFileName(int counter, int burstIndex)
{
    // For now, burst image names are created like normal unique names
    QString filename = generateImageFileName(counter);
    // get the file name suffix
    /*QString fileNameSuffix;
    qobject_cast<CxeSettings*>(mFakeSettings)->get(CxeSettingIds::FNAME_FOLDER_SUFFIX, fileNameSuffix);

    QString monthName = QDate::currentDate().toString("yyyyMM");
    QString filename;
    filename.sprintf("\\Images\\Camera\\%s\\%sA0\\%04d%s(%02d).jpg", monthName.toAscii().data(), monthName.toAscii().data(), counter, fileNameSuffix, burstIndex);
    */
    return filename;
}

QString UnitTestCxeFilenameGeneratorSymbian::removeDrive(const QString &filename)
{
    // File name generator may return paths that point to C, E, or F drives.
    // In order to simplify path verification, all drive letters are removed.

    QString res = filename;
    res.remove(QRegExp("^c:\\\\data", Qt::CaseInsensitive));
    res.remove(QRegExp("^e:", Qt::CaseInsensitive));
    res.remove(QRegExp("^f:", Qt::CaseInsensitive));
    return res;
}

// main() function non-GUI testing
QTEST_MAIN(UnitTestCxeFilenameGeneratorSymbian);