~ubuntu-branches/ubuntu/precise/koffice/precise

« back to all changes in this revision

Viewing changes to plugins/textshape/tests/TestSections.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Jonathan Riddell
  • Date: 2010-09-21 15:36:35 UTC
  • mfrom: (1.4.1 upstream) (60.2.11 maverick)
  • Revision ID: james.westby@ubuntu.com-20100921153635-6tejqkiro2u21ydi
Tags: 1:2.2.2-0ubuntu3
Add kubuntu_03_fix-crash-on-closing-sqlite-connection-2.2.2.diff and
kubuntu_04_support-large-memo-values-for-msaccess-2.2.2.diff as
recommended by upstream http://kexi-
project.org/wiki/wikiview/index.php@Kexi2.2_Patches.html#sqlite_stab
ility

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "TestSections.h"
 
2
 
 
3
#include <KoStyleManager.h>
 
4
#include <KoTextDocument.h>
 
5
#include <KoSectionStyle.h>
 
6
 
 
7
#include <QTextDocument>
 
8
#include <QTextFrame>
 
9
#include <QTextCursor>
 
10
#include <QPoint>
 
11
#include <QString>
 
12
#include <QPen>
 
13
 
 
14
void TestSections::init()
 
15
{
 
16
    m_doc = 0;
 
17
    m_table = 0;
 
18
    m_layout = 0;
 
19
    m_styleManager = 0;
 
20
    m_textLayout = 0;
 
21
    m_shape = 0;
 
22
    m_defaultSectionStyle = 0;
 
23
}
 
24
 
 
25
void TestSections::initTest(const KoSectionStyle *sectionStyle)
 
26
{
 
27
    // Mock shape of size 200x1000 pt.
 
28
    m_shape = new MockTextShape();
 
29
    Q_ASSERT(m_shape);
 
30
    m_shape->setSize(QSizeF(200, 1000));
 
31
 
 
32
    // Document layout.
 
33
    m_layout = m_shape->layout;
 
34
    Q_ASSERT(m_layout);
 
35
 
 
36
    // Document.
 
37
    m_doc = m_layout->document();
 
38
    Q_ASSERT(m_doc);
 
39
    m_doc->setDefaultFont(QFont("Sans Serif", 12, QFont::Normal, false));
 
40
 
 
41
    // Layout state (layout helper).
 
42
    m_textLayout = new Layout(m_layout);
 
43
    Q_ASSERT(m_textLayout);
 
44
    m_layout->setLayout(m_textLayout);
 
45
 
 
46
    // Style manager.
 
47
    m_styleManager = new KoStyleManager();
 
48
    Q_ASSERT(m_styleManager);
 
49
    KoTextDocument(m_doc).setStyleManager(m_styleManager);
 
50
 
 
51
    // Table style.
 
52
    m_defaultSectionStyle = new KoSectionStyle();
 
53
    Q_ASSERT(m_defaultSectionStyle);
 
54
    m_defaultSectionStyle->setLeftMargin(0.0);
 
55
    m_defaultSectionStyle->setRightMargin(0.0);
 
56
    
 
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.");
 
58
 
 
59
    m_doc->rootFrame()->firstCursorPosition().insertText(loremIpsum);
 
60
    
 
61
    // Style.
 
62
    QTextFrameFormat sectionFormat;
 
63
    sectionStyle->applyStyle(sectionFormat);
 
64
    QTextFrame *section = m_doc->rootFrame()->firstCursorPosition().insertFrame(sectionFormat);
 
65
    
 
66
    section->firstCursorPosition().insertText(loremIpsum);
 
67
}
 
68
 
 
69
void TestSections::cleanupTest()
 
70
{
 
71
    delete m_styleManager;
 
72
    delete m_defaultSectionStyle;
 
73
}
 
74
 
 
75
void TestSections::testBasicLayout()
 
76
{
 
77
    KoSectionStyle *sectionStyle = new KoSectionStyle();
 
78
    Q_ASSERT(sectionStyle);
 
79
    sectionStyle->setLeftMargin(0.0);
 
80
    sectionStyle->setRightMargin(0.0);
 
81
    
 
82
    initTest(sectionStyle);
 
83
 
 
84
    m_layout->layout();
 
85
 
 
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);
 
90
 
 
91
    blockLayout = m_doc->begin().next().layout();
 
92
    QCOMPARE(blockLayout->lineAt(0).width(), 200.0);
 
93
    cleanupTest();
 
94
}
 
95
 
 
96
void TestSections::testShrinkByMargin()
 
97
{
 
98
    KoSectionStyle *sectionStyle = new KoSectionStyle();
 
99
    Q_ASSERT(sectionStyle);
 
100
    sectionStyle->setLeftMargin(20.0);
 
101
    sectionStyle->setRightMargin(20.0);
 
102
 
 
103
    initTest(sectionStyle);
 
104
 
 
105
    m_layout->layout();
 
106
 
 
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);
 
111
 
 
112
    blockLayout = m_doc->begin().next().layout();
 
113
    QEXPECT_FAIL("", "unimplemented", Abort);
 
114
    QCOMPARE(blockLayout->lineAt(0).width(), 160.0);
 
115
    cleanupTest();
 
116
}
 
117
 
 
118
void TestSections::testMoveByMargin()
 
119
{
 
120
    KoSectionStyle *sectionStyle = new KoSectionStyle();
 
121
    Q_ASSERT(sectionStyle);
 
122
    sectionStyle->setLeftMargin(20.0);
 
123
    sectionStyle->setRightMargin(-20.0);
 
124
 
 
125
    initTest(sectionStyle);
 
126
 
 
127
    m_layout->layout();
 
128
 
 
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);
 
133
 
 
134
    blockLayout = m_doc->begin().next().layout();
 
135
    QCOMPARE(blockLayout->lineAt(0).width(), 200.0);
 
136
    cleanupTest();
 
137
}
 
138
 
 
139
 
 
140
QTEST_KDEMAIN(TestSections, GUI)
 
141
 
 
142
#include <TestSections.moc>