From a90f50942e5304e6bf1c8a3e32f1f65c7a38f60b Mon Sep 17 00:00:00 2001 From: Jo Asplin Date: Wed, 31 Aug 2011 17:11:06 +0200 Subject: Moved gui autotests into new directory structure Task-number: QTBUG-21133 Change-Id: I83b8f652935cf92151265ca2530a3cf81c31fdef Reviewed-on: http://codereview.qt.nokia.com/3996 Reviewed-by: Qt Sanity Bot Reviewed-by: Jo Asplin --- tests/auto/qtexttable/tst_qtexttable.cpp | 1004 ------------------------------ 1 file changed, 1004 deletions(-) delete mode 100644 tests/auto/qtexttable/tst_qtexttable.cpp (limited to 'tests/auto/qtexttable/tst_qtexttable.cpp') diff --git a/tests/auto/qtexttable/tst_qtexttable.cpp b/tests/auto/qtexttable/tst_qtexttable.cpp deleted file mode 100644 index 83343811d8..0000000000 --- a/tests/auto/qtexttable/tst_qtexttable.cpp +++ /dev/null @@ -1,1004 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -#include - - -#include -#include -#include -#include -#include -#include -#include - -//TESTED_FILES= - -typedef QList IntList; -Q_DECLARE_METATYPE(IntList) - -QT_FORWARD_DECLARE_CLASS(QTextDocument) - -class tst_QTextTable : public QObject -{ - Q_OBJECT - -public: - tst_QTextTable(); - - -public slots: - void init(); - void cleanup(); -private slots: - void cursorPositioning(); - void variousTableModifications(); - void tableShrinking(); - void spans(); - void variousModifications2(); - void tableManager_undo(); - void tableManager_removeCell(); - void rowAt(); - void rowAtWithSpans(); - void multiBlockCells(); - void insertRows(); - void deleteInTable(); - void mergeCells(); - void mergeAndInsert(); - void splitCells(); - void blocksForTableShouldHaveEmptyFormat(); - void removeTableByRemoveRows(); - void removeTableByRemoveColumns(); - void setCellFormat(); - void removeRows1(); - void removeRows2(); - void removeRows3(); - void removeRows4(); - void removeRows5(); - void removeColumns1(); - void removeColumns2(); - void removeColumns3(); - void removeColumns4(); - void removeColumns5(); - void removeColumnsInTableWithMergedRows(); - void QTBUG11282_insertBeforeMergedEnding_data(); - void QTBUG11282_insertBeforeMergedEnding(); - -private: - QTextTable *create2x2Table(); - QTextTable *create4x4Table(); - - QTextTable *createTable(int rows, int cols); - - QTextDocument *doc; - QTextCursor cursor; -}; - -tst_QTextTable::tst_QTextTable() -{} - -void tst_QTextTable::init() -{ - doc = new QTextDocument; - cursor = QTextCursor(doc); -} - -void tst_QTextTable::cleanup() -{ - cursor = QTextCursor(); - delete doc; - doc = 0; -} - -void tst_QTextTable::cursorPositioning() -{ - // ensure the cursor is placed at the beginning of the first cell upon - // table creation - QTextTable *table = cursor.insertTable(2, 2); - - QVERIFY(cursor == table->cellAt(0, 0).firstCursorPosition()); - QVERIFY(table->cellAt(0, 0).firstPosition() == table->firstPosition()); -} - -void tst_QTextTable::variousTableModifications() -{ - QTextTableFormat tableFmt; - - QTextTable *tab = cursor.insertTable(2, 2, tableFmt); - QVERIFY(doc->toPlainText().length() == 5); - QVERIFY(tab == cursor.currentTable()); - QVERIFY(tab->columns() == 2); - QVERIFY(tab->rows() == 2); - - QVERIFY(cursor.position() == 1); - QTextCharFormat fmt = cursor.charFormat(); - QVERIFY(fmt.objectIndex() == -1); - QTextTableCell cell = tab->cellAt(cursor); - QVERIFY(cell.isValid()); - QVERIFY(cell.row() == 0); - QVERIFY(cell.column() == 0); - - cursor.movePosition(QTextCursor::NextBlock); - QVERIFY(cursor.position() == 2); - fmt = cursor.charFormat(); - QVERIFY(fmt.objectIndex() == -1); - cell = tab->cellAt(cursor); - QVERIFY(cell.isValid()); - QVERIFY(cell.row() == 0); - QVERIFY(cell.column() == 1); - - cursor.movePosition(QTextCursor::NextBlock); - QVERIFY(cursor.position() == 3); - fmt = cursor.charFormat(); - QVERIFY(fmt.objectIndex() == -1); - cell = tab->cellAt(cursor); - QVERIFY(cell.isValid()); - QVERIFY(cell.row() == 1); - QVERIFY(cell.column() == 0); - - cursor.movePosition(QTextCursor::NextBlock); - QVERIFY(cursor.position() == 4); - fmt = cursor.charFormat(); - QVERIFY(fmt.objectIndex() == -1); - cell = tab->cellAt(cursor); - QVERIFY(cell.isValid()); - QVERIFY(cell.row() == 1); - QVERIFY(cell.column() == 1); - - cursor.movePosition(QTextCursor::NextBlock); - QVERIFY(cursor.position() == 5); - fmt = cursor.charFormat(); - QVERIFY(fmt.objectIndex() == -1); - cell = tab->cellAt(cursor); - QVERIFY(!cell.isValid()); - - cursor.movePosition(QTextCursor::NextBlock); - QVERIFY(cursor.position() == 5); - - // check we can't delete the cells with the cursor - cursor.movePosition(QTextCursor::Start); - cursor.movePosition(QTextCursor::NextBlock); - QVERIFY(cursor.position() == 1); - cursor.deleteChar(); - QVERIFY(doc->toPlainText().length() == 5); - cursor.movePosition(QTextCursor::NextBlock); - QVERIFY(cursor.position() == 2); - cursor.deleteChar(); - QVERIFY(doc->toPlainText().length() == 5); - cursor.deletePreviousChar(); - QVERIFY(cursor.position() == 2); - QVERIFY(doc->toPlainText().length() == 5); - - QTextTable *table = cursor.currentTable(); - QVERIFY(table->rows() == 2); - QVERIFY(table->columns() == 2); - - table->insertRows(2, 1); - QVERIFY(table->rows() == 3); - QVERIFY(table->columns() == 2); - QVERIFY(doc->toPlainText().length() == 7); - table->insertColumns(2, 2); - QVERIFY(table->rows() == 3); - QVERIFY(table->columns() == 4); - QVERIFY(doc->toPlainText().length() == 13); - - table->resize(4, 5); - QVERIFY(table->rows() == 4); - QVERIFY(table->columns() == 5); - QVERIFY(doc->toPlainText().length() == 21); -} - -void tst_QTextTable::tableShrinking() -{ - QTextTableFormat tableFmt; - - cursor.insertTable(3, 4, tableFmt); - QVERIFY(doc->toPlainText().length() == 13); - - QTextTable *table = cursor.currentTable(); - QVERIFY(table->rows() == 3); - QVERIFY(table->columns() == 4); - - table->removeRows(1, 1); - QVERIFY(table->rows() == 2); - QVERIFY(table->columns() == 4); - QVERIFY(doc->toPlainText().length() == 9); - table->removeColumns(1, 2); - QVERIFY(table->rows() == 2); - QVERIFY(table->columns() == 2); - QVERIFY(doc->toPlainText().length() == 5); - - table->resize(1, 1); - QVERIFY(table->rows() == 1); - QVERIFY(table->columns() == 1); - QVERIFY(doc->toPlainText().length() == 2); -} - -void tst_QTextTable::spans() -{ - QTextTableFormat tableFmt; - - cursor.insertTable(2, 2, tableFmt); - - QTextTable *table = cursor.currentTable(); - QVERIFY(table->cellAt(0, 0) != table->cellAt(0, 1)); - table->mergeCells(0, 0, 1, 2); - QVERIFY(table->rows() == 2); - QVERIFY(table->columns() == 2); - QVERIFY(table->cellAt(0, 0) == table->cellAt(0, 1)); - table->mergeCells(0, 0, 2, 2); - QVERIFY(table->rows() == 2); - QVERIFY(table->columns() == 2); -} - -void tst_QTextTable::variousModifications2() -{ - QTextTableFormat tableFmt; - - cursor.insertTable(2, 5, tableFmt); - QVERIFY(doc->toPlainText().length() == 11); - QTextTable *table = cursor.currentTable(); - QVERIFY(cursor.position() == 1); - QVERIFY(table->rows() == 2); - QVERIFY(table->columns() == 5); - - table->insertColumns(0, 1); - QVERIFY(table->rows() == 2); - QVERIFY(table->columns() == 6); - table->insertColumns(6, 1); - QVERIFY(table->rows() == 2); - QVERIFY(table->columns() == 7); - - table->insertRows(0, 1); - QVERIFY(table->rows() == 3); - QVERIFY(table->columns() == 7); - table->insertRows(3, 1); - QVERIFY(table->rows() == 4); - QVERIFY(table->columns() == 7); - - table->removeRows(0, 1); - QVERIFY(table->rows() == 3); - QVERIFY(table->columns() == 7); - table->removeRows(2, 1); - QVERIFY(table->rows() == 2); - QVERIFY(table->columns() == 7); - - table->removeColumns(0, 1); - QVERIFY(table->rows() == 2); - QVERIFY(table->columns() == 6); - table->removeColumns(5, 1); - QVERIFY(table->rows() == 2); - QVERIFY(table->columns() == 5); - - tableFmt = table->format(); - table->insertColumns(2, 1); - table->setFormat(tableFmt); - table->insertColumns(2, 1); - QVERIFY(table->columns() == 7); -} - -void tst_QTextTable::tableManager_undo() -{ - QTextTableFormat fmt; - fmt.setBorder(10); - QTextTable *table = cursor.insertTable(2, 2, fmt); - QVERIFY(table); - - QVERIFY(table->format().border() == 10); - - fmt.setBorder(20); - table->setFormat(fmt); - - QVERIFY(table->format().border() == 20); - - doc->undo(); - - QVERIFY(table->format().border() == 10); -} - -void tst_QTextTable::tableManager_removeCell() -{ - // essentially a test for TableManager::removeCell, in particular to remove empty items from the rowlist. - // If it fails it'll triger assertions inside TableManager. Yeah, not pretty, should VERIFY here ;( - cursor.insertTable(2, 2, QTextTableFormat()); - doc->undo(); - // ### - QVERIFY(true); -} - -void tst_QTextTable::rowAt() -{ - // test TablePrivate::rowAt - QTextTable *table = cursor.insertTable(4, 2); - - QCOMPARE(table->rows(), 4); - QCOMPARE(table->columns(), 2); - - QTextCursor cell00Cursor = table->cellAt(0, 0).firstCursorPosition(); - QTextCursor cell10Cursor = table->cellAt(1, 0).firstCursorPosition(); - QTextCursor cell20Cursor = table->cellAt(2, 0).firstCursorPosition(); - QTextCursor cell21Cursor = table->cellAt(2, 1).firstCursorPosition(); - QTextCursor cell30Cursor = table->cellAt(3, 0).firstCursorPosition(); - QVERIFY(table->cellAt(cell00Cursor).firstCursorPosition() == cell00Cursor); - QVERIFY(table->cellAt(cell10Cursor).firstCursorPosition() == cell10Cursor); - QVERIFY(table->cellAt(cell20Cursor).firstCursorPosition() == cell20Cursor); - QVERIFY(table->cellAt(cell30Cursor).firstCursorPosition() == cell30Cursor); - - table->mergeCells(1, 0, 2, 1); - - QCOMPARE(table->rows(), 4); - QCOMPARE(table->columns(), 2); - - QVERIFY(cell00Cursor == table->cellAt(0, 0).firstCursorPosition()); - QVERIFY(cell10Cursor == table->cellAt(1, 0).firstCursorPosition()); - QVERIFY(cell10Cursor == table->cellAt(2, 0).firstCursorPosition()); - QVERIFY(cell21Cursor == table->cellAt(2, 1).firstCursorPosition()); - QVERIFY(cell30Cursor == table->cellAt(3, 0).firstCursorPosition()); - - table->mergeCells(1, 0, 2, 2); - - QCOMPARE(table->rows(), 4); - QCOMPARE(table->columns(), 2); - - QVERIFY(cell00Cursor == table->cellAt(0, 0).firstCursorPosition()); - QVERIFY(cell00Cursor == table->cellAt(0, 0).firstCursorPosition()); - QVERIFY(cell10Cursor == table->cellAt(1, 0).firstCursorPosition()); - QVERIFY(cell10Cursor == table->cellAt(1, 1).firstCursorPosition()); - QVERIFY(cell10Cursor == table->cellAt(2, 0).firstCursorPosition()); - QVERIFY(cell10Cursor == table->cellAt(2, 1).firstCursorPosition()); - QVERIFY(cell30Cursor == table->cellAt(3, 0).firstCursorPosition()); -} - -void tst_QTextTable::rowAtWithSpans() -{ - QTextTable *table = cursor.insertTable(2, 2); - - QCOMPARE(table->rows(), 2); - QCOMPARE(table->columns(), 2); - - table->mergeCells(0, 0, 2, 1); - QVERIFY(table->cellAt(0, 0).rowSpan() == 2); - - QCOMPARE(table->rows(), 2); - QCOMPARE(table->columns(), 2); - - table->mergeCells(0, 0, 2, 2); - QVERIFY(table->cellAt(0, 0).columnSpan() == 2); - - QCOMPARE(table->rows(), 2); - QCOMPARE(table->columns(), 2); -} - -void tst_QTextTable::multiBlockCells() -{ - // little testcase for multi-block cells - QTextTable *table = cursor.insertTable(2, 2); - - QVERIFY(cursor == table->cellAt(0, 0).firstCursorPosition()); - - cursor.insertText("Hello"); - cursor.insertBlock(QTextBlockFormat()); - cursor.insertText("World"); - - cursor.movePosition(QTextCursor::Left); - QVERIFY(table->cellAt(0, 0) == table->cellAt(cursor)); -} - -void tst_QTextTable::insertRows() -{ - // little testcase for multi-block cells - QTextTable *table = cursor.insertTable(2, 2); - - QVERIFY(cursor == table->cellAt(0, 0).firstCursorPosition()); - - table->insertRows(0, 1); - QVERIFY(table->rows() == 3); - - table->insertRows(1, 1); - QVERIFY(table->rows() == 4); - - table->insertRows(-1, 1); - QVERIFY(table->rows() == 5); - - table->insertRows(5, 2); - QVERIFY(table->rows() == 7); - -} - -void tst_QTextTable::deleteInTable() -{ - QTextTable *table = cursor.insertTable(2, 2); - table->cellAt(0, 0).firstCursorPosition().insertText("Blah"); - table->cellAt(0, 1).firstCursorPosition().insertText("Foo"); - table->cellAt(1, 0).firstCursorPosition().insertText("Bar"); - table->cellAt(1, 1).firstCursorPosition().insertText("Hah"); - - cursor = table->cellAt(1, 1).firstCursorPosition(); - cursor.movePosition(QTextCursor::PreviousBlock, QTextCursor::KeepAnchor); - - QCOMPARE(table->cellAt(cursor.position()).row(), 1); - QCOMPARE(table->cellAt(cursor.position()).column(), 0); - - cursor.removeSelectedText(); - - QCOMPARE(table->columns(), 2); - QCOMPARE(table->rows(), 2); - - // verify table is still all in shape. Only the text inside should get deleted - for (int row = 0; row < table->rows(); ++row) - for (int col = 0; col < table->columns(); ++col) { - const QTextTableCell cell = table->cellAt(row, col); - QVERIFY(cell.isValid()); - QCOMPARE(cell.rowSpan(), 1); - QCOMPARE(cell.columnSpan(), 1); - } -} - -QTextTable *tst_QTextTable::create2x2Table() -{ - cleanup(); - init(); - QTextTable *table = cursor.insertTable(2, 2); - table->cellAt(0, 0).firstCursorPosition().insertText("Blah"); - table->cellAt(0, 1).firstCursorPosition().insertText("Foo"); - table->cellAt(1, 0).firstCursorPosition().insertText("Bar"); - table->cellAt(1, 1).firstCursorPosition().insertText("Hah"); - return table; -} - -QTextTable *tst_QTextTable::create4x4Table() -{ - cleanup(); - init(); - QTextTable *table = cursor.insertTable(4, 4); - table->cellAt(0, 0).firstCursorPosition().insertText("Blah"); - table->cellAt(0, 1).firstCursorPosition().insertText("Foo"); - table->cellAt(1, 0).firstCursorPosition().insertText("Bar"); - table->cellAt(1, 1).firstCursorPosition().insertText("Hah"); - return table; -} - -QTextTable *tst_QTextTable::createTable(int rows, int cols) -{ - cleanup(); - init(); - QTextTable *table = cursor.insertTable(rows, cols); - return table; -} - -void tst_QTextTable::mergeCells() -{ - QTextTable *table = create4x4Table(); - - table->mergeCells(1, 1, 1, 2); - QVERIFY(table->cellAt(1, 1) == table->cellAt(1, 2)); - - table->mergeCells(1, 1, 2, 2); - QVERIFY(table->cellAt(1, 1) == table->cellAt(1, 2)); - QVERIFY(table->cellAt(1, 1) == table->cellAt(2, 1)); - QVERIFY(table->cellAt(1, 1) == table->cellAt(2, 2)); - - table = create4x4Table(); - - table->mergeCells(1, 1, 2, 1); - QVERIFY(table->cellAt(1, 1) == table->cellAt(2, 1)); - - table->mergeCells(1, 1, 2, 2); - QVERIFY(table->cellAt(1, 1) == table->cellAt(1, 2)); - QVERIFY(table->cellAt(1, 1) == table->cellAt(2, 1)); - QVERIFY(table->cellAt(1, 1) == table->cellAt(2, 2)); - - table = create4x4Table(); - - table->mergeCells(1, 1, 2, 2); - QVERIFY(table->cellAt(1, 1) == table->cellAt(1, 2)); - QVERIFY(table->cellAt(1, 1) == table->cellAt(2, 1)); - QVERIFY(table->cellAt(1, 1) == table->cellAt(2, 2)); - - // should do nothing - table->mergeCells(1, 1, 1, 1); - QVERIFY(table->cellAt(1, 1) == table->cellAt(1, 2)); - QVERIFY(table->cellAt(1, 1) == table->cellAt(2, 1)); - QVERIFY(table->cellAt(1, 1) == table->cellAt(2, 2)); - - table = create2x2Table(); - - table->mergeCells(0, 1, 2, 1); - table->mergeCells(0, 0, 2, 2); - QVERIFY(table->cellAt(0, 0) == table->cellAt(0, 1)); - QVERIFY(table->cellAt(0, 0) == table->cellAt(1, 0)); - QVERIFY(table->cellAt(0, 0) == table->cellAt(1, 1)); - - QTextBlock block = table->cellAt(0, 0).firstCursorPosition().block(); - - QVERIFY(block.text() == "Blah Foo"); - QVERIFY(block.next().text() == "Hah"); - QVERIFY(block.next().next().text() == "Bar"); - - table = create4x4Table(); - - QTextCursor cursor = table->cellAt(3, 3).firstCursorPosition(); - QTextTable *t2 = cursor.insertTable(2, 2); - t2->cellAt(0, 0).firstCursorPosition().insertText("Test"); - - table->mergeCells(2, 2, 2, 2); - cursor = table->cellAt(2, 2).firstCursorPosition(); - - QTextFrame *frame = cursor.currentFrame(); - - QTextFrame::iterator it = frame->begin(); - - // find the embedded table - while (it != frame->end() && !it.currentFrame()) - ++it; - - table = qobject_cast(it.currentFrame()); - - QVERIFY(table); - - if (table) { - cursor = table->cellAt(0, 0).firstCursorPosition(); - - QVERIFY(cursor.block().text() == "Test"); - } - - table = create2x2Table(); - - table->mergeCells(0, 1, 2, 1); - - QVERIFY(table->cellAt(0, 0) != table->cellAt(0, 1)); - QVERIFY(table->cellAt(0, 1) == table->cellAt(1, 1)); - - // should do nothing - table->mergeCells(0, 0, 1, 2); - - QVERIFY(table->cellAt(0, 0) != table->cellAt(0, 1)); - QVERIFY(table->cellAt(0, 1) == table->cellAt(1, 1)); -} - -void tst_QTextTable::mergeAndInsert() -{ - QTextTable *table = cursor.insertTable(4,3); - table->mergeCells(0,1,3,2); - table->mergeCells(3,0,1,3); - //Don't crash ! - table->insertColumns(1,2); - QCOMPARE(table->columns(), 5); -} - -void tst_QTextTable::splitCells() -{ - QTextTable *table = create4x4Table(); - table->mergeCells(1, 1, 2, 2); - QVERIFY(table->cellAt(1, 1) == table->cellAt(1, 2)); - QVERIFY(table->cellAt(1, 1) == table->cellAt(2, 1)); - QVERIFY(table->cellAt(1, 1) == table->cellAt(2, 2)); - - table->splitCell(1, 1, 1, 2); - QVERIFY(table->cellAt(1, 1) == table->cellAt(1, 2)); - QVERIFY(table->cellAt(1, 1) != table->cellAt(2, 1)); - QVERIFY(table->cellAt(1, 1) != table->cellAt(2, 2)); - - table->splitCell(1, 1, 1, 1); - QVERIFY(table->cellAt(1, 1) != table->cellAt(1, 2)); - QVERIFY(table->cellAt(1, 1) != table->cellAt(2, 1)); - QVERIFY(table->cellAt(1, 1) != table->cellAt(2, 2)); - - - table = create4x4Table(); - table->mergeCells(1, 1, 2, 2); - QVERIFY(table->cellAt(1, 1) == table->cellAt(1, 2)); - QVERIFY(table->cellAt(1, 1) == table->cellAt(2, 1)); - QVERIFY(table->cellAt(1, 1) == table->cellAt(2, 2)); - - table->splitCell(1, 1, 2, 1); - QVERIFY(table->cellAt(1, 1) == table->cellAt(2, 1)); - QVERIFY(table->cellAt(1, 1) != table->cellAt(1, 2)); - QVERIFY(table->cellAt(1, 1) != table->cellAt(2, 2)); - - table->splitCell(1, 1, 1, 1); - QVERIFY(table->cellAt(1, 1) != table->cellAt(1, 2)); - QVERIFY(table->cellAt(1, 1) != table->cellAt(2, 1)); - QVERIFY(table->cellAt(1, 1) != table->cellAt(2, 2)); - - - table = create4x4Table(); - table->mergeCells(1, 1, 2, 2); - QVERIFY(table->cellAt(1, 1) == table->cellAt(1, 2)); - QVERIFY(table->cellAt(1, 1) == table->cellAt(2, 1)); - QVERIFY(table->cellAt(1, 1) == table->cellAt(2, 2)); - - table->splitCell(1, 1, 1, 1); - QVERIFY(table->cellAt(1, 1) != table->cellAt(1, 2)); - QVERIFY(table->cellAt(1, 1) != table->cellAt(2, 1)); - QVERIFY(table->cellAt(1, 1) != table->cellAt(2, 2)); - - table = createTable(2, 5); - table->mergeCells(0, 0, 2, 1); - table->mergeCells(0, 1, 2, 1); - QVERIFY(table->cellAt(0, 0) == table->cellAt(1, 0)); - QVERIFY(table->cellAt(0, 1) == table->cellAt(1, 1)); - table->splitCell(0, 0, 1, 1); - QVERIFY(table->cellAt(0, 0) != table->cellAt(1, 0)); - QVERIFY(table->cellAt(0, 1) == table->cellAt(1, 1)); - - table = createTable(2, 5); - table->mergeCells(0, 4, 2, 1); - QVERIFY(table->cellAt(0, 4) == table->cellAt(1, 4)); - - table->splitCell(0, 4, 1, 1); - QVERIFY(table->cellAt(0, 4) != table->cellAt(1, 4)); -} - -void tst_QTextTable::blocksForTableShouldHaveEmptyFormat() -{ - QTextBlockFormat fmt; - fmt.setProperty(QTextFormat::UserProperty, true); - cursor.insertBlock(fmt); - QVERIFY(cursor.blockFormat().hasProperty(QTextFormat::UserProperty)); - - QTextTable *table = cursor.insertTable(1, 1); - QVERIFY(!table->cellAt(0, 0).firstCursorPosition().blockFormat().hasProperty(QTextFormat::UserProperty)); - - int userPropCount = 0; - for (QTextBlock block = doc->begin(); - block.isValid(); block = block.next()) { - if (block.blockFormat().hasProperty(QTextFormat::UserProperty)) - userPropCount++; - } - QCOMPARE(userPropCount, 1); -} - -void tst_QTextTable::removeTableByRemoveRows() -{ - QPointer table1 = QTextCursor(cursor).insertTable(4, 4); - QPointer table2 = QTextCursor(cursor).insertTable(4, 4); - QPointer table3 = QTextCursor(cursor).insertTable(4, 4); - - QVERIFY(table1); - QVERIFY(table2); - QVERIFY(table3); - - table2->removeRows(1, 1); - - QVERIFY(table1); - QVERIFY(table2); - QVERIFY(table3); - - table2->removeRows(0, table2->rows()); - - QVERIFY(table1); - QVERIFY(!table2); - QVERIFY(table3); -} - -void tst_QTextTable::removeTableByRemoveColumns() -{ - QPointer table1 = QTextCursor(cursor).insertTable(4, 4); - QPointer table2 = QTextCursor(cursor).insertTable(4, 4); - QPointer table3 = QTextCursor(cursor).insertTable(4, 4); - - QVERIFY(table1); - QVERIFY(table2); - QVERIFY(table3); - - table2->removeColumns(1, 1); - - QVERIFY(table1); - QVERIFY(table2); - QVERIFY(table3); - - table2->removeColumns(0, table2->columns()); - - QVERIFY(table1); - QVERIFY(!table2); - QVERIFY(table3); -} - -void tst_QTextTable::setCellFormat() -{ - QTextTable *table = cursor.insertTable(2, 2); - table->cellAt(0, 0).firstCursorPosition().insertText("First"); - table->cellAt(0, 1).firstCursorPosition().insertText("Second"); - table->cellAt(1, 0).firstCursorPosition().insertText("Third"); - table->cellAt(1, 1).firstCursorPosition().insertText("Fourth"); - QTextTableCell cell = table->cellAt(0, 0); - QTextCharFormat fmt; - fmt.setObjectIndex(23); - fmt.setBackground(Qt::blue); - fmt.setTableCellColumnSpan(25); - fmt.setTableCellRowSpan(42); - cell.setFormat(fmt); - QVERIFY(cell.format().background().color() == QColor(Qt::blue)); - QCOMPARE(cell.format().tableCellColumnSpan(), 1); - QCOMPARE(cell.format().tableCellRowSpan(), 1); -} - -void tst_QTextTable::removeRows1() -{ - QTextTable *table = cursor.insertTable(2, 2); - table->cellAt(0, 0).firstCursorPosition().insertText("First"); - table->cellAt(0, 1).firstCursorPosition().insertText("Second"); - table->cellAt(1, 0).firstCursorPosition().insertText("Third"); - table->cellAt(1, 1).firstCursorPosition().insertText("Fourth"); - table->removeRows(0, 1); - QCOMPARE(table->rows(), 1); - QCOMPARE(table->columns(), 2); - QCOMPARE(table->cellAt(0, 0).firstCursorPosition().block().text(), QString("Third")); - QCOMPARE(table->cellAt(0, 1).firstCursorPosition().block().text(), QString("Fourth")); -} - -void tst_QTextTable::removeRows2() -{ - QTextTable *table = cursor.insertTable(2, 2); - table->cellAt(0, 0).firstCursorPosition().insertText("First"); - table->cellAt(0, 1).firstCursorPosition().insertText("Second"); - table->cellAt(1, 0).firstCursorPosition().insertText("Third"); - table->cellAt(1, 1).firstCursorPosition().insertText("Fourth"); - table->removeRows(1, 1); - QCOMPARE(table->rows(), 1); - QCOMPARE(table->columns(), 2); - QCOMPARE(table->cellAt(0, 0).firstCursorPosition().block().text(), QString("First")); - QCOMPARE(table->cellAt(0, 1).firstCursorPosition().block().text(), QString("Second")); -} - -void tst_QTextTable::removeRows3() -{ - QTextTable *table = cursor.insertTable(3, 2); - table->cellAt(0, 0).firstCursorPosition().insertText("First"); - table->cellAt(0, 1).firstCursorPosition().insertText("Second"); - table->cellAt(1, 0).firstCursorPosition().insertText("Third"); - table->cellAt(1, 1).firstCursorPosition().insertText("Fourth"); - table->cellAt(2, 0).firstCursorPosition().insertText("Fifth"); - table->cellAt(2, 1).firstCursorPosition().insertText("Sixth"); - table->removeRows(1, 1); - QCOMPARE(table->rows(), 2); - QCOMPARE(table->columns(), 2); - QCOMPARE(table->cellAt(0, 0).firstCursorPosition().block().text(), QString("First")); - QCOMPARE(table->cellAt(0, 1).firstCursorPosition().block().text(), QString("Second")); - QCOMPARE(table->cellAt(1, 0).firstCursorPosition().block().text(), QString("Fifth")); - QCOMPARE(table->cellAt(1, 1).firstCursorPosition().block().text(), QString("Sixth")); -} - -void tst_QTextTable::removeRows4() -{ - QTextTable *table = cursor.insertTable(4, 2); - table->cellAt(0, 0).firstCursorPosition().insertText("First"); - table->cellAt(0, 1).firstCursorPosition().insertText("Second"); - table->cellAt(1, 0).firstCursorPosition().insertText("Third"); - table->cellAt(1, 1).firstCursorPosition().insertText("Fourth"); - table->cellAt(2, 0).firstCursorPosition().insertText("Fifth"); - table->cellAt(2, 1).firstCursorPosition().insertText("Sixth"); - table->cellAt(3, 0).firstCursorPosition().insertText("Seventh"); - table->cellAt(3, 1).firstCursorPosition().insertText("Eighth"); - table->removeRows(1, 2); - QCOMPARE(table->rows(), 2); - QCOMPARE(table->columns(), 2); - QCOMPARE(table->cellAt(0, 0).firstCursorPosition().block().text(), QString("First")); - QCOMPARE(table->cellAt(0, 1).firstCursorPosition().block().text(), QString("Second")); - QCOMPARE(table->cellAt(1, 0).firstCursorPosition().block().text(), QString("Seventh")); - QCOMPARE(table->cellAt(1, 1).firstCursorPosition().block().text(), QString("Eighth")); -} - -void tst_QTextTable::removeRows5() -{ - QTextTable *table = cursor.insertTable(2,2); - table->cellAt(0, 0).firstCursorPosition().insertText("First"); - table->cellAt(0, 1).firstCursorPosition().insertText("Second"); - table->cellAt(1, 0).firstCursorPosition().insertText("Third"); - table->cellAt(1, 1).firstCursorPosition().insertText("Fourth"); - table->insertRows(1,1); - table->mergeCells(1,0,1,2); - table->removeRows(1,1); - QCOMPARE(table->rows(), 2); - QCOMPARE(table->columns(), 2); - QCOMPARE(table->cellAt(0, 0).firstCursorPosition().block().text(), QString("First")); - QCOMPARE(table->cellAt(0, 1).firstCursorPosition().block().text(), QString("Second")); - QCOMPARE(table->cellAt(1, 0).firstCursorPosition().block().text(), QString("Third")); - QCOMPARE(table->cellAt(1, 1).firstCursorPosition().block().text(), QString("Fourth")); -} - -void tst_QTextTable::removeColumns1() -{ - QTextTable *table = cursor.insertTable(2, 2); - table->cellAt(0, 0).firstCursorPosition().insertText("First"); - table->cellAt(0, 1).firstCursorPosition().insertText("Second"); - table->cellAt(1, 0).firstCursorPosition().insertText("Third"); - table->cellAt(1, 1).firstCursorPosition().insertText("Fourth"); - table->removeColumns(0, 1); - QCOMPARE(table->rows(), 2); - QCOMPARE(table->columns(), 1); - QCOMPARE(table->cellAt(0, 0).firstCursorPosition().block().text(), QString("Second")); - QCOMPARE(table->cellAt(1, 0).firstCursorPosition().block().text(), QString("Fourth")); -} - -void tst_QTextTable::removeColumns2() -{ - QTextTable *table = cursor.insertTable(2, 2); - table->cellAt(0, 0).firstCursorPosition().insertText("First"); - table->cellAt(0, 1).firstCursorPosition().insertText("Second"); - table->cellAt(1, 0).firstCursorPosition().insertText("Third"); - table->cellAt(1, 1).firstCursorPosition().insertText("Fourth"); - table->removeColumns(1, 1); - QCOMPARE(table->rows(), 2); - QCOMPARE(table->columns(), 1); - QCOMPARE(table->cellAt(0, 0).firstCursorPosition().block().text(), QString("First")); - QCOMPARE(table->cellAt(1, 0).firstCursorPosition().block().text(), QString("Third")); -} - -void tst_QTextTable::removeColumns3() -{ - QTextTable *table = cursor.insertTable(2, 3); - table->cellAt(0, 0).firstCursorPosition().insertText("First"); - table->cellAt(0, 1).firstCursorPosition().insertText("Second"); - table->cellAt(0, 2).firstCursorPosition().insertText("Third"); - table->cellAt(1, 0).firstCursorPosition().insertText("Fourth"); - table->cellAt(1, 1).firstCursorPosition().insertText("Fifth"); - table->cellAt(1, 2).firstCursorPosition().insertText("Sixth"); - table->removeColumns(1, 1); - QCOMPARE(table->rows(), 2); - QCOMPARE(table->columns(), 2); - QCOMPARE(table->cellAt(0, 0).firstCursorPosition().block().text(), QString("First")); - QCOMPARE(table->cellAt(0, 1).firstCursorPosition().block().text(), QString("Third")); - QCOMPARE(table->cellAt(1, 0).firstCursorPosition().block().text(), QString("Fourth")); - QCOMPARE(table->cellAt(1, 1).firstCursorPosition().block().text(), QString("Sixth")); -} - -void tst_QTextTable::removeColumns4() -{ - QTextTable *table = cursor.insertTable(2, 4); - table->cellAt(0, 0).firstCursorPosition().insertText("First"); - table->cellAt(0, 1).firstCursorPosition().insertText("Second"); - table->cellAt(0, 2).firstCursorPosition().insertText("Third"); - table->cellAt(0, 3).firstCursorPosition().insertText("Fourth"); - table->cellAt(1, 0).firstCursorPosition().insertText("Fifth"); - table->cellAt(1, 1).firstCursorPosition().insertText("Sixth"); - table->cellAt(1, 2).firstCursorPosition().insertText("Seventh"); - table->cellAt(1, 3).firstCursorPosition().insertText("Eighth"); - table->removeColumns(1, 2); - QCOMPARE(table->rows(), 2); - QCOMPARE(table->columns(), 2); - QCOMPARE(table->cellAt(0, 0).firstCursorPosition().block().text(), QString("First")); - QCOMPARE(table->cellAt(0, 1).firstCursorPosition().block().text(), QString("Fourth")); - QCOMPARE(table->cellAt(1, 0).firstCursorPosition().block().text(), QString("Fifth")); - QCOMPARE(table->cellAt(1, 1).firstCursorPosition().block().text(), QString("Eighth")); -} - -void tst_QTextTable::removeColumns5() -{ - QTextTable *table = cursor.insertTable(4, 4); - QTextCursor tc (doc); - tc.setPosition(table->cellAt(2,0).firstPosition()); - tc.setPosition(table->cellAt(3,1).firstPosition(), QTextCursor::KeepAnchor); - table->mergeCells(tc); - QCOMPARE(table->rows(), 4); - QCOMPARE(table->columns(), 4); - QCOMPARE(table->cellAt(0, 0).firstPosition(), 1); - QCOMPARE(table->cellAt(0, 1).firstPosition(), 2); - QCOMPARE(table->cellAt(0, 2).firstPosition(), 3); - QCOMPARE(table->cellAt(0, 3).firstPosition(), 4); - QCOMPARE(table->cellAt(1, 0).firstPosition(), 5); - QCOMPARE(table->cellAt(1, 1).firstPosition(), 6); - QCOMPARE(table->cellAt(1, 2).firstPosition(), 7); - QCOMPARE(table->cellAt(1, 3).firstPosition(), 8); - QCOMPARE(table->cellAt(2, 0).firstPosition(), 9); - QCOMPARE(table->cellAt(2, 0).rowSpan(), 2); - QCOMPARE(table->cellAt(2, 0).columnSpan(), 2); - QCOMPARE(table->cellAt(2, 1).firstPosition(), 9); - QCOMPARE(table->cellAt(2, 2).firstPosition(), 10); - QCOMPARE(table->cellAt(2, 3).firstPosition(), 11); - QCOMPARE(table->cellAt(3, 0).firstPosition(), 9); - QCOMPARE(table->cellAt(3, 1).firstPosition(), 9); - QCOMPARE(table->cellAt(3, 2).firstPosition(), 12); - QCOMPARE(table->cellAt(3, 3).firstPosition(), 13); - - table->removeColumns(1, 1); - QCOMPARE(table->rows(), 4); - QCOMPARE(table->columns(), 3); - QCOMPARE(table->cellAt(0, 0).firstPosition(), 1); - QCOMPARE(table->cellAt(0, 1).firstPosition(), 2); - QCOMPARE(table->cellAt(0, 2).firstPosition(), 3); - QCOMPARE(table->cellAt(1, 0).firstPosition(), 4); - QCOMPARE(table->cellAt(1, 1).firstPosition(), 5); - QCOMPARE(table->cellAt(1, 2).firstPosition(), 6); - QCOMPARE(table->cellAt(2, 0).firstPosition(), 7); - QCOMPARE(table->cellAt(2, 0).rowSpan(), 2); - QCOMPARE(table->cellAt(2, 0).columnSpan(), 1); - QCOMPARE(table->cellAt(2, 1).firstPosition(), 8); - QCOMPARE(table->cellAt(2, 2).firstPosition(), 9); - QCOMPARE(table->cellAt(3, 0).firstPosition(), 7); - QCOMPARE(table->cellAt(3, 1).firstPosition(), 10); - QCOMPARE(table->cellAt(3, 2).firstPosition(), 11); -} - -void tst_QTextTable::removeColumnsInTableWithMergedRows() -{ - QTextTable *table = cursor.insertTable(3, 4); - table->mergeCells(0, 0, 1, 4); - QCOMPARE(table->rows(), 3); - QCOMPARE(table->columns(), 4); - - table->removeColumns(0, table->columns() - 1); - - QCOMPARE(table->rows(), 3); - QCOMPARE(table->columns(), 1); -} - -void tst_QTextTable::QTBUG11282_insertBeforeMergedEnding_data() -{ - QTest::addColumn("rows"); - QTest::addColumn("columns"); - QTest::addColumn >("merge"); - QTest::addColumn >("insert"); - - QTest::newRow("2x3, merge two, insert one") << 2 << 3 << (QList() << 1 << 2 << 2) - << (QList() << 1 << 1) ; - QTest::newRow("3x4, merge three, insert one") << 3 << 4 << (QList() << 1 << 3 << 3) - << (QList() << 1 << 1) ; - QTest::newRow("4x3, merge two, insert two") << 4 << 3 << (QList() << 1 << 4 << 2) - << (QList() << 1 << 2) ; - QTest::newRow("4x4, merge middle two, insert one") << 4 << 4 << (QList() << 1 << 4 << 2) - << (QList() << 1 << 1) ; -} - -void tst_QTextTable::QTBUG11282_insertBeforeMergedEnding() -{ - QFETCH(int, rows); - QFETCH(int, columns); - QFETCH(QList, merge); - QFETCH(QList, insert); - QTextTable *table = cursor.insertTable(rows, columns); - QTextEdit *textEdit = new QTextEdit; - textEdit->setDocument(doc); - textEdit->show(); - QTest::qWaitForWindowShown(textEdit); - table->mergeCells(0,merge.at(0), merge.at(1), merge.at(2)); - //Don't crash ! - table->insertColumns(insert.at(0), insert.at(1)); - //Check that the final size is what we expected - QCOMPARE(table->rows(), rows); - QCOMPARE(table->columns(), columns + insert.at(1)); - delete textEdit; -} - -QTEST_MAIN(tst_QTextTable) -#include "tst_qtexttable.moc" -- cgit v1.2.3