예제 #1
0
void TestListView::updateItemForResults(QTreeWidgetItem*item) {

    Q_ASSERT_X(item, Q_FUNC_INFO, "null item");
    const QVariant itemData = item->data(0, Qt::UserRole);

    // TestProgram
    if ( itemData.canConvert<TestProgram*>() ) {
        TestProgram* program = itemData.value<TestProgram*>();
        if ( !program->hasRunTests() )
            item->setBackgroundColor(0, m_noResultColor);
        else {
            if ( program->hasFailedTests() )
                item->setBackgroundColor(0, m_failColor);
            else
                item->setBackgroundColor(0, m_passColor);
        }
    }

    // TestSuite
    else if ( itemData.canConvert<TestSuite*>() ) {
        TestSuite* suite = itemData.value<TestSuite*>();
        if ( !suite->hasRunTests() )
            item->setBackgroundColor(0, m_noResultColor);
        else {
            if ( suite->hasFailedTests() )
                item->setBackgroundColor(0, m_failColor);
            else
                item->setBackgroundColor(0, m_passColor);
        }
    }

    // TestCase
    else if ( itemData.canConvert<TestCase*>() ) {
        TestCase* test = itemData.value<TestCase*>();
        if ( !test->wasRun() )
            item->setBackgroundColor(0, m_noResultColor);
        else {
            if ( !test->passed() )
                item->setBackgroundColor(0, m_failColor);
            else
                item->setBackgroundColor(0, m_passColor);
        }
    }
}