stif/QtUI/StifQtUI/test/testcontroller.cpp
branchRCL_3
changeset 9 8a14024f954a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/stif/QtUI/StifQtUI/test/testcontroller.cpp	Mon Mar 15 12:46:13 2010 +0200
@@ -0,0 +1,357 @@
+/*
+* 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: QT C++ based Class.
+*              Unit Test to StfQtUI's controller and model.
+*
+*/
+#include "testcontroller.h"
+#include "stfqtuimodel.h"
+#include "stfqtuicontroller.h"
+#include "cstfcase.h"
+#include "cstfmodule.h"
+#include <QProcess>
+
+const QString KConfigFile1 = "c:\\STFQTUI_Test\\testframework1.ini";
+const QString KConfigFile2 = "c:\\STFQTUI_Test\\testframework2.ini";
+const QString KDefaultModuleName = "demomodule";
+const QString KDefaultSetName = "stfqtuitesting.set";
+
+testcontroller::testcontroller() 
+    : OnSetListChangedFired(false),
+            OnCaseStatisticChangedFired(false),
+            OnRunningCaseChangedFired(false)
+    {
+    // TODO Auto-generated constructor stub
+    model = new StfQtUIModel();
+    model->AddStifModelEventListener(this);
+    controller = new StfQtUIController(model);
+    controller->AddStfEventListener(this);
+    controller->OpenEngineIniFile(KConfigFile1);
+    }
+
+testcontroller::~testcontroller()
+    {
+    // TODO Auto-generated destructor stub
+    delete controller;
+    delete model;
+    }
+
+
+void testcontroller::T_GetModuleList_ModuleNumber()
+    {
+    controller->OpenEngineIniFile(KConfigFile1);
+    int moduleSize = controller->GetModuleList().size();
+    QCOMPARE(moduleSize, 1);
+    }
+
+void testcontroller::T_GetModuleList_ModuleName()
+    {
+    controller->OpenEngineIniFile(KConfigFile1);
+    QList<QString> moduleList = controller->GetModuleList();
+    bool find = false;
+    foreach(QString m, moduleList)
+        {
+        if(m.toLower() == KDefaultModuleName)
+            {
+            find = true;
+            break;
+            }
+        }
+    QCOMPARE(find, true);
+    }
+
+void testcontroller::T_OpenEngineIniFile_ModuleNumber()
+    {
+    controller->OpenEngineIniFile(KConfigFile2);    
+    int moduleSize = controller->GetModuleList().size();
+    QCOMPARE(moduleSize, 2);
+    }
+
+
+
+void testcontroller::T_OpenEngineIniFile()
+    {
+    bool rst;
+    rst = controller->OpenEngineIniFile(KConfigFile2);
+    QCOMPARE(rst, true);
+    rst = controller->OpenEngineIniFile(KConfigFile1);    
+    QCOMPARE(rst, true);
+    rst = controller->OpenEngineIniFile(KConfigFile2);
+    QCOMPARE(rst, true);
+    rst = controller->OpenEngineIniFile("z:\\abc.ini");
+    //QCOMPARE(rst, false);
+    rst = controller->OpenEngineIniFile(KConfigFile1);    
+    QCOMPARE(rst, true);                
+    }
+
+void testcontroller::T_GetCaseListByModule()
+    {
+    controller->OpenEngineIniFile(KConfigFile1); 
+    QList<QString> list = controller->GetCaseListByModule(KDefaultModuleName);
+    QCOMPARE(list.size(), 6);
+    list = controller->GetCaseListByModule("null");
+    QCOMPARE(list.size(), 0);
+    
+    }
+void testcontroller::T_GetCase()
+    {
+    CSTFCase theCase = controller->GetCase(KDefaultModuleName, 1);
+    QCOMPARE(theCase.Index(), 1);
+    theCase = controller->GetCase(KDefaultModuleName, 21);    
+    QCOMPARE(theCase.Index(), -1);
+    QCOMPARE(theCase.Name(), QString(""));
+    theCase = controller->GetCase("null", 0);
+    QCOMPARE(theCase.Name(), QString(""));
+    }
+
+void testcontroller::T_GetSetList()
+    {
+    OnSetListChangedFired = false;
+    QList<QString> list = controller->GetSetList();
+    bool find = false;
+    foreach(QString set, list)
+        {
+        if(set == KDefaultSetName)
+            {
+            find = true;
+            break;
+            }
+        }
+    QCOMPARE(find, true);
+    QCOMPARE(OnSetListChangedFired, false);//ensure SetListChanged does not be fired.
+    }
+
+void testcontroller::T_GetCaseListBySet()
+    {
+    OnSetListChangedFired = false;
+    QList<QString> list = controller->GetCaseListBySet(KDefaultSetName);
+    QCOMPARE(list.size(),5);
+    list = controller->GetCaseListBySet("null");
+    QCOMPARE(list.size(),0);
+    QCOMPARE(OnSetListChangedFired, false);//ensure SetListChanged does not be fired.
+    }
+
+void testcontroller::T_AddCaseToSet()
+    {
+    OnSetListChangedFired = false;
+    QList<QString> list = controller->GetSetList();
+    int before_count = list.count();
+    QList<CSTFCase> cases;
+    QList<QString> caselist = controller->GetCaseListByModule(KDefaultModuleName);
+    for(int i=0;i<caselist.size();i++)
+        {
+        CSTFCase theCase = controller->GetCase(KDefaultModuleName, i);
+        cases.append(theCase);
+        }
+    controller->AddCaseToSet(cases, "test1");
+    list = controller->GetSetList();    
+    int after_count = list.count();
+    QCOMPARE(before_count + 1, after_count);
+    QCOMPARE(OnSetListChangedFired, true);
+    }
+
+void testcontroller::T_CreateSet()
+    {
+    //tested object is still not implemented.
+    }
+
+void testcontroller::T_DeleteSet()
+    {
+    //tested object is still not implemented.
+    }
+
+void testcontroller::T_ShowOutput()
+    {
+    QCOMPARE(controller->ShowOutput(), false);
+    controller->SetShowOutput(true);
+    QCOMPARE(controller->ShowOutput(), true);
+    controller->SetShowOutput(false);
+    QCOMPARE(controller->ShowOutput(), false);     
+    }
+
+void testcontroller::T_Model_ClearCasesStatus()
+    {
+    OnCaseStatisticChangedFired = false;
+    model->ClearCasesStatus();
+    QCOMPARE(OnCaseStatisticChangedFired, true);
+    QCOMPARE(model->GetCasesByStatus(EStatusExecuted).size(), 0);
+    QCOMPARE(model->GetCasesByStatus(EStatusPassed).size(), 0);
+    QCOMPARE(model->GetCasesByStatus(EStatusFailed).size(), 0);
+    QCOMPARE(model->GetCasesByStatus(EStatusAborted).size(), 0);
+    QCOMPARE(model->GetCasesByStatus(EStatusCrashed).size(), 0);
+    }
+
+void testcontroller::T_Model_AddRunningCase_RemoveRunningCase()
+    {
+    CStartedTestCase* startedCase = 0;
+    CSTFCase aCase;
+    OnRunningCaseChangedFired = false;
+    QCOMPARE(model->GetCasesByStatus(EStatusRunning).size(), 0);
+    model->AddRunningCase(startedCase, aCase);
+    QCOMPARE(OnRunningCaseChangedFired, true);
+    QCOMPARE(model->GetCasesByStatus(EStatusRunning).size(), 1);
+    
+    OnRunningCaseChangedFired = false;    
+    model->RemoveRunningCase(startedCase);
+    QCOMPARE(OnRunningCaseChangedFired, true);    
+    QCOMPARE(model->GetCasesByStatus(EStatusRunning).size(), 0);    
+    }
+
+void testcontroller::T_Model_AddCaseByStatus_GetCasesByStatus()
+    {
+    CSTFCase aCase;
+    model->ClearCasesStatus();
+    OnCaseStatisticChangedFired = false;
+    
+    QCOMPARE(model->GetCasesByStatus(EStatusExecuted).size(), 0);
+    model->AddCaseByStatus(EStatusExecuted,aCase);
+    QCOMPARE(OnCaseStatisticChangedFired, true);
+    QCOMPARE(model->GetCasesByStatus(EStatusExecuted).size(), 1);
+    
+    OnCaseStatisticChangedFired = false;
+    QCOMPARE(model->GetCasesByStatus(EStatusPassed).size(), 0);
+    model->AddCaseByStatus(EStatusPassed,aCase);    
+    QCOMPARE(OnCaseStatisticChangedFired, true);
+    QCOMPARE(model->GetCasesByStatus(EStatusPassed).size(), 1);
+
+    OnCaseStatisticChangedFired = false;
+    QCOMPARE(model->GetCasesByStatus(EStatusFailed).size(), 0);
+    model->AddCaseByStatus(EStatusFailed,aCase);    
+    QCOMPARE(OnCaseStatisticChangedFired, true);
+    QCOMPARE(model->GetCasesByStatus(EStatusFailed).size(), 1);
+
+    OnCaseStatisticChangedFired = false;
+    QCOMPARE(model->GetCasesByStatus(EStatusAborted).size(), 0);
+    model->AddCaseByStatus(EStatusAborted,aCase);    
+    QCOMPARE(OnCaseStatisticChangedFired, true);
+    QCOMPARE(model->GetCasesByStatus(EStatusAborted).size(), 1);
+
+    OnCaseStatisticChangedFired = false;
+    QCOMPARE(model->GetCasesByStatus(EStatusCrashed).size(), 0);
+    model->AddCaseByStatus(EStatusCrashed,aCase);    
+    QCOMPARE(OnCaseStatisticChangedFired, true);
+    QCOMPARE(model->GetCasesByStatus(EStatusCrashed).size(), 1);
+    
+    model->ClearCasesStatus();
+    
+    }
+
+void testcontroller::T_RunCase()
+    {
+    model->ClearCasesStatus();
+    OnCaseStatisticChangedFired = false;
+    OnRunningCaseChangedFired = false;
+    controller->OpenEngineIniFile(KConfigFile1); 
+    QList<CSTFCase> caseList;
+    caseList.append(controller->GetCase(KDefaultModuleName,2));//math test
+    controller->RunCases(caseList, Sequentially);
+    QTest::qWait(2000);
+    QCOMPARE(OnCaseStatisticChangedFired, true);
+    QCOMPARE(model->GetCasesByStatus(EStatusRunning).size(), 0);
+    QCOMPARE(model->GetCasesByStatus(EStatusExecuted).size(), 1);
+    QCOMPARE(model->GetCasesByStatus(EStatusPassed).size(), 1);
+    
+    model->ClearCasesStatus();
+    }
+     
+     
+void testcontroller::T_RunSet()
+    {
+    model->ClearCasesStatus();
+    //controller->OpenEngineIniFile(KConfigFile1); 
+    QList<QString> list = controller->GetCaseListBySet(KDefaultSetName);    
+    QCOMPARE(list.size(),5);
+    controller->RunSets(KDefaultSetName,Parallel);
+    QTest::qWait(20000);
+    QCOMPARE(model->GetCasesByStatus(EStatusExecuted).size(), 5);
+    QCOMPARE(model->GetCasesByStatus(EStatusPassed).size(), 4);
+    QCOMPARE(model->GetCasesByStatus(EStatusFailed).size(), 0);
+    QCOMPARE(model->GetCasesByStatus(EStatusAborted).size(), 0);
+    QCOMPARE(model->GetCasesByStatus(EStatusCrashed).size(), 1);
+    model->ClearCasesStatus();    
+    }
+     
+     
+void testcontroller::T_PauseCase_ResumeCase()
+    {
+    model->ClearCasesStatus();
+    OnCaseStatisticChangedFired = false;
+    OnRunningCaseChangedFired = false;
+    controller->OpenEngineIniFile(KConfigFile1); 
+    QList<CSTFCase> caseList;
+    caseList.append(controller->GetCase(KDefaultModuleName,0));  //loop test
+    controller->RunCases(caseList, Sequentially);
+    QTest::qWait(500);
+    QCOMPARE(OnRunningCaseChangedFired, true);
+    QCOMPARE(model->GetCasesByStatus(EStatusRunning).size(), 1);
+    QCOMPARE(model->GetCasesByStatus(EStatusExecuted).size(), 0);
+    controller->PauseCase();
+    QTest::qWait(15000);
+    QCOMPARE(model->GetCasesByStatus(EStatusRunning).size(), 1);
+    controller->ResumeCase();
+    QTest::qWait(15000);
+    QCOMPARE(OnCaseStatisticChangedFired, true);
+    QCOMPARE(model->GetCasesByStatus(EStatusRunning).size(), 0);
+    QCOMPARE(model->GetCasesByStatus(EStatusExecuted).size(), 1);
+    QCOMPARE(model->GetCasesByStatus(EStatusPassed).size(), 1);
+    
+    }
+     
+void testcontroller::T_AbortCase()
+    {
+    model->ClearCasesStatus();
+    OnCaseStatisticChangedFired = false;
+    OnRunningCaseChangedFired = false;
+    controller->OpenEngineIniFile(KConfigFile1); 
+    QList<CSTFCase> caseList;
+    caseList.append(controller->GetCase(KDefaultModuleName,0));  //loop test
+    controller->RunCases(caseList, Sequentially);
+    QTest::qWait(500);
+    QCOMPARE(OnRunningCaseChangedFired, true);
+    QCOMPARE(model->GetCasesByStatus(EStatusRunning).size(), 1);
+    QCOMPARE(model->GetCasesByStatus(EStatusExecuted).size(), 0);
+    controller->AbortCase();
+    QTest::qWait(1000);
+    QCOMPARE(OnCaseStatisticChangedFired, true);
+    QCOMPARE(model->GetCasesByStatus(EStatusRunning).size(), 0);
+    QCOMPARE(model->GetCasesByStatus(EStatusExecuted).size(), 0);
+    QCOMPARE(model->GetCasesByStatus(EStatusAborted).size(), 1);
+    }
+
+
+//===========================================================
+void testcontroller::OnSetListChanged()
+    {
+    OnSetListChangedFired = true;
+    }
+
+void testcontroller::OnCaseStatisticChanged()
+    {
+    OnCaseStatisticChangedFired = true;
+    }
+
+void testcontroller::OnRunningCaseChanged()
+    {
+    OnRunningCaseChangedFired = true;
+    }
+
+void testcontroller::OnGetMessage(const QString& /*aMessage*/)
+    {
+    //nothing.
+    }
+
+void testcontroller::OnCaseOutputChanged(const CaseOutputCommand& /*cmd*/,
+        const QString& , const QString&)
+    {}
+