31 #include <QRandomGenerator>
33 #define protected public
37 #include <private/qtextdocument_p.h>
43 #include "../qtextdocument/common.h"
80 void checkDocumentChanged();
81 void checkDocumentChanged2();
82 void setBlockFormat();
84 void blockInsertion();
85 void blockInsertion2();
93 void checkBlockSeparation();
96 void removeFrameDirect();
97 void removeWithChildFrame();
98 void clearWithFrames();
103 int blockFormatIndex;
108 { doc = 0;
table = 0; }
125 void tst_QTextPieceTable::insertion1()
127 table->insert(0,
"aacc", charFormatIndex);
129 table->insert(2,
"bb", charFormatIndex);
131 table->insert(1,
"1", charFormatIndex);
133 table->insert(6,
"d", charFormatIndex);
135 table->insert(8,
"z", charFormatIndex);
139 void tst_QTextPieceTable::insertion2()
141 table->insert(0,
"bb", charFormatIndex);
145 void tst_QTextPieceTable::insertion3()
148 for (
int i = 0;
i < 20000; ++
i) {
150 QChar c((
unsigned short)(
i & 0xff) + 1);
159 void tst_QTextPieceTable::insertion4()
162 for (
int i = 0;
i < 20000; ++
i) {
164 QChar c((
unsigned short)((
i % 26) + (
i>25?
'A':
'a')));
178 void tst_QTextPieceTable::insertion5()
181 for (
int i = 0;
i < 20000; ++
i) {
183 QChar c((
unsigned short)((
i % 26) + (
i>25?
'A':
'a')));
188 table->insertBlock(
pos, blockFormatIndex, charFormatIndex);
202 void tst_QTextPieceTable::removal1()
204 table->insert(0,
"abbccc", charFormatIndex);
208 table->insert(1,
"1", charFormatIndex);
212 table->insert(4,
"z", charFormatIndex);
216 void tst_QTextPieceTable::removal2()
218 table->insert(0,
"bb", charFormatIndex);
222 table->insertBlock(0, blockFormatIndex, charFormatIndex);
227 table->insert(0,
"bb", charFormatIndex);
229 table->insertBlock(1, blockFormatIndex, charFormatIndex);
235 void tst_QTextPieceTable::removal3()
239 for (
int i = 0;
i < 20000; ++
i) {
242 QChar c((
unsigned short)((
i % 26) + (
i>25?
'A':
'a')));
262 void tst_QTextPieceTable::removal4()
266 for (
int i = 0;
i < 20000; ++
i) {
269 QChar c((
unsigned short)((
i % 26) + (
i>25?
'A':
'a')));
282 table->insertBlock(
pos, blockFormatIndex, charFormatIndex);
296 void tst_QTextPieceTable::undoRedo1()
298 table->insert(0,
"01234567", charFormatIndex);
299 table->insert(0,
"a", charFormatIndex);
300 table->insert(1,
"b", charFormatIndex);
307 table->insert(1,
"c", charFormatIndex);
315 void tst_QTextPieceTable::undoRedo2()
317 table->insert(0,
"01", charFormatIndex);
318 table->insert(1,
"a", charFormatIndex);
330 void tst_QTextPieceTable::undoRedo3()
332 table->insert(0,
"01", charFormatIndex);
333 table->insert(2,
"ab", charFormatIndex);
346 void tst_QTextPieceTable::undoRedo4()
348 table->insert(0,
"01", charFormatIndex);
349 table->insert(0,
"ab", charFormatIndex);
366 void tst_QTextPieceTable::undoRedo5()
368 table->beginEditBlock();
369 table->insert(0,
"01", charFormatIndex);
371 table->endEditBlock();
377 void tst_QTextPieceTable::undoRedo6()
382 cursor.insertText(
"Hello World");
385 cursor.insertText(
"Hello World2");
390 cursor.setBlockFormat(bfmt);
394 range.clearSelection();
400 range.mergeCharFormat(modifier);
410 void tst_QTextPieceTable::undoRedo7()
412 table->insert(0,
"a", charFormatIndex);
413 table->insert(1,
"b", charFormatIndex);
420 void tst_QTextPieceTable::undoRedo8()
422 table->insert(0,
"a", charFormatIndex);
423 table->insert(1,
"b", charFormatIndex);
434 void tst_QTextPieceTable::undoRedo9()
436 table->insert(0,
"a", charFormatIndex);
437 table->insert(1,
"b", charFormatIndex);
448 void tst_QTextPieceTable::undoRedo10()
453 int cfIdx =
table->formatCollection()->indexForFormat(cf);
456 int idx =
table->formatCollection()->indexForFormat(
f);
458 table->insert(0,
"a", cfIdx);
460 table->insert(1,
"b", cfIdx);
463 int newCfIdx =
table->formatCollection()->indexForFormat(cf);
474 void tst_QTextPieceTable::undoRedo11()
476 const int loops = 20;
479 for (
int i = 0;
i < loops; ++
i) {
482 QChar c((
unsigned short)((
i % 26) + (
i>25?
'A':
'a')));
496 for (
int i = 0;
i < loops; ++
i)
499 for (
int i = 0;
i < loops; ++
i)
505 void tst_QTextPieceTable::checkDocumentChanged()
507 table->enableUndoRedo(
false);
513 table->insert(0,
"012345678901234", charFormatIndex);
523 table->beginEditBlock();
524 table->insert(0,
"01234", charFormatIndex);
526 table->endEditBlock();
530 table->beginEditBlock();
532 table->insert(0,
"01234", charFormatIndex);
533 table->endEditBlock();
538 table->beginEditBlock();
540 table->insert(0,
"01234", charFormatIndex);
541 table->endEditBlock();
545 table->beginEditBlock();
546 table->insert(0,
"01234", charFormatIndex);
548 table->endEditBlock();
553 table->beginEditBlock();
554 table->insert(0,
"01234", charFormatIndex);
556 table->endEditBlock();
560 table->beginEditBlock();
561 table->insert(0,
"01234", charFormatIndex);
563 table->endEditBlock();
568 table->beginEditBlock();
569 table->insert(1,
"0", charFormatIndex);
571 table->endEditBlock();
575 table->beginEditBlock();
576 table->insert(1,
"01", charFormatIndex);
578 table->endEditBlock();
582 table->beginEditBlock();
583 table->insert(1,
"012", charFormatIndex);
585 table->endEditBlock();
589 table->beginEditBlock();
590 table->insert(1,
"0", charFormatIndex);
592 table->endEditBlock();
596 table->beginEditBlock();
597 table->insert(1,
"01", charFormatIndex);
599 table->endEditBlock();
603 table->beginEditBlock();
604 table->insert(1,
"012", charFormatIndex);
606 table->endEditBlock();
611 table->beginEditBlock();
612 table->insert(1,
"0", charFormatIndex);
614 table->endEditBlock();
618 table->beginEditBlock();
619 table->insert(2,
"1", charFormatIndex);
621 table->endEditBlock();
625 table->beginEditBlock();
627 table->insert(1,
"0", charFormatIndex);
628 table->endEditBlock();
632 table->beginEditBlock();
634 table->insert(2,
"1", charFormatIndex);
635 table->endEditBlock();
641 table->beginEditBlock();
642 table->setCharFormat(0, 1, fmt);
643 table->setCharFormat(2, 1, fmt);
644 table->endEditBlock();
648 void tst_QTextPieceTable::checkDocumentChanged2()
655 int anotherCharFormatIndex =
table->formatCollection()->indexForFormat(fmt);
658 table->beginEditBlock();
659 table->insert(0,
"0123", charFormatIndex);
660 table->insert(4,
"4567", anotherCharFormatIndex);
661 table->insert(8,
"8901", charFormatIndex);
662 table->endEditBlock();
667 layout->expect(1, 10, 10);
668 table->beginEditBlock();
669 table->setCharFormat(8, 3, fmt);
670 table->setCharFormat(4, 4, fmt);
671 table->setCharFormat(1, 3, fmt);
672 table->endEditBlock();
676 void tst_QTextPieceTable::setBlockFormat()
679 int index =
table->formatCollection()->indexForFormat(bfmt);
681 table->insertBlock(0,
index, charFormatIndex);
682 table->insertBlock(0,
index, charFormatIndex);
683 table->insertBlock(0,
index, charFormatIndex);
687 index =
table->formatCollection()->indexForFormat(bfmt);
689 table->setBlockFormat(
b,
b, newbfmt);
697 void tst_QTextPieceTable::blockInsertion()
701 int idx =
table->formatCollection()->indexForFormat(fmt);
705 table->insertBlock(0,
idx, charFormat);
718 void tst_QTextPieceTable::blockInsertion2()
722 table->insertBlock(
pos, blockFormatIndex, charFormatIndex);
724 table->insert(
pos,
"a", charFormatIndex);
728 table->insertBlock(
pos, blockFormatIndex, charFormatIndex);
738 void tst_QTextPieceTable::blockRemoval1()
744 int idx1 =
table->formatCollection()->indexForFormat(fmt1);
745 int idx2 =
table->formatCollection()->indexForFormat(fmt2);
747 table->insert(0,
"0123", charFormatIndex);
748 table->insertBlock(4, idx1, charFormatIndex);
749 table->insert(5,
"5678", charFormatIndex);
750 table->insertBlock(9, idx2, charFormatIndex);
751 table->insert(10,
"0123", charFormatIndex);
761 table->beginEditBlock();
763 table->endEditBlock();
786 void tst_QTextPieceTable::blockRemoval2()
792 int idx1 =
table->formatCollection()->indexForFormat(fmt1);
793 int idx2 =
table->formatCollection()->indexForFormat(fmt2);
795 table->insert(0,
"0123", charFormatIndex);
796 table->insertBlock(4, idx1, charFormatIndex);
797 table->insert(5,
"5678", charFormatIndex);
798 table->insertBlock(9, idx2, charFormatIndex);
799 table->insert(10,
"0123", charFormatIndex);
832 void tst_QTextPieceTable::blockRemoval3()
838 int idx1 =
table->formatCollection()->indexForFormat(fmt1);
839 int idx2 =
table->formatCollection()->indexForFormat(fmt2);
841 table->insert(0,
"0123", charFormatIndex);
842 table->insertBlock(4, idx1, charFormatIndex);
843 table->insert(5,
"5678", charFormatIndex);
844 table->insertBlock(9, idx2, charFormatIndex);
845 table->insert(10,
"0123", charFormatIndex);
855 table->beginEditBlock();
857 table->endEditBlock();
881 void tst_QTextPieceTable::blockRemoval4()
888 int idx1 =
table->formatCollection()->indexForFormat(fmt1);
889 int idx2 =
table->formatCollection()->indexForFormat(fmt2);
891 table->insert(0,
"0123", charFormatIndex);
892 table->insertBlock(4, idx1, charFormatIndex);
893 table->insert(5,
"5678", charFormatIndex);
894 table->insertBlock(9, idx2, charFormatIndex);
895 table->insert(10,
"0123", charFormatIndex);
929 void tst_QTextPieceTable::blockRemoval5()
935 int idx1 =
table->formatCollection()->indexForFormat(fmt1);
936 int idx2 =
table->formatCollection()->indexForFormat(fmt2);
938 table->insert(0,
"0123", charFormatIndex);
939 table->insertBlock(4, idx1, charFormatIndex);
940 table->insert(5,
"5678", charFormatIndex);
941 table->insertBlock(9, idx2, charFormatIndex);
942 table->insert(10,
"0123", charFormatIndex);
952 table->beginEditBlock();
954 table->endEditBlock();
979 void tst_QTextPieceTable::checkBlockSeparation()
981 table->insertBlock(0, blockFormatIndex, charFormatIndex);
982 table->insertBlock(1, blockFormatIndex, charFormatIndex);
987 void tst_QTextPieceTable::checkFrames1()
990 table->insert(0,
"Hello", charFormatIndex);
1056 void tst_QTextPieceTable::removeFrameDirect()
1059 table->insert(0,
"Hello", charFormatIndex);
1065 const int start =
frame->firstPosition() - 1;
1066 const int end =
frame->lastPosition();
1072 void tst_QTextPieceTable::removeWithChildFrame()
1093 table->insert(0,
"Hello World", charFormatIndex);
1101 table->remove(2, 5);
1105 void tst_QTextPieceTable::clearWithFrames()
1123 table->insert(0,
"Hello World", charFormatIndex);
1139 #include "tst_qtextpiecetable.moc"
small capitals from c petite p scientific i
[1]
The QChar class provides a 16-bit Unicode character.
const_reference at(qsizetype i) const noexcept
qsizetype count() const noexcept
The QObject class is the base class of all Qt objects.
static Q_DECL_CONST_FUNCTION QRandomGenerator * global()
double bounded(double highest)
The QString class provides a Unicode character string.
The QTextBlockFormat class provides formatting information for blocks of text in a QTextDocument....
void setAlignment(Qt::Alignment alignment)
void setTopMargin(qreal margin)
The QTextBlock class provides a container for text fragments in a QTextDocument. \inmodule QtGui.
The QTextCharFormat class provides formatting information for characters in a QTextDocument....
void setFontItalic(bool italic)
The QTextCursor class offers an API to access and modify QTextDocuments.
The QTextDocument class holds formatted text.
void undo(QTextCursor *cursor)
void setDocumentLayout(QAbstractTextDocumentLayout *layout)
FragmentMap::ConstIterator FragmentIterator
static const QTextDocumentPrivate * get(const QTextDocument *document)
void setForeground(const QBrush &brush)
The QTextFrameFormat class provides formatting information for frames in a QTextDocument....
The QTextFrame class represents a frame in a QTextDocument. \inmodule QtGui.
QList< QTextFrame * > childFrames() const
QTextFrame * parentFrame() const
int firstPosition() const
GLenum GLuint GLenum GLsizei length
GLboolean GLboolean GLboolean b
GLenum GLenum GLsizei void * table
#define QTEST_MAIN(TestObject)
#define QVERIFY(statement)
settings remove("monkey")
void compare(Input input, FnUnderTest fn_under_test, const QByteArray &output)