summaryrefslogtreecommitdiffstats
path: root/tests/auto/qtexttable/tst_qtexttable.cpp
diff options
context:
space:
mode:
authorJo Asplin <jo.asplin@nokia.com>2011-08-31 17:11:06 +0200
committerJo Asplin <jo.asplin@nokia.com>2011-09-01 10:59:49 +0200
commita90f50942e5304e6bf1c8a3e32f1f65c7a38f60b (patch)
tree6ed9a3d0a0a3dd09a78593d89c000f29d3494b89 /tests/auto/qtexttable/tst_qtexttable.cpp
parenta863eb1c7bbd5d40a741151f811bd7c62cf51e2d (diff)
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 <qt_sanity_bot@ovi.com> Reviewed-by: Jo Asplin <jo.asplin@nokia.com>
Diffstat (limited to 'tests/auto/qtexttable/tst_qtexttable.cpp')
-rw-r--r--tests/auto/qtexttable/tst_qtexttable.cpp1004
1 files changed, 0 insertions, 1004 deletions
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 <QtTest/QtTest>
-
-
-#include <qtextdocument.h>
-#include <qtextdocumentfragment.h>
-#include <qtexttable.h>
-#include <qdebug.h>
-#include <qtextcursor.h>
-#include <qtextdocument.h>
-#include <qtextedit.h>
-
-//TESTED_FILES=
-
-typedef QList<int> 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<QTextTable *>(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<QTextTable> table1 = QTextCursor(cursor).insertTable(4, 4);
- QPointer<QTextTable> table2 = QTextCursor(cursor).insertTable(4, 4);
- QPointer<QTextTable> 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<QTextTable> table1 = QTextCursor(cursor).insertTable(4, 4);
- QPointer<QTextTable> table2 = QTextCursor(cursor).insertTable(4, 4);
- QPointer<QTextTable> 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<int>("rows");
- QTest::addColumn<int>("columns");
- QTest::addColumn<QList<int> >("merge");
- QTest::addColumn<QList<int> >("insert");
-
- QTest::newRow("2x3, merge two, insert one") << 2 << 3 << (QList<int>() << 1 << 2 << 2)
- << (QList<int>() << 1 << 1) ;
- QTest::newRow("3x4, merge three, insert one") << 3 << 4 << (QList<int>() << 1 << 3 << 3)
- << (QList<int>() << 1 << 1) ;
- QTest::newRow("4x3, merge two, insert two") << 4 << 3 << (QList<int>() << 1 << 4 << 2)
- << (QList<int>() << 1 << 2) ;
- QTest::newRow("4x4, merge middle two, insert one") << 4 << 4 << (QList<int>() << 1 << 4 << 2)
- << (QList<int>() << 1 << 1) ;
-}
-
-void tst_QTextTable::QTBUG11282_insertBeforeMergedEnding()
-{
- QFETCH(int, rows);
- QFETCH(int, columns);
- QFETCH(QList<int>, merge);
- QFETCH(QList<int>, 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"