2020-02-27 11:41:24 +01:00
|
|
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
|
|
/*
|
|
|
|
* This file is part of the LibreOffice project.
|
|
|
|
*
|
|
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <swmodeltestbase.hxx>
|
2020-03-05 22:15:23 +01:00
|
|
|
#include <LibreOfficeKit/LibreOfficeKitEnums.h>
|
|
|
|
#include <vcl/scheduler.hxx>
|
2020-03-09 11:13:32 +01:00
|
|
|
#include <com/sun/star/text/TextContentAnchorType.hpp>
|
2020-04-03 13:12:51 +02:00
|
|
|
#include <comphelper/propertysequence.hxx>
|
2020-05-05 19:27:58 +02:00
|
|
|
#include <boost/property_tree/json_parser.hpp>
|
2020-02-27 11:41:24 +01:00
|
|
|
|
2020-05-06 10:45:10 +03:00
|
|
|
#include <wrtsh.hxx>
|
|
|
|
|
2020-02-27 11:41:24 +01:00
|
|
|
namespace
|
|
|
|
{
|
|
|
|
char const DATA_DIRECTORY[] = "/sw/qa/extras/uiwriter/data3/";
|
|
|
|
} // namespace
|
|
|
|
|
|
|
|
/// Third set of tests asserting the behavior of Writer user interface shells.
|
|
|
|
class SwUiWriterTest3 : public SwModelTestBase
|
|
|
|
{
|
|
|
|
};
|
|
|
|
|
|
|
|
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf129382)
|
|
|
|
{
|
|
|
|
load(DATA_DIRECTORY, "tdf129382.docx");
|
|
|
|
|
|
|
|
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
|
|
|
|
CPPUNIT_ASSERT(pTextDoc);
|
|
|
|
|
2020-02-28 21:01:12 +01:00
|
|
|
uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
|
|
|
|
uno::Reference<container::XIndexAccess> xDraws = xDrawPageSupplier->getDrawPage();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(8), xDraws->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(2, getPages());
|
2020-02-27 11:41:24 +01:00
|
|
|
dispatchCommand(mxComponent, ".uno:SelectAll", {});
|
|
|
|
dispatchCommand(mxComponent, ".uno:Cut", {});
|
2020-02-28 21:01:12 +01:00
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(3), xDraws->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(1, getPages());
|
2020-02-27 11:41:24 +01:00
|
|
|
dispatchCommand(mxComponent, ".uno:Paste", {});
|
2020-02-28 21:01:12 +01:00
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(8), xDraws->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(2, getPages());
|
2020-02-27 11:41:24 +01:00
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
2020-02-28 21:01:12 +01:00
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(3), xDraws->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(1, getPages());
|
|
|
|
|
2020-02-27 11:41:24 +01:00
|
|
|
// without the fix, it crashes
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
2020-02-28 21:01:12 +01:00
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(8), xDraws->getCount());
|
2020-02-27 11:41:24 +01:00
|
|
|
}
|
2020-02-27 16:32:35 +01:00
|
|
|
|
|
|
|
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf126626)
|
|
|
|
{
|
|
|
|
load(DATA_DIRECTORY, "tdf126626.docx");
|
|
|
|
|
|
|
|
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
|
|
|
|
CPPUNIT_ASSERT(pTextDoc);
|
|
|
|
|
2020-02-28 21:01:12 +01:00
|
|
|
uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY);
|
|
|
|
uno::Reference<container::XIndexAccess> xDraws = xDrawPageSupplier->getDrawPage();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xDraws->getCount());
|
2020-02-27 16:32:35 +01:00
|
|
|
dispatchCommand(mxComponent, ".uno:SelectAll", {});
|
|
|
|
dispatchCommand(mxComponent, ".uno:Copy", {});
|
2020-02-28 21:01:12 +01:00
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xDraws->getCount());
|
2020-02-27 16:32:35 +01:00
|
|
|
dispatchCommand(mxComponent, ".uno:Paste", {});
|
2020-02-28 21:01:12 +01:00
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xDraws->getCount());
|
2020-02-27 16:32:35 +01:00
|
|
|
dispatchCommand(mxComponent, ".uno:Paste", {});
|
2020-02-28 21:01:12 +01:00
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(4), xDraws->getCount());
|
2020-02-27 16:32:35 +01:00
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
2020-02-28 21:01:12 +01:00
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xDraws->getCount());
|
|
|
|
|
2020-02-27 16:32:35 +01:00
|
|
|
// without the fix, it crashes
|
|
|
|
dispatchCommand(mxComponent, ".uno:Paste", {});
|
2020-02-28 21:01:12 +01:00
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(4), xDraws->getCount());
|
2020-02-27 16:32:35 +01:00
|
|
|
}
|
2020-02-27 18:01:14 +01:00
|
|
|
|
2020-05-05 15:26:49 +02:00
|
|
|
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf132187)
|
|
|
|
{
|
|
|
|
load(DATA_DIRECTORY, "tdf132187.odt");
|
|
|
|
|
|
|
|
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
|
|
|
|
CPPUNIT_ASSERT(pTextDoc);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(1, getPages());
|
|
|
|
dispatchCommand(mxComponent, ".uno:SelectAll", {});
|
|
|
|
dispatchCommand(mxComponent, ".uno:Copy", {});
|
|
|
|
dispatchCommand(mxComponent, ".uno:GoToEndOfDoc", {});
|
|
|
|
|
|
|
|
for (sal_Int32 i = 0; i < 10; ++i)
|
|
|
|
{
|
|
|
|
dispatchCommand(mxComponent, ".uno:Paste", {});
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
}
|
|
|
|
|
|
|
|
//without the fix in place, this test would fail with:
|
|
|
|
//- Expected: 1
|
|
|
|
//- Actual : 70
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(1, getPages());
|
|
|
|
}
|
|
|
|
|
2020-02-27 18:01:14 +01:00
|
|
|
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf128739)
|
|
|
|
{
|
|
|
|
load(DATA_DIRECTORY, "tdf128739.docx");
|
|
|
|
|
|
|
|
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
|
|
|
|
CPPUNIT_ASSERT(pTextDoc);
|
|
|
|
|
2020-02-28 21:01:12 +01:00
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("Fehler: Verweis nicht gefunden"), getParagraph(1)->getString());
|
2020-02-27 18:01:14 +01:00
|
|
|
dispatchCommand(mxComponent, ".uno:SelectAll", {});
|
|
|
|
dispatchCommand(mxComponent, ".uno:Cut", {});
|
2020-02-28 21:01:12 +01:00
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString(""), getParagraph(1)->getString());
|
2020-02-27 18:01:14 +01:00
|
|
|
dispatchCommand(mxComponent, ".uno:Paste", {});
|
2020-02-28 21:01:12 +01:00
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("Fehler: Verweis nicht gefunden"), getParagraph(1)->getString());
|
2020-02-27 18:01:14 +01:00
|
|
|
// without the fix, it crashes
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
2020-02-28 21:01:12 +01:00
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString(""), getParagraph(1)->getString());
|
2020-02-27 18:01:14 +01:00
|
|
|
}
|
2020-02-28 19:44:38 +01:00
|
|
|
|
2020-04-09 22:21:33 +05:30
|
|
|
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf124722)
|
|
|
|
{
|
|
|
|
load(DATA_DIRECTORY, "tdf124722.rtf");
|
|
|
|
|
|
|
|
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
|
|
|
|
CPPUNIT_ASSERT(pTextDoc);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(22, getPages());
|
|
|
|
dispatchCommand(mxComponent, ".uno:SelectAll", {});
|
|
|
|
dispatchCommand(mxComponent, ".uno:Copy", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(22, getPages());
|
|
|
|
dispatchCommand(mxComponent, ".uno:Paste", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(43, getPages());
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(22, getPages());
|
|
|
|
}
|
|
|
|
|
2020-03-05 18:29:20 +01:00
|
|
|
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf125261)
|
|
|
|
{
|
|
|
|
load(DATA_DIRECTORY, "tdf125261.odt");
|
|
|
|
|
|
|
|
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
|
|
|
|
CPPUNIT_ASSERT(pTextDoc);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("https://www.example.com/"),
|
|
|
|
getProperty<OUString>(getRun(getParagraph(1), 1), "HyperLinkURL"));
|
|
|
|
//apply autocorrect StartAutoCorrect
|
|
|
|
dispatchCommand(mxComponent, ".uno:AutoFormatApply", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("https://www.example.com/"),
|
|
|
|
getProperty<OUString>(getRun(getParagraph(1), 1), "HyperLinkURL"));
|
|
|
|
// without the fix, it hangs
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("https://www.example.com/"),
|
|
|
|
getProperty<OUString>(getRun(getParagraph(1), 1), "HyperLinkURL"));
|
|
|
|
}
|
|
|
|
|
2020-03-05 22:15:23 +01:00
|
|
|
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf76636)
|
|
|
|
{
|
|
|
|
load(DATA_DIRECTORY, "tdf76636.doc");
|
|
|
|
|
|
|
|
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
|
|
|
|
CPPUNIT_ASSERT(pTextDoc);
|
|
|
|
|
|
|
|
uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
|
|
|
|
uno::Reference<container::XIndexAccess> xIndexAccess(xTextTablesSupplier->getTextTables(),
|
|
|
|
uno::UNO_QUERY);
|
|
|
|
uno::Reference<text::XTextTable> xTextTable(xIndexAccess->getByIndex(0), uno::UNO_QUERY);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(3), xTextTable->getRows()->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(6), xTextTable->getColumns()->getCount());
|
|
|
|
|
|
|
|
//go to middle row
|
|
|
|
pTextDoc->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_DOWN);
|
|
|
|
pTextDoc->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_DOWN);
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
pTextDoc->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_TAB);
|
|
|
|
pTextDoc->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_TAB);
|
|
|
|
pTextDoc->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_TAB);
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
pTextDoc->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_LEFT | KEY_SHIFT);
|
|
|
|
pTextDoc->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_LEFT | KEY_SHIFT);
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:MergeCells", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(3), xTextTable->getRows()->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(4), xTextTable->getColumns()->getCount());
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(3), xTextTable->getRows()->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(6), xTextTable->getColumns()->getCount());
|
|
|
|
}
|
|
|
|
|
|
|
|
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf76636_2)
|
|
|
|
{
|
|
|
|
load(DATA_DIRECTORY, "tdf76636.doc");
|
|
|
|
|
|
|
|
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
|
|
|
|
CPPUNIT_ASSERT(pTextDoc);
|
|
|
|
|
|
|
|
uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
|
|
|
|
uno::Reference<container::XIndexAccess> xIndexAccess(xTextTablesSupplier->getTextTables(),
|
|
|
|
uno::UNO_QUERY);
|
|
|
|
uno::Reference<text::XTextTable> xTextTable(xIndexAccess->getByIndex(0), uno::UNO_QUERY);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(3), xTextTable->getRows()->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(6), xTextTable->getColumns()->getCount());
|
|
|
|
|
|
|
|
pTextDoc->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_DOWN);
|
|
|
|
pTextDoc->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_DOWN);
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
pTextDoc->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_TAB);
|
|
|
|
pTextDoc->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_TAB);
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
pTextDoc->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_RIGHT | KEY_SHIFT);
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:MergeCells", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(3), xTextTable->getRows()->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(5), xTextTable->getColumns()->getCount());
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(3), xTextTable->getRows()->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(6), xTextTable->getColumns()->getCount());
|
|
|
|
}
|
|
|
|
|
2020-02-28 19:44:38 +01:00
|
|
|
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf126340)
|
|
|
|
{
|
|
|
|
load(DATA_DIRECTORY, "tdf126340.odt");
|
|
|
|
|
|
|
|
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
|
|
|
|
CPPUNIT_ASSERT(pTextDoc);
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:GoDown", {});
|
|
|
|
// without the fix, it crashes
|
|
|
|
dispatchCommand(mxComponent, ".uno:Delete", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("foo"), getParagraph(1)->getString());
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("foo"), getParagraph(1)->getString());
|
|
|
|
}
|
2020-03-04 14:33:46 +01:00
|
|
|
|
2020-04-30 17:55:06 +02:00
|
|
|
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf124397)
|
|
|
|
{
|
|
|
|
load(DATA_DIRECTORY, "tdf124397.docx");
|
|
|
|
|
|
|
|
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
|
|
|
|
CPPUNIT_ASSERT(pTextDoc);
|
|
|
|
|
|
|
|
uno::Reference<text::XTextFramesSupplier> xTextFramesSupplier(mxComponent, uno::UNO_QUERY);
|
|
|
|
uno::Reference<container::XIndexAccess> xIndexAccess(xTextFramesSupplier->getTextFrames(),
|
|
|
|
uno::UNO_QUERY);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:SelectAll", {});
|
|
|
|
dispatchCommand(mxComponent, ".uno:Delete", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(0), xIndexAccess->getCount());
|
|
|
|
// Without the fix in place, it would crash here
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
}
|
|
|
|
|
2020-03-09 11:13:32 +01:00
|
|
|
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf107975)
|
|
|
|
{
|
|
|
|
// This test also covers tdf#117185 tdf#110442
|
|
|
|
|
|
|
|
load(DATA_DIRECTORY, "tdf107975.odt");
|
|
|
|
|
|
|
|
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
|
|
|
|
CPPUNIT_ASSERT(pTextDoc);
|
|
|
|
|
|
|
|
uno::Reference<text::XTextGraphicObjectsSupplier> xTextGraphicObjectsSupplier(mxComponent,
|
|
|
|
uno::UNO_QUERY);
|
|
|
|
uno::Reference<container::XIndexAccess> xIndexAccess(
|
|
|
|
xTextGraphicObjectsSupplier->getGraphicObjects(), uno::UNO_QUERY);
|
|
|
|
|
|
|
|
uno::Reference<drawing::XShape> xShape(xIndexAccess->getByIndex(0), uno::UNO_QUERY);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(text::TextContentAnchorType_AT_CHARACTER,
|
|
|
|
getProperty<text::TextContentAnchorType>(xShape, "AnchorType"));
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:SelectAll", {});
|
|
|
|
dispatchCommand(mxComponent, ".uno:Copy", {});
|
|
|
|
|
|
|
|
//Position the mouse cursor (caret) after "ABC" below the blue image
|
|
|
|
dispatchCommand(mxComponent, ".uno:GoRight", {});
|
|
|
|
dispatchCommand(mxComponent, ".uno:Paste", {});
|
|
|
|
|
|
|
|
// without the fix, it crashes
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexAccess->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("ABC"), getParagraph(1)->getString());
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
dispatchCommand(mxComponent, ".uno:Redo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexAccess->getCount());
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
dispatchCommand(mxComponent, ".uno:Redo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexAccess->getCount());
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
|
|
|
|
//try again with anchor at start of doc which is another special case
|
|
|
|
xShape.set(xIndexAccess->getByIndex(0), uno::UNO_QUERY);
|
|
|
|
uno::Reference<text::XTextContent> xShapeContent(xShape, uno::UNO_QUERY);
|
|
|
|
uno::Reference<text::XTextRange> const xStart = pTextDoc->getText()->getStart();
|
|
|
|
xShapeContent->attach(xStart);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(text::TextContentAnchorType_AT_CHARACTER,
|
|
|
|
getProperty<text::TextContentAnchorType>(xShape, "AnchorType"));
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:SelectAll", {});
|
|
|
|
dispatchCommand(mxComponent, ".uno:Copy", {});
|
|
|
|
|
|
|
|
//Position the mouse cursor (caret) after "ABC" below the blue image
|
|
|
|
dispatchCommand(mxComponent, ".uno:GoRight", {});
|
|
|
|
dispatchCommand(mxComponent, ".uno:Paste", {});
|
|
|
|
|
|
|
|
// without the fix, it crashes
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexAccess->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("ABC"), getParagraph(1)->getString());
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
dispatchCommand(mxComponent, ".uno:Redo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexAccess->getCount());
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
dispatchCommand(mxComponent, ".uno:Redo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexAccess->getCount());
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
}
|
|
|
|
|
2020-03-18 11:37:34 +01:00
|
|
|
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf130746)
|
|
|
|
{
|
|
|
|
load(DATA_DIRECTORY, "tdf130746.odt");
|
|
|
|
|
|
|
|
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
|
|
|
|
CPPUNIT_ASSERT(pTextDoc);
|
|
|
|
|
|
|
|
uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
|
|
|
|
uno::Reference<container::XIndexAccess> xIndexAccess(xTextTablesSupplier->getTextTables(),
|
|
|
|
uno::UNO_QUERY);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:JumpToNextTable", {});
|
|
|
|
|
|
|
|
uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
|
|
|
|
uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(
|
|
|
|
xModel->getCurrentController(), uno::UNO_QUERY);
|
|
|
|
uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(),
|
|
|
|
uno::UNO_QUERY);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int16(1), xCursor->getPage());
|
|
|
|
|
|
|
|
pTextDoc->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_RETURN);
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int16(2), xCursor->getPage());
|
|
|
|
|
|
|
|
pTextDoc->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_UP | KEY_MOD2);
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int16(2), xCursor->getPage());
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int16(1), xCursor->getPage());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
}
|
|
|
|
|
2020-04-22 16:53:47 +02:00
|
|
|
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf129805)
|
|
|
|
{
|
|
|
|
load(DATA_DIRECTORY, "tdf129805.docx");
|
|
|
|
|
|
|
|
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
|
|
|
|
CPPUNIT_ASSERT(pTextDoc);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("x"), getParagraph(1)->getString());
|
|
|
|
dispatchCommand(mxComponent, ".uno:SelectAll", {});
|
|
|
|
// without the fix in place, it would crash here
|
|
|
|
dispatchCommand(mxComponent, ".uno:Cut", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString(""), getParagraph(1)->getString());
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OUString("x"), getParagraph(1)->getString());
|
|
|
|
}
|
|
|
|
|
2020-04-06 14:15:53 +02:00
|
|
|
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf130685)
|
|
|
|
{
|
|
|
|
load(DATA_DIRECTORY, "tdf130685.odt");
|
|
|
|
|
|
|
|
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
|
|
|
|
CPPUNIT_ASSERT(pTextDoc);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(2, getPages());
|
|
|
|
dispatchCommand(mxComponent, ".uno:SelectAll", {});
|
|
|
|
dispatchCommand(mxComponent, ".uno:Cut", {});
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
CPPUNIT_ASSERT_EQUAL(1, getPages());
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:Paste", {});
|
|
|
|
dispatchCommand(mxComponent, ".uno:Paste", {});
|
|
|
|
|
|
|
|
// Without fix in place, this test would have failed with:
|
|
|
|
//- Expected: 2
|
|
|
|
//- Actual : 4
|
|
|
|
CPPUNIT_ASSERT_EQUAL(2, getPages());
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(1, getPages());
|
|
|
|
|
2020-04-20 16:45:21 +02:00
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(2, getPages());
|
2020-04-06 14:15:53 +02:00
|
|
|
}
|
|
|
|
|
2020-03-04 14:33:46 +01:00
|
|
|
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf130680)
|
|
|
|
{
|
|
|
|
load(DATA_DIRECTORY, "tdf130680.odt");
|
|
|
|
|
|
|
|
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
|
|
|
|
CPPUNIT_ASSERT(pTextDoc);
|
|
|
|
|
|
|
|
uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
|
|
|
|
uno::Reference<container::XIndexAccess> xIndexAccess(xTextTablesSupplier->getTextTables(),
|
|
|
|
uno::UNO_QUERY);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(23), xIndexAccess->getCount());
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:SelectAll", {});
|
|
|
|
|
|
|
|
// without the fix, it crashes
|
|
|
|
dispatchCommand(mxComponent, ".uno:Cut", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(0), xIndexAccess->getCount());
|
|
|
|
dispatchCommand(mxComponent, ".uno:Paste", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
2020-04-20 16:45:21 +02:00
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(0), xIndexAccess->getCount());
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(23), xIndexAccess->getCount());
|
2020-03-04 14:33:46 +01:00
|
|
|
}
|
2020-04-03 13:12:51 +02:00
|
|
|
|
2020-04-14 20:45:49 +02:00
|
|
|
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf131684)
|
|
|
|
{
|
|
|
|
load(DATA_DIRECTORY, "tdf131684.docx");
|
|
|
|
|
|
|
|
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
|
|
|
|
CPPUNIT_ASSERT(pTextDoc);
|
|
|
|
|
|
|
|
uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
|
|
|
|
uno::Reference<container::XIndexAccess> xIndexAccess(xTextTablesSupplier->getTextTables(),
|
|
|
|
uno::UNO_QUERY);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
|
|
|
|
//Use selectAll 3 times in a row
|
|
|
|
dispatchCommand(mxComponent, ".uno:SelectAll", {});
|
|
|
|
dispatchCommand(mxComponent, ".uno:SelectAll", {});
|
|
|
|
dispatchCommand(mxComponent, ".uno:SelectAll", {});
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:Cut", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(0), xIndexAccess->getCount());
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:Paste", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
|
|
|
|
// without the fix, it crashes
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
}
|
|
|
|
|
2020-04-03 13:12:51 +02:00
|
|
|
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf80663)
|
|
|
|
{
|
|
|
|
mxComponent = loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument");
|
|
|
|
|
|
|
|
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
|
|
|
|
CPPUNIT_ASSERT(pTextDoc);
|
|
|
|
|
|
|
|
uno::Sequence<beans::PropertyValue> aArgs(comphelper::InitPropertySequence(
|
|
|
|
{ { "Rows", uno::makeAny(sal_Int32(2)) }, { "Columns", uno::makeAny(sal_Int32(2)) } }));
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:InsertTable", aArgs);
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
|
|
|
|
uno::Reference<container::XIndexAccess> xIndexAccess(xTextTablesSupplier->getTextTables(),
|
|
|
|
uno::UNO_QUERY);
|
|
|
|
uno::Reference<text::XTextTable> xTextTable(xIndexAccess->getByIndex(0), uno::UNO_QUERY);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xTextTable->getRows()->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xTextTable->getColumns()->getCount());
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:DeleteRows", {});
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xTextTable->getRows()->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xTextTable->getColumns()->getCount());
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xTextTable->getRows()->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xTextTable->getColumns()->getCount());
|
|
|
|
}
|
|
|
|
|
|
|
|
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf96067)
|
|
|
|
{
|
|
|
|
mxComponent = loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument");
|
|
|
|
|
|
|
|
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
|
|
|
|
CPPUNIT_ASSERT(pTextDoc);
|
|
|
|
|
|
|
|
uno::Sequence<beans::PropertyValue> aArgs(comphelper::InitPropertySequence(
|
|
|
|
{ { "Rows", uno::makeAny(sal_Int32(3)) }, { "Columns", uno::makeAny(sal_Int32(3)) } }));
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:InsertTable", aArgs);
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
|
|
|
|
uno::Reference<container::XIndexAccess> xIndexAccess(xTextTablesSupplier->getTextTables(),
|
|
|
|
uno::UNO_QUERY);
|
|
|
|
uno::Reference<text::XTextTable> xTextTable(xIndexAccess->getByIndex(0), uno::UNO_QUERY);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(3), xTextTable->getRows()->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(3), xTextTable->getColumns()->getCount());
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:SelectTable", {});
|
|
|
|
dispatchCommand(mxComponent, ".uno:InsertRowsBefore", {});
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(6), xTextTable->getRows()->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(3), xTextTable->getColumns()->getCount());
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(3), xTextTable->getRows()->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(3), xTextTable->getColumns()->getCount());
|
|
|
|
}
|
|
|
|
|
2020-04-03 20:35:52 +02:00
|
|
|
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf87199)
|
|
|
|
{
|
|
|
|
mxComponent = loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument");
|
|
|
|
|
|
|
|
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
|
|
|
|
CPPUNIT_ASSERT(pTextDoc);
|
|
|
|
|
|
|
|
uno::Sequence<beans::PropertyValue> aArgs(comphelper::InitPropertySequence(
|
|
|
|
{ { "Rows", uno::makeAny(sal_Int32(2)) }, { "Columns", uno::makeAny(sal_Int32(1)) } }));
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:InsertTable", aArgs);
|
|
|
|
|
|
|
|
uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
|
|
|
|
uno::Reference<container::XIndexAccess> xIndexAccess(xTextTablesSupplier->getTextTables(),
|
|
|
|
uno::UNO_QUERY);
|
|
|
|
uno::Reference<text::XTextTable> xTextTable(xIndexAccess->getByIndex(0), uno::UNO_QUERY);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xTextTable->getRows()->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xTextTable->getColumns()->getCount());
|
|
|
|
|
|
|
|
uno::Reference<text::XTextRange> xCellA1(xTextTable->getCellByName("A1"), uno::UNO_QUERY);
|
|
|
|
xCellA1->setString("test1");
|
|
|
|
|
|
|
|
uno::Reference<text::XTextRange> xCellA2(xTextTable->getCellByName("A2"), uno::UNO_QUERY);
|
|
|
|
xCellA2->setString("test2");
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:EntireColumn", {});
|
|
|
|
dispatchCommand(mxComponent, ".uno:MergeCells", {});
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xTextTable->getRows()->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xTextTable->getColumns()->getCount());
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT(xCellA1->getString().endsWith("test2"));
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xTextTable->getRows()->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xTextTable->getColumns()->getCount());
|
|
|
|
|
|
|
|
xCellA1.set(xTextTable->getCellByName("A1"), uno::UNO_QUERY);
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT(xCellA1->getString().endsWith("test1"));
|
|
|
|
}
|
2020-04-03 12:41:05 +02:00
|
|
|
|
2020-05-05 19:27:58 +02:00
|
|
|
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf132603)
|
|
|
|
{
|
|
|
|
mxComponent = loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument");
|
|
|
|
|
|
|
|
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
|
|
|
|
CPPUNIT_ASSERT(pTextDoc);
|
|
|
|
|
|
|
|
uno::Sequence<beans::PropertyValue> aPropertyValues
|
|
|
|
= comphelper::InitPropertySequence({ { "Text", uno::makeAny(OUString("Comment")) } });
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:InsertAnnotation", aPropertyValues);
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:SelectAll", {});
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
// Without the fix in place, it would crash here
|
|
|
|
dispatchCommand(mxComponent, ".uno:Copy", {});
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
OUString aPostits = pTextDoc->getPostIts();
|
|
|
|
std::stringstream aStream(aPostits.toUtf8().getStr());
|
|
|
|
boost::property_tree::ptree aTree;
|
|
|
|
boost::property_tree::read_json(aStream, aTree);
|
|
|
|
for (const boost::property_tree::ptree::value_type& rValue : aTree.get_child("comments"))
|
|
|
|
{
|
|
|
|
const boost::property_tree::ptree& rComment = rValue.second;
|
|
|
|
OString aText(rComment.get<std::string>("text").c_str());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(OString("Comment"), aText);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-04-03 12:41:05 +02:00
|
|
|
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf117601)
|
|
|
|
{
|
|
|
|
mxComponent = loadFromDesktop("private:factory/swriter", "com.sun.star.text.TextDocument");
|
|
|
|
|
|
|
|
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
|
|
|
|
CPPUNIT_ASSERT(pTextDoc);
|
|
|
|
|
|
|
|
uno::Sequence<beans::PropertyValue> aArgs(comphelper::InitPropertySequence(
|
|
|
|
{ { "Rows", uno::makeAny(sal_Int32(5)) }, { "Columns", uno::makeAny(sal_Int32(3)) } }));
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:InsertTable", aArgs);
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
uno::Reference<text::XTextTablesSupplier> xTextTablesSupplier(mxComponent, uno::UNO_QUERY);
|
|
|
|
uno::Reference<container::XIndexAccess> xIndexAccess(xTextTablesSupplier->getTextTables(),
|
|
|
|
uno::UNO_QUERY);
|
|
|
|
uno::Reference<text::XTextTable> xTextTable(xIndexAccess->getByIndex(0), uno::UNO_QUERY);
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(5), xTextTable->getRows()->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(3), xTextTable->getColumns()->getCount());
|
|
|
|
|
|
|
|
uno::Reference<text::XTextRange> xCellB1(xTextTable->getCellByName("B1"), uno::UNO_QUERY);
|
|
|
|
xCellB1->setString("test1");
|
|
|
|
|
|
|
|
uno::Reference<text::XTextRange> xCellB2(xTextTable->getCellByName("B2"), uno::UNO_QUERY);
|
|
|
|
xCellB2->setString("test2");
|
|
|
|
|
|
|
|
//go to middle row
|
|
|
|
pTextDoc->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_UP);
|
|
|
|
pTextDoc->postKeyEvent(LOK_KEYEVENT_KEYINPUT, 0, KEY_RIGHT);
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:EntireColumn", {});
|
|
|
|
dispatchCommand(mxComponent, ".uno:MergeCells", {});
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(5), xTextTable->getRows()->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(3), xTextTable->getColumns()->getCount());
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT(xCellB1->getString().endsWith("test2"));
|
|
|
|
|
|
|
|
dispatchCommand(mxComponent, ".uno:Undo", {});
|
|
|
|
Scheduler::ProcessEventsToIdle();
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(1), xIndexAccess->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(5), xTextTable->getRows()->getCount());
|
|
|
|
CPPUNIT_ASSERT_EQUAL(sal_Int32(3), xTextTable->getColumns()->getCount());
|
|
|
|
|
|
|
|
CPPUNIT_ASSERT(xCellB1->getString().endsWith("test1"));
|
|
|
|
}
|
|
|
|
|
2020-05-06 10:45:10 +03:00
|
|
|
CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testTdf132637_protectTrackChanges)
|
|
|
|
{
|
|
|
|
load(DATA_DIRECTORY, "tdf132637_protectTrackChanges.doc");
|
|
|
|
SwXTextDocument* pTextDoc = dynamic_cast<SwXTextDocument*>(mxComponent.get());
|
|
|
|
CPPUNIT_ASSERT(pTextDoc);
|
|
|
|
|
|
|
|
// The password should only prevent turning off track changes, not open as read-only
|
|
|
|
CPPUNIT_ASSERT(!pTextDoc->GetDocShell()->IsReadOnly());
|
|
|
|
}
|
|
|
|
|
2020-02-27 11:41:24 +01:00
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|