309 lines
14 KiB
C++
309 lines
14 KiB
C++
/* -*- 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>
|
|
#include <docsh.hxx>
|
|
#include <unotxdoc.hxx>
|
|
|
|
#include <IndexingExport.hxx>
|
|
|
|
namespace
|
|
{
|
|
class IndexingExportTest : public SwModelTestBase
|
|
{
|
|
public:
|
|
IndexingExportTest()
|
|
: SwModelTestBase(u"/sw/qa/extras/indexing/data/"_ustr)
|
|
{
|
|
}
|
|
|
|
void testIndexingExport_Paragraphs();
|
|
void testIndexingExport_Images();
|
|
void testIndexingExport_OLE();
|
|
void testIndexingExport_Shapes();
|
|
void testIndexingExport_Tables();
|
|
void testIndexingExport_Sections();
|
|
void testIndexingExport_Fontwork();
|
|
void testIndexingExport_Header_Footer();
|
|
|
|
CPPUNIT_TEST_SUITE(IndexingExportTest);
|
|
CPPUNIT_TEST(testIndexingExport_Paragraphs);
|
|
CPPUNIT_TEST(testIndexingExport_Images);
|
|
CPPUNIT_TEST(testIndexingExport_OLE);
|
|
CPPUNIT_TEST(testIndexingExport_Shapes);
|
|
CPPUNIT_TEST(testIndexingExport_Tables);
|
|
CPPUNIT_TEST(testIndexingExport_Sections);
|
|
CPPUNIT_TEST(testIndexingExport_Fontwork);
|
|
CPPUNIT_TEST(testIndexingExport_Header_Footer);
|
|
CPPUNIT_TEST_SUITE_END();
|
|
};
|
|
|
|
void IndexingExportTest::testIndexingExport_Paragraphs()
|
|
{
|
|
createSwDoc("IndexingExport_VariousParagraphs.odt");
|
|
SwDoc* pDoc = getSwDoc();
|
|
|
|
SvMemoryStream aMemoryStream;
|
|
sw::IndexingExport aIndexingExport(aMemoryStream, pDoc);
|
|
aIndexingExport.runExport();
|
|
aMemoryStream.Seek(0);
|
|
|
|
xmlDocUniquePtr pXmlDoc = parseXmlStream(&aMemoryStream);
|
|
CPPUNIT_ASSERT(pXmlDoc);
|
|
|
|
assertXPath(pXmlDoc, "/indexing");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[1]", u"Title");
|
|
assertXPath(pXmlDoc, "/indexing/paragraph[1]", "node_type", u"writer");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[2]", u"Heading 1");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[3]", u"Heading 2");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[4]", u"Paragraph 1");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[5]", u"Paragraph 2");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[6]", u"Bullet 1");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[7]", u"Bullet 2");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[8]", u"Bullet 3");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[9]", u"Paragraph 3");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[10]", u"Paragraph 4");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[11]", u"List 1");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[12]", u"List 2");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[13]", u"List 3");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[14]", u"Left");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[15]", u"Center");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[16]", u"Right");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[17]", u"Bold Italic Underline Strikeout");
|
|
assertXPath(pXmlDoc, "/indexing/paragraph[17]", "node_type", u"writer");
|
|
}
|
|
|
|
void IndexingExportTest::testIndexingExport_Images()
|
|
{
|
|
createSwDoc("IndexingExport_Images.odt");
|
|
SwDoc* pDoc = getSwDoc();
|
|
|
|
SvMemoryStream aMemoryStream;
|
|
sw::IndexingExport aIndexingExport(aMemoryStream, pDoc);
|
|
aIndexingExport.runExport();
|
|
aMemoryStream.Seek(0);
|
|
|
|
xmlDocUniquePtr pXmlDoc = parseXmlStream(&aMemoryStream);
|
|
CPPUNIT_ASSERT(pXmlDoc);
|
|
|
|
assertXPath(pXmlDoc, "/indexing");
|
|
assertXPath(pXmlDoc, "/indexing/object[1]", "alt", u"Image_NonCaption - Alternative text");
|
|
assertXPath(pXmlDoc, "/indexing/object[1]", "name", u"Image_NonCaption");
|
|
assertXPath(pXmlDoc, "/indexing/object[1]", "object_type", u"graphic");
|
|
assertXPath(pXmlDoc, "/indexing/object[2]", "alt", u"Image_InCaption - Alternative text");
|
|
assertXPath(pXmlDoc, "/indexing/object[2]", "name", u"Image_InCaption");
|
|
assertXPath(pXmlDoc, "/indexing/object[2]", "object_type", u"graphic");
|
|
}
|
|
|
|
void IndexingExportTest::testIndexingExport_OLE()
|
|
{
|
|
createSwDoc("IndexingExport_OLE.odt");
|
|
SwDoc* pDoc = getSwDoc();
|
|
|
|
SvMemoryStream aMemoryStream;
|
|
sw::IndexingExport aIndexingExport(aMemoryStream, pDoc);
|
|
aIndexingExport.runExport();
|
|
aMemoryStream.Seek(0);
|
|
|
|
xmlDocUniquePtr pXmlDoc = parseXmlStream(&aMemoryStream);
|
|
CPPUNIT_ASSERT(pXmlDoc);
|
|
|
|
assertXPath(pXmlDoc, "/indexing");
|
|
assertXPath(pXmlDoc, "/indexing/object[1]", "name", u"Object - Chart");
|
|
assertXPath(pXmlDoc, "/indexing/object[1]", "alt", u"Alt Text");
|
|
assertXPath(pXmlDoc, "/indexing/object[1]", "object_type", u"ole");
|
|
}
|
|
|
|
void IndexingExportTest::testIndexingExport_Shapes()
|
|
{
|
|
createSwDoc("IndexingExport_Shapes.odt");
|
|
SwDoc* pDoc = getSwDoc();
|
|
|
|
SvMemoryStream aMemoryStream;
|
|
sw::IndexingExport aIndexingExport(aMemoryStream, pDoc);
|
|
aIndexingExport.runExport();
|
|
aMemoryStream.Seek(0);
|
|
|
|
xmlDocUniquePtr pXmlDoc = parseXmlStream(&aMemoryStream);
|
|
CPPUNIT_ASSERT(pXmlDoc);
|
|
|
|
assertXPath(pXmlDoc, "/indexing");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[1]", u"Drawing : Just a Diamond");
|
|
assertXPath(pXmlDoc, "/indexing/paragraph[1]", "node_type", u"writer");
|
|
|
|
assertXPath(pXmlDoc, "/indexing/object[1]", "name", u"Circle");
|
|
assertXPath(pXmlDoc, "/indexing/object[1]", "object_type", u"shape");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[2]", u"This is a circle");
|
|
assertXPath(pXmlDoc, "/indexing/paragraph[2]", "node_type", u"common");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[3]", u"This is a second paragraph");
|
|
assertXPath(pXmlDoc, "/indexing/paragraph[3]", "node_type", u"common");
|
|
|
|
assertXPath(pXmlDoc, "/indexing/object[2]", "name", u"Diamond");
|
|
assertXPath(pXmlDoc, "/indexing/object[2]", "object_type", u"shape");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[4]", u"This is a diamond");
|
|
assertXPath(pXmlDoc, "/indexing/paragraph[4]", "node_type", u"common");
|
|
|
|
assertXPath(pXmlDoc, "/indexing/object[3]", "name", u"Text Frame 1");
|
|
assertXPath(pXmlDoc, "/indexing/object[3]", "object_type", u"shape");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[5]", u"This is a TextBox - Para1");
|
|
assertXPath(pXmlDoc, "/indexing/paragraph[5]", "node_type", u"common");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[6]", u"Para2");
|
|
assertXPath(pXmlDoc, "/indexing/paragraph[6]", "node_type", u"common");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[7]", u"Para3");
|
|
assertXPath(pXmlDoc, "/indexing/paragraph[7]", "node_type", u"common");
|
|
}
|
|
|
|
void IndexingExportTest::testIndexingExport_Tables()
|
|
{
|
|
createSwDoc("IndexingExport_Tables.odt");
|
|
SwDoc* pDoc = getSwDoc();
|
|
|
|
SvMemoryStream aMemoryStream;
|
|
sw::IndexingExport aIndexingExport(aMemoryStream, pDoc);
|
|
aIndexingExport.runExport();
|
|
aMemoryStream.Seek(0);
|
|
|
|
xmlDocUniquePtr pXmlDoc = parseXmlStream(&aMemoryStream);
|
|
CPPUNIT_ASSERT(pXmlDoc);
|
|
|
|
assertXPath(pXmlDoc, "/indexing");
|
|
|
|
assertXPath(pXmlDoc, "/indexing/object[1]", "name", u"Table1");
|
|
assertXPath(pXmlDoc, "/indexing/object[1]", "object_type", u"table");
|
|
assertXPath(pXmlDoc, "/indexing/object[1]", "index", u"9");
|
|
// Search paragraph with parent_index = 9
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=9][1]", u"A");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=9][2]", u"B");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=9][3]", u"1");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=9][4]", u"2");
|
|
|
|
assertXPath(pXmlDoc, "/indexing/object[2]", "name", u"Table2");
|
|
assertXPath(pXmlDoc, "/indexing/object[2]", "object_type", u"table");
|
|
assertXPath(pXmlDoc, "/indexing/object[2]", "index", u"24");
|
|
// Search paragraph with parent_index = 24
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=24][1]", u"A");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=24][2]", u"B");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=24][3]", u"C");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=24][4]", u"1");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=24][5]", u"10");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=24][6]", u"100");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=24][7]", u"2");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=24][8]", u"20");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=24][9]", u"200");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=24][10]", u"3");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=24][11]", u"30");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=24][12]", u"300");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=24][13]", u"4");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=24][14]", u"40");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=24][15]", u"400");
|
|
|
|
assertXPath(pXmlDoc, "/indexing/object[3]", "name", u"WeirdTable");
|
|
assertXPath(pXmlDoc, "/indexing/object[3]", "object_type", u"table");
|
|
assertXPath(pXmlDoc, "/indexing/object[3]", "index", u"72");
|
|
// Search paragraph with parent_index = 72
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=72][1]", u"A1");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=72][2]", u"B1");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=72][3]", u"C1");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=72][4]", u"D1");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=72][5]", u"A2B2");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=72][6]", u"C2D2");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=72][7]", u"A3B3C3D3");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=72][8]", u"A4-1");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=72][9]", u"A4-2");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=72][10]", u"B4-1");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=72][11]", u"C4-1");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=72][12]", u"D4-1");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=72][13]", u"D4-2");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=72][14]", u"B4-2");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=72][15]", u"C4-2");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=72][16]", u"A5B5C5");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[@parent_index=72][17]", u"D5");
|
|
}
|
|
|
|
void IndexingExportTest::testIndexingExport_Sections()
|
|
{
|
|
createSwDoc("IndexingExport_Sections.odt");
|
|
SwDoc* pDoc = getSwDoc();
|
|
|
|
SvMemoryStream aMemoryStream;
|
|
sw::IndexingExport aIndexingExport(aMemoryStream, pDoc);
|
|
aIndexingExport.runExport();
|
|
aMemoryStream.Seek(0);
|
|
|
|
xmlDocUniquePtr pXmlDoc = parseXmlStream(&aMemoryStream);
|
|
CPPUNIT_ASSERT(pXmlDoc);
|
|
|
|
assertXPath(pXmlDoc, "/indexing");
|
|
|
|
assertXPath(pXmlDoc, "/indexing/object[1]", "name", u"Section1");
|
|
assertXPath(pXmlDoc, "/indexing/object[1]", "object_type", u"section");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[1]", u"This is a paragraph in a Section1");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[2]", u"Section1 - Paragraph 2");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[3]", u"Section1 - Paragraph 3");
|
|
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[4]", u"This is a paragraph outside sections");
|
|
|
|
assertXPath(pXmlDoc, "/indexing/object[2]", "name", u"Section2");
|
|
assertXPath(pXmlDoc, "/indexing/object[2]", "object_type", u"section");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[5]", u"Section2 - Paragraph 1");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[6]", u"Section2 - Paragraph 2");
|
|
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[7]", u"This is a paragraph outside sections");
|
|
}
|
|
|
|
void IndexingExportTest::testIndexingExport_Fontwork()
|
|
{
|
|
createSwDoc("IndexingExport_Fontwork.odt");
|
|
SwDoc* pDoc = getSwDoc();
|
|
|
|
SvMemoryStream aMemoryStream;
|
|
sw::IndexingExport aIndexingExport(aMemoryStream, pDoc);
|
|
aIndexingExport.runExport();
|
|
aMemoryStream.Seek(0);
|
|
|
|
xmlDocUniquePtr pXmlDoc = parseXmlStream(&aMemoryStream);
|
|
CPPUNIT_ASSERT(pXmlDoc);
|
|
|
|
assertXPath(pXmlDoc, "/indexing");
|
|
|
|
assertXPath(pXmlDoc, "/indexing/object[1]", "name", u"Gray");
|
|
assertXPath(pXmlDoc, "/indexing/object[1]", "object_type", u"shape");
|
|
|
|
assertXPath(pXmlDoc, "/indexing/paragraph[1]", "object_name", u"Gray");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[1]", u"Fontwork Text 1");
|
|
assertXPath(pXmlDoc, "/indexing/paragraph[2]", "object_name", u"Gray");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[2]", u"Fontwork Text 2");
|
|
}
|
|
|
|
void IndexingExportTest::testIndexingExport_Header_Footer()
|
|
{
|
|
createSwDoc("IndexingExport_Header_Footer.odt");
|
|
SwDoc* pDoc = getSwDoc();
|
|
|
|
SvMemoryStream aMemoryStream;
|
|
sw::IndexingExport aIndexingExport(aMemoryStream, pDoc);
|
|
aIndexingExport.runExport();
|
|
aMemoryStream.Seek(0);
|
|
|
|
xmlDocUniquePtr pXmlDoc = parseXmlStream(&aMemoryStream);
|
|
CPPUNIT_ASSERT(pXmlDoc);
|
|
|
|
assertXPath(pXmlDoc, "/indexing");
|
|
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[1]", u"Header Text");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[2]", u"Footer Text");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[3]", u"Paragraph 1");
|
|
assertXPathContent(pXmlDoc, "/indexing/paragraph[4]", u"Paragraph 2");
|
|
}
|
|
|
|
} // end of anonymous namespace
|
|
CPPUNIT_TEST_SUITE_REGISTRATION(IndexingExportTest);
|
|
CPPUNIT_PLUGIN_IMPLEMENT();
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|