1
#include "TestSections.h"
3
#include <KoStyleManager.h>
4
#include <KoTextDocument.h>
5
#include <KoSectionStyle.h>
7
#include <QTextDocument>
14
void TestSections::init()
22
m_defaultSectionStyle = 0;
25
void TestSections::initTest(const KoSectionStyle *sectionStyle)
27
// Mock shape of size 200x1000 pt.
28
m_shape = new MockTextShape();
30
m_shape->setSize(QSizeF(200, 1000));
33
m_layout = m_shape->layout;
37
m_doc = m_layout->document();
39
m_doc->setDefaultFont(QFont("Sans Serif", 12, QFont::Normal, false));
41
// Layout state (layout helper).
42
m_textLayout = new Layout(m_layout);
43
Q_ASSERT(m_textLayout);
44
m_layout->setLayout(m_textLayout);
47
m_styleManager = new KoStyleManager();
48
Q_ASSERT(m_styleManager);
49
KoTextDocument(m_doc).setStyleManager(m_styleManager);
52
m_defaultSectionStyle = new KoSectionStyle();
53
Q_ASSERT(m_defaultSectionStyle);
54
m_defaultSectionStyle->setLeftMargin(0.0);
55
m_defaultSectionStyle->setRightMargin(0.0);
57
QString loremIpsum("Lorem ipsum dolor sit amet, XgXgectetuer adiXiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.");
59
m_doc->rootFrame()->firstCursorPosition().insertText(loremIpsum);
62
QTextFrameFormat sectionFormat;
63
sectionStyle->applyStyle(sectionFormat);
64
QTextFrame *section = m_doc->rootFrame()->firstCursorPosition().insertFrame(sectionFormat);
66
section->firstCursorPosition().insertText(loremIpsum);
69
void TestSections::cleanupTest()
71
delete m_styleManager;
72
delete m_defaultSectionStyle;
75
void TestSections::testBasicLayout()
77
KoSectionStyle *sectionStyle = new KoSectionStyle();
78
Q_ASSERT(sectionStyle);
79
sectionStyle->setLeftMargin(0.0);
80
sectionStyle->setRightMargin(0.0);
82
initTest(sectionStyle);
86
// a block in a section with no special margins or columns should be just as wide
87
// as the reference (first) block.
88
QTextLayout *blockLayout = m_doc->begin().layout();
89
QCOMPARE(blockLayout->lineAt(0).width(), 200.0);
91
blockLayout = m_doc->begin().next().layout();
92
QCOMPARE(blockLayout->lineAt(0).width(), 200.0);
96
void TestSections::testShrinkByMargin()
98
KoSectionStyle *sectionStyle = new KoSectionStyle();
99
Q_ASSERT(sectionStyle);
100
sectionStyle->setLeftMargin(20.0);
101
sectionStyle->setRightMargin(20.0);
103
initTest(sectionStyle);
107
// a block in a section with margins (and no columns) should be exact amoung less wide
108
// as the reference (first) block.
109
QTextLayout *blockLayout = m_doc->begin().layout();
110
QCOMPARE(blockLayout->lineAt(0).width(), 200.0);
112
blockLayout = m_doc->begin().next().layout();
113
QEXPECT_FAIL("", "unimplemented", Abort);
114
QCOMPARE(blockLayout->lineAt(0).width(), 160.0);
118
void TestSections::testMoveByMargin()
120
KoSectionStyle *sectionStyle = new KoSectionStyle();
121
Q_ASSERT(sectionStyle);
122
sectionStyle->setLeftMargin(20.0);
123
sectionStyle->setRightMargin(-20.0);
125
initTest(sectionStyle);
129
// a block in a section with margins (and no columns) that essentially just moves the block
130
// should be just as wide as the reference (first) block.
131
QTextLayout *blockLayout = m_doc->begin().layout();
132
QCOMPARE(blockLayout->lineAt(0).width(), 200.0);
134
blockLayout = m_doc->begin().next().layout();
135
QCOMPARE(blockLayout->lineAt(0).width(), 200.0);
140
QTEST_KDEMAIN(TestSections, GUI)
142
#include <TestSections.moc>