--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/filemanager/tsrc/unit/ut_fminternaldrivermodel/src/ut_fminternaldrivemodel.cpp Thu Sep 30 16:33:59 2010 +0800
@@ -0,0 +1,350 @@
+/*
+* Copyright (c) 2009 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:
+* test the file manager internal apis.
+*/
+
+#include "ut_fminternaldrivemodel.h"
+#include "testclassdatafmdrivelistprovider.h"
+#include "fmdrivemodel.h"
+#include <QtTest/QtTest>
+#include <hbapplication.h>
+#include "fmutils.h"
+/*!
+ \class TestFmInternalDriveModel
+ \brief \n
+ class name: FmDriveModel \n
+ class's description: Test the File Manager internal api functions. \n
+ type of test case: unit test\n
+ test cases' number totally: 10 \n
+ */
+
+void TestFmInternalDriveModel::initTestCase()
+{
+ // translate the related text.
+ QString lang = QLocale::system().name();
+ QString path = "z:/resource/qt/translations/";
+ mTranslator.load( path + "filemanager_" + lang );
+ qApp->installTranslator(&mTranslator);
+
+ // get all the drives which can be shown, the parameters should be according to the parameter (Options) of FmDriveModel.
+ FmUtils::getDriveList(mDriverList, false);
+ qDebug() << mDriverList;
+}
+/*!
+ Test Case Description:\n
+ 1. Fucntion Name: \n
+ explicit FmDriveModel( QObject *parent = 0, Options options = 0,
+ FmDriveListProvider *driveListProvider = 0 ); \n
+ 2. Case Descrition: test the constructor function. \n
+ 3. Input Parameters: \n
+ <1> parent = new QObject(),
+ Options = FmDriveModel::FillWithVolume,
+ driveListProvider = new TestDataClassFmDriveListProvider();\n
+ <2> parent = new QObject(),
+ Options = FmDriveModel::FillWithVolume | FillWithDefaultVolume,
+ driveListProvider = 0 \n
+ <3> parent = new QObject();
+ Options = FmDriveModel::FillWithVolume | FillWithDefaultVolume |HideUnAvailableDrive,
+ driveListProvider = 0 \n
+ 4. Expected result: \n
+ <1> no crash \n
+ <2> no crash \n
+ <3> no crash \n
+ */
+void TestFmInternalDriveModel::testConstructor()
+{
+ QObject *pObject = new QObject();
+ // the class TestDataClassFmDriveListProvider is a sub class from FmDriveListProvider.
+ TestDataClassFmDriveListProvider *driveListProvider = new TestDataClassFmDriveListProvider();
+ FmDriveModel *fmDriveModel = new FmDriveModel( pObject,FmDriveModel::FillWithVolume,driveListProvider );
+ QVERIFY ( fmDriveModel != 0 );
+
+ // the drive number in class TestDataClassFmDriveListProvider is "3".
+ QVERIFY ( fmDriveModel->rowCount() == 3 );
+ delete fmDriveModel;
+ fmDriveModel = 0;
+
+ fmDriveModel = new FmDriveModel( pObject,FmDriveModel::FillWithVolume | FmDriveModel::FillWithDefaultVolume ,0 );
+ QVERIFY ( fmDriveModel != 0 );
+ QVERIFY ( fmDriveModel->rowCount() > 0 );
+ delete fmDriveModel;
+ fmDriveModel = 0;
+
+ fmDriveModel = new FmDriveModel( pObject, FmDriveModel::FillWithVolume | FmDriveModel::FillWithDefaultVolume | FmDriveModel::HideUnAvailableDrive ,0 );
+ QVERIFY ( fmDriveModel != 0 );
+ QVERIFY ( fmDriveModel->rowCount() > 0 );
+
+ delete fmDriveModel;
+ delete pObject;
+ delete driveListProvider;
+}
+
+/*!
+ Test Case Description:\n
+ 1. Fucntion Name: int rowCount( const QModelIndex &parent = QModelIndex() ) const; \n
+ 2. Case Descrition: Verify it return the right row count. \n
+ 3. Input Parameters: \n
+ <1> parent = QModelIndex() \n
+ 4. Expected result: \n
+ <1> retColumnCount = 1 \n
+ */
+void TestFmInternalDriveModel::testRowCount()
+{
+ FmDriveModel *fmDriveModel = new FmDriveModel(0);
+ QModelIndex testIndex1 = fmDriveModel->index(1,0);
+
+ int retRowCount1 = fmDriveModel->rowCount(testIndex1);
+ QVERIFY(retRowCount1 == 0);
+ int retRowCount2 = fmDriveModel->rowCount();
+ delete fmDriveModel;
+}
+
+/*!
+ Test Case Description:\n
+ 1. Fucntion Name: int columnCount( const QModelIndex &parent = QModelIndex() ) const; \n
+ 2. Case Descrition: \n
+ 3. Input Parameters: \n
+ <1> parent = QModelIndex() \n
+ 4. Expected result: \n
+ <1> retColumnCount = 1 \n
+ */
+void TestFmInternalDriveModel::testColumnCount()
+{
+ FmDriveModel *fmDriveModel = new FmDriveModel(0);
+ QModelIndex testIndex = QModelIndex();
+ int retColumnCount = fmDriveModel->columnCount(testIndex);
+ QVERIFY(retColumnCount == 1);
+ delete fmDriveModel;
+}
+
+/*!
+ Test Case Description:\n
+ 1. Fucntion Name: \n
+ QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const; \n
+ 2. Case Descrition: \n
+ 3. Input Parameters: \n
+ <1> index = QModelIndex(), role = Qt::DisplayRole \n
+ <2> index = QModelIndex(), role = Qt::UserRole \n
+ <3> index = QModelIndex(), role = Qt::DecorationRole \n
+ <4> index = QModelIndex(), role = Qt::TextAlignmentRole \n
+ 4. Expected result: \n
+ <1> retData1 = "C:" \n
+ <2> retData2 = "C:\" \n
+ <3> return the right icon
+ <4> to be delete...
+ */
+void TestFmInternalDriveModel::testData()
+{
+ QObject *pObject = new QObject();
+ TestDataClassFmDriveListProvider *driveListProvider = new TestDataClassFmDriveListProvider();
+
+ FmDriveModel *fmDriveModel = new FmDriveModel( 0 );
+ QModelIndex index = fmDriveModel->index(0,0);
+
+ QVariant retData1 = fmDriveModel->data(index, Qt::DisplayRole);
+ QString strTemp1 = retData1.toString();
+ QVERIFY( strTemp1.trimmed() == "C:" );
+
+// unable to verify the return icon is the right one.
+ QVariant retData3 = fmDriveModel->data(index, Qt::DecorationRole);
+
+// need to delete the "if (index.column() == 1 && role == Qt::TextAlignmentRole)", because only one column is defined.
+ QVariant retData4 = fmDriveModel->data(index, Qt::TextAlignmentRole);
+
+ delete driveListProvider;
+ driveListProvider = 0;
+ delete fmDriveModel;
+ fmDriveModel = 0;
+}
+
+/*!
+ Test Case Description:\n
+ 1. Fucntion Name: \n
+ bool indexValid( const QModelIndex &index ) const; \n
+ 2. Case Descrition: \n
+ 3. Input Parameters: \n
+ <1> index = QModelIndex() \n
+ 4. Expected result: \n
+ <1> retBool = true \n
+ */
+void TestFmInternalDriveModel::testIndexValid()
+{
+ FmDriveModel *fmDriveModel = new FmDriveModel(0);
+ QModelIndex aIndex = fmDriveModel->index(0,0);
+ QModelIndex bIndex = fmDriveModel->index(0,1);
+ bool a = fmDriveModel->indexValid(aIndex);
+ QVERIFY(a == true);
+ bool b = fmDriveModel->indexValid(bIndex);
+ QVERIFY(b == true);
+ delete fmDriveModel;
+ fmDriveModel = 0;
+}
+
+/*!
+ Test Case Description:\n
+ 1. Fucntion Name: \n
+ QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; \n
+ 2. Case Descrition: \n
+ 3. Input Parameters: \n
+ <1> section = 0, orientation = Qt::Horizontal, role = Qt::DisplayRole \n
+ <2> section = 1, orientation = Qt::Horizontal, role = Qt::DisplayRole \n
+ <3> section = 2, orientation = Qt::Horizontal, role = Qt::DisplayRole \n
+ <4> section = 3, orientation = Qt::Horizontal, role = Qt::DisplayRole \n
+ <5> section = 4, orientation = Qt::Horizontal, role = Qt::DisplayRole \n
+ <6> section = 1, orientation = Qt::Vertical, role = Qt::DisplayRole \n
+ <7> section = 1, orientation = Qt::Horizontal, role = Qt::UserRole \n
+ 4. Expected result: \n
+ <1> retHeaderData.toString() = "Name" \n
+ <2> retHeaderData.toString() = "Size" \n
+ <3> retHeaderData.toString() = "Type" \n
+ <4> retHeaderData.toString() = "Date Modified" \n
+ <5> no crash \n
+ <6> no crash \n
+ <7> no crash \n
+ */
+void TestFmInternalDriveModel::testHeaderData()
+{
+ FmDriveModel *fmDriveModel = new FmDriveModel(0);
+ //
+ QVariant retHeaderData1 = fmDriveModel->headerData(0, Qt::Horizontal, Qt::DisplayRole);
+ QVERIFY(retHeaderData1.toString() == "Name");
+
+ QVariant retHeaderData2 = fmDriveModel->headerData(1, Qt::Horizontal, Qt::DisplayRole);
+ QVERIFY(retHeaderData2.toString() == "Size");
+
+ QVariant retHeaderData3 = fmDriveModel->headerData(2, Qt::Horizontal, Qt::DisplayRole);
+ QVERIFY(retHeaderData3.toString() == "Type");
+
+ QVariant retHeaderData4 = fmDriveModel->headerData(3, Qt::Horizontal, Qt::DisplayRole);
+ QVERIFY(retHeaderData4.toString() == "Date Modified");
+
+ QVariant retHeaderData5 = fmDriveModel->headerData(4, Qt::Horizontal, Qt::DisplayRole);
+ QVERIFY(retHeaderData5.toString().isEmpty());// "");
+
+#ifdef TO_BE_INVESTIGATE
+ QVariant retHeaderData6 = fmDriveModel->headerData(0, Qt::Vertical, Qt::DisplayRole);
+ QString a = retHeaderData6.toString(); // to be investigated.
+// QVERIFY(retHeaderData6.toString() == "");
+#endif
+
+ QVariant retHeaderData7 = fmDriveModel->headerData(1, Qt::Horizontal, Qt::UserRole);
+ QVERIFY(retHeaderData7.toString().isEmpty()); //== "");
+
+ delete fmDriveModel;
+ fmDriveModel = 0;
+}
+
+/*!
+ Test Case Description:\n
+ 1. Fucntion Name: \n
+ QString displayString( const QModelIndex &index ) const; \n
+ 2. Case Descrition: Verify the correct display string is shown. \n
+ 3. Input Parameters: \n
+ <1> index = QModelIndex() \n
+ 4. Expected result: \n
+ <1> retBool = true \n
+ */
+void TestFmInternalDriveModel::testDisplayStringWithVolume()
+{
+ // option = FillWithVolume | FillWithDefaultVolume
+ FmDriveModel *fmDriveModel = new FmDriveModel( 0,FmDriveModel::FillWithVolume | FmDriveModel::FillWithDefaultVolume, 0);
+
+ for(int i=0; i < mDriverList.count(); i++){
+ QModelIndex indexValid = fmDriveModel->index(i,0);
+ // get the display string.
+ QVariant retData = fmDriveModel->displayString(indexValid);
+ QVERIFY(retData.toString() == FmUtils::fillDriveVolume(mDriverList[i], true));
+ }
+ delete fmDriveModel;
+}
+
+/*!
+ Test Case Description:\n
+ 1. Fucntion Name: \n
+ QString displayString( const QModelIndex &index ) const; \n
+ 2. Case Descrition: Verify the correct display string is shown. \n
+ 3. Input Parameters: \n
+ <1> index = QModelIndex() \n
+ 4. Expected result: \n
+ <1> retBool = true \n
+ */
+void TestFmInternalDriveModel::testDisplayStringWithoutVolume()
+{
+ FmDriveModel *fmDriveModel = new FmDriveModel();
+
+ for(int i=0; i < mDriverList.count(); i++){
+ QModelIndex indexValid = fmDriveModel->index(i,0);
+ // get the display string.
+ QVariant retData = fmDriveModel->displayString(indexValid);
+// QString retString = retData.toString();
+// qDebug()<<retString;
+ QVERIFY(retData.toString() == FmUtils::removePathSplash( mDriverList[i] ));
+ }
+ delete fmDriveModel;
+}
+
+/*!
+ Test Case Description:\n
+ 1. Fucntion Name: \n
+ QString displayString( const QModelIndex &index ) const; \n
+ 2. Case Descrition: Verify it doesn't crash when using an invalid index. \n
+ 3. Input Parameters: \n
+ <1> index = QModelIndex() \n
+ 4. Expected result: \n
+ <1> retString = QString() \n
+ */
+void TestFmInternalDriveModel::testDisplayStringEmpty()
+{
+ FmDriveModel *fmDriveModel = new FmDriveModel();
+ QModelIndex indexInValid = fmDriveModel->index(-1,0);
+ QVariant retData = fmDriveModel->displayString(indexInValid);
+ QVERIFY(retData.toString() == QString());
+}
+/*!
+ Test Case Description:\n
+ 1. Fucntion Name: \n
+ QString driveName( const QModelIndex &index ) const; \n
+ 2. Case Descrition: \n
+ 3. Input Parameters: \n
+ <1> indexValid = QModelIndex() \n
+ <2> indexInValid = QModelIndex() \n
+ 4. Expected result: \n
+ <1> return the rignt drive name. \n
+ <2> no crash. \n
+ */
+void TestFmInternalDriveModel::testDriveName()
+{
+ FmDriveModel *fmDriveModel = new FmDriveModel();
+ QModelIndex indexValid = fmDriveModel->index(0,0);
+ QModelIndex indexInValid1 = fmDriveModel->index(0,2);
+ QModelIndex indexInValid2 = fmDriveModel->index(18);
+ QModelIndex indexInValid3 = fmDriveModel->index(5,0);
+ QString retDriveName1 = fmDriveModel->driveName(indexValid);
+ QVERIFY(retDriveName1 == "C:/");
+ QString retDriveName2 = fmDriveModel->driveName(indexInValid1);
+ QVERIFY(retDriveName2.isEmpty());
+ QString retDriveName3 = fmDriveModel->driveName(indexInValid2);
+ QVERIFY(retDriveName3.isEmpty());
+ QString retDriveName4 = fmDriveModel->driveName(indexInValid3);
+ QVERIFY(retDriveName4.isEmpty());
+ delete fmDriveModel;
+ fmDriveModel = 0;
+}
+
+void TestFmInternalDriveModel::cleanupTestCase()
+{
+}
+
+QTEST_MAIN(TestFmInternalDriveModel)