1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
#ifndef TESTTABLELAYOUT_H
#define TESTTABLELAYOUT_H
#include <QObject>
#include <QHash>
#include <QList>
#include <QPoint>
#include <QString>
#include <qtest_kde.h>
#include "../Layout.h"
#include "../TextShape.h"
class MockTextShape;
class KoTextDocumentLayout;
class KoTableStyle;
class KoTableColumnStyle;
class KoTableRowStyle;
class KoTableCellStyle;
class KoStyleManager;
class KoTableColumnAndRowStyleManager;
class QTextDocument;
class QTextTable;
class TestTableLayout : public QObject
{
Q_OBJECT
public:
TestTableLayout() {}
private:
/**
* Initialize for a new test.
*
* @param rows the number of rows in the table.
* @param columns the number of columns in the table.
* @param tableStyle the table style to use.
* @param columnStyles a list of column styles to use.
* @param rowStyles a list of row styles to use.
* @param cellStyles a map of cell styles to use, key is QPair<row, col>.
* @param cellTexts a map of strings to put in the cells, key is QPair<row, col>.
*/
void initTest(int rows, int columns, KoTableStyle *tableStyle,
const QList<KoTableColumnStyle *> &columnStyles,
const QList<KoTableRowStyle *> &rowStyles,
const QMap<QPair<int, int>, KoTableCellStyle *> &cellStyles,
const QMap<QPair<int, int>, QString> &cellTexts);
/**
* Initialize for a new test. Simplified version.
*
* If no arguments are given, the following will be set up:
*
* - 2x2 table with no margins and 200 pt fixed width.
* - Columns get equal width.
*
* @param rows the number of rows in the table.
* @param columns the number of columns in the table.
* @param tableStyle the table style to use.
*/
void initTestSimple(int rows = 2, int columns = 2, KoTableStyle *tableStyle = 0);
/// Clean up after a test.
void cleanupTest();
private slots:
/// Common initialization for all tests.
void init();
/// Test very basic layout functionality.
void testBasicLayout();
/// Test table margin.
void testTableMargin();
/// Test individual table margin (top,right,bottom,left).
void testIndividualTableMargin();
/// Test table cell styles.
void testCellStyles();
/// Test cell column spanning.
void testCellColumnSpanning();
/// Test cell row spanning.
void testCellRowSpanning();
/// Test row spanning when content is inserted in spanning row.
void testCellRowSpanningCellHeight();
/// Test cell row and column spanning.
void testCellRowAndColumnSpanning();
/// Test minimum row height.
void testMinimumRowHeight();
/// Test column width.
void testColumnWidth();
/// Test variable column width.
void testVariableColumnWidth();
/// Test table width and relative width.
void testTableWidth();
/// Test table alignment.
void testTableAlignment();
/// Test combination of several features combined.
void testFeatureCombination();
private:
QTextDocument *m_doc;
QTextTable *m_table;
KoTextDocumentLayout *m_layout;
KoStyleManager *m_styleManager;
KoTableColumnAndRowStyleManager *m_tableColumnAndRowStyleManager;
Layout *m_textLayout;
MockTextShape *m_shape;
// Default styles for the test table.
KoTableStyle *m_defaultTableStyle;
KoTableColumnStyle *m_defaultColumnStyle;
KoTableRowStyle *m_defaultRowStyle;
KoTableCellStyle *m_defaultCellStyle;
};
class MockTextShape : public TextShape
{
public:
MockTextShape() : TextShape(0)
{
layout = qobject_cast<KoTextDocumentLayout*>(textShapeData()->document()->documentLayout());
}
void paint(QPainter &painter, const KoViewConverter &converter)
{
Q_UNUSED(painter);
Q_UNUSED(converter);
}
virtual void saveOdf(KoShapeSavingContext &) const {}
virtual bool loadOdf(const KoXmlElement &, KoShapeLoadingContext &) {
return true;
}
KoTextDocumentLayout *layout;
};
#endif // TESTTABLELAYOUT_H
|