2016-06-30 17:12:23 +02: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 <officecfg/Office/Common.hxx>
# include "sdmodeltestbase.hxx"
# include "Outliner.hxx"
# include <comphelper/propertysequence.hxx>
# include <svl/stritem.hxx>
# include <editeng/editobj.hxx>
# include <editeng/outlobj.hxx>
# include <editeng/ulspitem.hxx>
# include <editeng/fhgtitem.hxx>
# include <editeng/escapementitem.hxx>
# include <editeng/colritem.hxx>
# include <editeng/fontitem.hxx>
# include <editeng/wghtitem.hxx>
# include <editeng/numitem.hxx>
# include <editeng/lrspitem.hxx>
# include <editeng/postitem.hxx>
# include <editeng/bulletitem.hxx>
# include <oox/drawingml/drawingmltypes.hxx>
# include <rsc/rscsfx.hxx>
# include <svx/svdoutl.hxx>
# include <svx/svdotext.hxx>
# include <svx/svdoashp.hxx>
# include <svx/svdograf.hxx>
# include <svx/svdogrp.hxx>
# include <svx/svdomedia.hxx>
# include <svx/svdoole2.hxx>
# include <svx/xflclit.hxx>
# include <animations/animationnodehelper.hxx>
# include <unotools/mediadescriptor.hxx>
# include <rtl/ustring.hxx>
# include <vcl/opengl/OpenGLWrapper.hxx>
# include <com/sun/star/drawing/XDrawPage.hpp>
# include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
# include <com/sun/star/animations/XAnimationNodeSupplier.hpp>
# include <com/sun/star/animations/XAnimationNode.hpp>
# include <com/sun/star/animations/XAnimate.hpp>
# include <com/sun/star/animations/TransitionType.hpp>
# include <com/sun/star/animations/TransitionSubType.hpp>
# include <com/sun/star/beans/XPropertySet.hpp>
# include <com/sun/star/chart/XChartDocument.hpp>
# include <com/sun/star/chart2/XChartDocument.hpp>
# include <com/sun/star/chart2/XDataSeriesContainer.hpp>
# include <com/sun/star/chart2/XCoordinateSystemContainer.hpp>
# include <com/sun/star/chart2/XChartTypeContainer.hpp>
# include <com/sun/star/chart2/data/XLabeledDataSequence.hpp>
# include <com/sun/star/chart2/data/XDataSequence.hpp>
# include <com/sun/star/chart2/data/XNumericalDataSequence.hpp>
# include <com/sun/star/awt/XBitmap.hpp>
# include <com/sun/star/awt/FontDescriptor.hpp>
# include <com/sun/star/graphic/XGraphic.hpp>
# include <com/sun/star/frame/XStorable.hpp>
# include <com/sun/star/drawing/EnhancedCustomShapeParameterPair.hpp>
# include <com/sun/star/drawing/FillStyle.hpp>
# include <com/sun/star/text/WritingMode2.hpp>
# include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
# include <com/sun/star/table/BorderLine2.hpp>
# include <com/sun/star/table/XTable.hpp>
# include <com/sun/star/table/XMergeableCell.hpp>
# include <svx/svdotable.hxx>
# include <config_features.h>
# include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
using namespace css ;
using namespace css : : animations ;
2016-07-25 11:47:25 +02:00
class SdOOXMLExportTest1 : public SdModelTestBaseXML
2016-06-30 17:12:23 +02:00
{
public :
2016-06-30 20:52:34 +02:00
void testFdo90607 ( ) ;
2016-06-30 17:12:23 +02:00
void testBnc870233_1 ( ) ;
void testBnc870233_2 ( ) ;
void testN828390_4 ( ) ;
void testN828390_5 ( ) ;
void testFdo71961 ( ) ;
void testN828390 ( ) ;
void testBnc880763 ( ) ;
void testBnc862510_5 ( ) ;
void testBnc822347_EmptyBullet ( ) ;
void testFdo83751 ( ) ;
void testFdo79731 ( ) ;
void testTableCellFillProperties ( ) ;
void testBulletStartNumber ( ) ;
void testLineStyle ( ) ;
void testCellLeftAndRightMargin ( ) ;
void testRightToLeftParaghraph ( ) ;
void testTextboxWithHyperlink ( ) ;
void testMergedCells ( ) ;
void testTableCellBorder ( ) ;
void testBulletColor ( ) ;
void testBulletCharAndFont ( ) ;
void testBulletMarginAndIndentation ( ) ;
void testParaMarginAndindentation ( ) ;
2016-06-30 20:52:34 +02:00
CPPUNIT_TEST_SUITE ( SdOOXMLExportTest1 ) ;
2016-06-30 17:12:23 +02:00
CPPUNIT_TEST ( testFdo90607 ) ;
CPPUNIT_TEST ( testBnc870233_1 ) ;
CPPUNIT_TEST ( testBnc870233_2 ) ;
CPPUNIT_TEST ( testN828390_4 ) ;
CPPUNIT_TEST ( testN828390_5 ) ;
CPPUNIT_TEST ( testFdo71961 ) ;
CPPUNIT_TEST ( testN828390 ) ;
CPPUNIT_TEST ( testBnc880763 ) ;
CPPUNIT_TEST ( testBnc862510_5 ) ;
CPPUNIT_TEST ( testBnc822347_EmptyBullet ) ;
CPPUNIT_TEST ( testFdo83751 ) ;
CPPUNIT_TEST ( testFdo79731 ) ;
CPPUNIT_TEST ( testTableCellFillProperties ) ;
CPPUNIT_TEST ( testBulletStartNumber ) ;
CPPUNIT_TEST ( testLineStyle ) ;
CPPUNIT_TEST ( testCellLeftAndRightMargin ) ;
CPPUNIT_TEST ( testRightToLeftParaghraph ) ;
CPPUNIT_TEST ( testTextboxWithHyperlink ) ;
CPPUNIT_TEST ( testMergedCells ) ;
CPPUNIT_TEST ( testTableCellBorder ) ;
CPPUNIT_TEST ( testBulletColor ) ;
CPPUNIT_TEST ( testBulletCharAndFont ) ;
CPPUNIT_TEST ( testBulletMarginAndIndentation ) ;
CPPUNIT_TEST ( testParaMarginAndindentation ) ;
CPPUNIT_TEST_SUITE_END ( ) ;
virtual void registerNamespaces ( xmlXPathContextPtr & pXmlXPathCtx ) override
{
struct { char const * pPrefix ; char const * pURI ; } namespaces [ ] =
{
// OOXML
{ " ContentType " , " http://schemas.openxmlformats.org/package/2006/content-types " } ,
{ " rels " , " http://schemas.openxmlformats.org/package/2006/relationships " } ,
{ " mc " , " http://schemas.openxmlformats.org/markup-compatibility/2006 " } ,
{ " v " , " urn:schemas-microsoft-com:vml " } ,
{ " a " , " http://schemas.openxmlformats.org/drawingml/2006/main " } ,
{ " c " , " http://schemas.openxmlformats.org/drawingml/2006/chart " } ,
{ " m " , " http://schemas.openxmlformats.org/officeDocument/2006/math " } ,
{ " pic " , " http://schemas.openxmlformats.org/drawingml/2006/picture " } ,
{ " wp " , " http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing " } ,
{ " p " , " http://schemas.openxmlformats.org/presentationml/2006/main " } ,
{ " w " , " http://schemas.openxmlformats.org/wordprocessingml/2006/main " } ,
{ " a14 " , " http://schemas.microsoft.com/office/drawing/2010/main " } ,
{ " wps " , " http://schemas.microsoft.com/office/word/2010/wordprocessingShape " } ,
{ " wpg " , " http://schemas.microsoft.com/office/word/2010/wordprocessingGroup " } ,
} ;
for ( size_t i = 0 ; i < SAL_N_ELEMENTS ( namespaces ) ; + + i )
{
xmlXPathRegisterNs ( pXmlXPathCtx ,
reinterpret_cast < xmlChar const * > ( namespaces [ i ] . pPrefix ) ,
reinterpret_cast < xmlChar const * > ( namespaces [ i ] . pURI ) ) ;
}
}
} ;
namespace {
template < typename ItemValue , typename ItemType >
void checkFontAttributes ( const SdrTextObj * pObj , ItemValue nVal )
{
CPPUNIT_ASSERT_MESSAGE ( " no object " , pObj ! = nullptr ) ;
const EditTextObject & aEdit = pObj - > GetOutlinerParaObject ( ) - > GetTextObject ( ) ;
std : : vector < EECharAttrib > rLst ;
aEdit . GetCharAttribs ( 0 , rLst ) ;
for ( std : : vector < EECharAttrib > : : reverse_iterator it = rLst . rbegin ( ) ; it ! = rLst . rend ( ) ; + + it )
{
const ItemType * pAttrib = dynamic_cast < const ItemType * > ( ( * it ) . pAttr ) ;
if ( pAttrib )
{
CPPUNIT_ASSERT_EQUAL ( nVal , static_cast < ItemValue > ( pAttrib - > GetValue ( ) ) ) ;
}
}
}
}
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testBnc870233_1 ( )
2016-06-30 17:12:23 +02:00
{
: : sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " /sd/qa/unit/data/pptx/bnc870233_1.pptx " ) , PPTX ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
const SdrPage * pPage = GetPage ( 1 , xDocShRef ) ;
// The problem was all shapes had the same font (the last parsed font attributes overwrote all previous ones)
// First shape has red, bold font
{
const SdrTextObj * pObj = dynamic_cast < SdrTextObj * > ( pPage - > GetObj ( 0 ) ) ;
checkFontAttributes < Color , SvxColorItem > ( pObj , Color ( 0xff0000 ) ) ;
checkFontAttributes < FontWeight , SvxWeightItem > ( pObj , WEIGHT_BOLD ) ;
}
// Second shape has blue, italic font
{
const SdrTextObj * pObj = dynamic_cast < SdrTextObj * > ( pPage - > GetObj ( 1 ) ) ;
checkFontAttributes < Color , SvxColorItem > ( pObj , Color ( 0x0000ff ) ) ;
checkFontAttributes < FontItalic , SvxPostureItem > ( pObj , ITALIC_NORMAL ) ;
}
xDocShRef - > DoClose ( ) ;
}
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testBnc870233_2 ( )
2016-06-30 17:12:23 +02:00
{
: : sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " /sd/qa/unit/data/pptx/bnc870233_2.pptx " ) , PPTX ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
const SdrPage * pPage = GetPage ( 1 , xDocShRef ) ;
// The problem was in some SmartArts font color was wrong
// First smart art has blue font color (direct formatting)
{
const SdrTextObj * pObj = dynamic_cast < SdrTextObj * > ( pPage - > GetObj ( 0 ) ) ;
checkFontAttributes < Color , SvxColorItem > ( pObj , Color ( 0x0000ff ) ) ;
}
// Second smart art has "dk2" font color (style)
{
const SdrTextObj * pObj = dynamic_cast < SdrTextObj * > ( pPage - > GetObj ( 1 ) ) ;
checkFontAttributes < Color , SvxColorItem > ( pObj , Color ( 0x1F497D ) ) ;
}
// Third smart art has white font color (style)
{
const SdrTextObj * pObj = dynamic_cast < SdrTextObj * > ( pPage - > GetObj ( 2 ) ) ;
checkFontAttributes < Color , SvxColorItem > ( pObj , Color ( 0xffffff ) ) ;
}
xDocShRef - > DoClose ( ) ;
}
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testN828390_4 ( )
2016-06-30 17:12:23 +02:00
{
bool bPassed = false ;
: : sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " /sd/qa/unit/data/n828390_4.odp " ) , ODP ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
const SdrPage * pPage = GetPage ( 1 , xDocShRef ) ;
{
std : : vector < EECharAttrib > rLst ;
SdrObject * pObj = pPage - > GetObj ( 0 ) ;
SdrTextObj * pTxtObj = dynamic_cast < SdrTextObj * > ( pObj ) ;
CPPUNIT_ASSERT ( pTxtObj ) ;
const EditTextObject & aEdit = pTxtObj - > GetOutlinerParaObject ( ) - > GetTextObject ( ) ;
2017-02-15 19:21:06 +02:00
aEdit . GetCharAttribs ( 0 , rLst ) ;
2016-06-30 17:12:23 +02:00
for ( std : : vector < EECharAttrib > : : reverse_iterator it = rLst . rbegin ( ) ; it ! = rLst . rend ( ) ; + + it )
{
const SvxFontHeightItem * pFontHeight = dynamic_cast < const SvxFontHeightItem * > ( ( * it ) . pAttr ) ;
2017-02-15 19:21:06 +02:00
if ( pFontHeight & & ( * it ) . nStart = = 18 )
2016-10-28 09:04:39 +02:00
CPPUNIT_ASSERT_EQUAL_MESSAGE ( " Font height is wrong " , static_cast < sal_uInt32 > ( 1129 ) , pFontHeight - > GetHeight ( ) ) ;
2016-06-30 17:12:23 +02:00
const SvxFontItem * pFont = dynamic_cast < const SvxFontItem * > ( ( * it ) . pAttr ) ;
if ( pFont )
{
2016-10-28 09:04:39 +02:00
CPPUNIT_ASSERT_EQUAL_MESSAGE ( " Font is wrong " , OUString ( " Arial " ) , pFont - > GetFamilyName ( ) ) ;
2016-06-30 17:12:23 +02:00
bPassed = true ;
}
const SvxWeightItem * pWeight = dynamic_cast < const SvxWeightItem * > ( ( * it ) . pAttr ) ;
2017-02-15 19:21:06 +02:00
if ( pWeight & & ( * it ) . nStart = = 18 )
2016-10-28 09:04:39 +02:00
CPPUNIT_ASSERT_EQUAL_MESSAGE ( " Font Weight is wrong " , WEIGHT_BOLD , pWeight - > GetWeight ( ) ) ;
2016-06-30 17:12:23 +02:00
}
}
CPPUNIT_ASSERT ( bPassed ) ;
xDocShRef - > DoClose ( ) ;
}
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testN828390_5 ( )
2016-06-30 17:12:23 +02:00
{
: : sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " /sd/qa/unit/data/n828390_5.odp " ) , ODP ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
const SdrPage * pPage = GetPage ( 1 , xDocShRef ) ;
{
SdrObject * pObj = pPage - > GetObj ( 0 ) ;
SdrTextObj * pTxtObj = dynamic_cast < SdrTextObj * > ( pObj ) ;
CPPUNIT_ASSERT ( pTxtObj ) ;
const EditTextObject & aEdit = pTxtObj - > GetOutlinerParaObject ( ) - > GetTextObject ( ) ;
const SvxNumBulletItem * pNumFmt = dynamic_cast < const SvxNumBulletItem * > ( aEdit . GetPool ( ) - > GetItem2 ( EE_PARA_NUMBULLET , 5 ) ) ;
CPPUNIT_ASSERT ( pNumFmt ) ;
CPPUNIT_ASSERT_EQUAL_MESSAGE ( " Bullet's relative size is wrong! " , pNumFmt - > GetNumRule ( ) - > GetLevel ( 1 ) . GetBulletRelSize ( ) , sal_uInt16 ( 75 ) ) ; // != 25
}
xDocShRef - > DoClose ( ) ;
}
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testFdo71961 ( )
2016-06-30 17:12:23 +02:00
{
: : sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " /sd/qa/unit/data/fdo71961.odp " ) , ODP ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
const SdrPage * pPage = GetPage ( 1 , xDocShRef ) ;
// Export to .pptx changes all text frames to custom shape objects, which obey TextWordWrap property
// (which is false for text frames otherwise and is ignored). Check that frames that should wrap still do.
SdrObjCustomShape * pTxtObj = dynamic_cast < SdrObjCustomShape * > ( pPage - > GetObj ( 1 ) ) ;
CPPUNIT_ASSERT_MESSAGE ( " no text object " , pTxtObj ! = nullptr ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " Text to be always wrapped " ) , pTxtObj - > GetOutlinerParaObject ( ) - > GetTextObject ( ) . GetText ( 0 ) ) ;
CPPUNIT_ASSERT_EQUAL ( true , ( static_cast < const SdrOnOffItem & > ( pTxtObj - > GetMergedItem ( SDRATTR_TEXT_WORDWRAP ) ) ) . GetValue ( ) ) ;
pTxtObj = dynamic_cast < SdrObjCustomShape * > ( pPage - > GetObj ( 2 ) ) ;
CPPUNIT_ASSERT_MESSAGE ( " no text object " , pTxtObj ! = nullptr ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " Custom shape non-wrapped text " ) , pTxtObj - > GetOutlinerParaObject ( ) - > GetTextObject ( ) . GetText ( 0 ) ) ;
CPPUNIT_ASSERT_EQUAL ( false , ( static_cast < const SdrOnOffItem & > ( pTxtObj - > GetMergedItem ( SDRATTR_TEXT_WORDWRAP ) ) ) . GetValue ( ) ) ;
pTxtObj = dynamic_cast < SdrObjCustomShape * > ( pPage - > GetObj ( 3 ) ) ;
CPPUNIT_ASSERT_MESSAGE ( " no text object " , pTxtObj ! = nullptr ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " Custom shape wrapped text " ) , pTxtObj - > GetOutlinerParaObject ( ) - > GetTextObject ( ) . GetText ( 0 ) ) ;
CPPUNIT_ASSERT_EQUAL ( true , ( static_cast < const SdrOnOffItem & > ( pTxtObj - > GetMergedItem ( SDRATTR_TEXT_WORDWRAP ) ) ) . GetValue ( ) ) ;
xDocShRef - > DoClose ( ) ;
}
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testN828390 ( )
2016-06-30 17:12:23 +02:00
{
bool bPassed = false ;
: : sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " /sd/qa/unit/data/pptx/n828390.pptx " ) , PPTX ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
const SdrPage * pPage = GetPage ( 1 , xDocShRef ) ;
{
std : : vector < EECharAttrib > rLst ;
// Get the object
SdrObject * pObj = pPage - > GetObj ( 0 ) ;
SdrTextObj * pTxtObj = dynamic_cast < SdrTextObj * > ( pObj ) ;
CPPUNIT_ASSERT ( pTxtObj ) ;
const EditTextObject & aEdit = pTxtObj - > GetOutlinerParaObject ( ) - > GetTextObject ( ) ;
aEdit . GetCharAttribs ( 0 , rLst ) ;
for ( std : : vector < EECharAttrib > : : reverse_iterator it = rLst . rbegin ( ) ; it ! = rLst . rend ( ) ; + + it )
{
const SvxEscapementItem * pFontEscapement = dynamic_cast < const SvxEscapementItem * > ( ( * it ) . pAttr ) ;
if ( pFontEscapement )
{
if ( pFontEscapement - > GetEsc ( ) = = - 25 )
{
bPassed = true ;
break ;
}
}
}
}
CPPUNIT_ASSERT_MESSAGE ( " Subscript not exported properly " , bPassed ) ;
xDocShRef - > DoClose ( ) ;
}
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testBnc880763 ( )
2016-06-30 17:12:23 +02:00
{
: : sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " /sd/qa/unit/data/pptx/bnc880763.pptx " ) , PPTX ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
const SdrPage * pPage = GetPage ( 1 , xDocShRef ) ;
// Check z-order of the two shapes, use background color to identify them
// First object in the background has blue background color
const SdrObject * pObj = dynamic_cast < SdrObject * > ( pPage - > GetObj ( 0 ) ) ;
CPPUNIT_ASSERT_MESSAGE ( " no object " , pObj ! = nullptr ) ;
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 0x0000ff ) , ( static_cast < const XColorItem & > ( pObj - > GetMergedItem ( XATTR_FILLCOLOR ) ) ) . GetColorValue ( ) . GetColor ( ) ) ;
// Second object at the front has green background color
pObj = dynamic_cast < SdrObject * > ( pPage - > GetObj ( 1 ) ) ;
CPPUNIT_ASSERT_MESSAGE ( " no object " , pObj ! = nullptr ) ;
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 0x00ff00 ) , ( static_cast < const XColorItem & > ( pObj - > GetMergedItem ( XATTR_FILLCOLOR ) ) ) . GetColorValue ( ) . GetColor ( ) ) ;
xDocShRef - > DoClose ( ) ;
}
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testBnc862510_5 ( )
2016-06-30 17:12:23 +02:00
{
: : sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " /sd/qa/unit/data/pptx/bnc862510_5.pptx " ) , PPTX ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
const SdrPage * pPage = GetPage ( 1 , xDocShRef ) ;
// Same as testBnc870237, but here we check the horizontal spacing
const SdrObject * pObj = dynamic_cast < SdrObject * > ( pPage - > GetObj ( 1 ) ) ;
CPPUNIT_ASSERT_MESSAGE ( " no object " , pObj ! = nullptr ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0 ) , ( static_cast < const SdrMetricItem & > ( pObj - > GetMergedItem ( SDRATTR_TEXT_UPPERDIST ) ) ) . GetValue ( ) ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0 ) , ( static_cast < const SdrMetricItem & > ( pObj - > GetMergedItem ( SDRATTR_TEXT_LOWERDIST ) ) ) . GetValue ( ) ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 7510 ) , ( static_cast < const SdrMetricItem & > ( pObj - > GetMergedItem ( SDRATTR_TEXT_RIGHTDIST ) ) ) . GetValue ( ) ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0 ) , ( static_cast < const SdrMetricItem & > ( pObj - > GetMergedItem ( SDRATTR_TEXT_LEFTDIST ) ) ) . GetValue ( ) ) ;
xDocShRef - > DoClose ( ) ;
}
// In numbering a bullet could be defined as empty (no character).
// When exporting to OOXML make sure that the bullet is ignored and
// not written into the file.
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testBnc822347_EmptyBullet ( )
2016-06-30 17:12:23 +02:00
{
sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " /sd/qa/unit/data/bnc822347_EmptyBullet.odp " ) , ODP ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
SdDrawDocument * pDoc = xDocShRef - > GetDoc ( ) ;
SdrOutliner * pOutliner = pDoc - > GetInternalOutliner ( ) ;
const SdrPage * pPage = pDoc - > GetPage ( 1 ) ;
SdrObject * pObject = pPage - > GetObj ( 0 ) ;
SdrTextObj * pTextObject = dynamic_cast < SdrTextObj * > ( pObject ) ;
CPPUNIT_ASSERT ( pTextObject ) ;
OutlinerParaObject * pOutlinerParagraphObject = pTextObject - > GetOutlinerParaObject ( ) ;
const EditTextObject & aEdit = pOutlinerParagraphObject - > GetTextObject ( ) ;
OUString sText = aEdit . GetText ( 0 ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " M3 Feature Test " ) , sText ) ;
pOutliner - > SetText ( * pOutlinerParagraphObject ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 1 ) , pOutliner - > GetParagraphCount ( ) ) ;
const sal_Int16 nDepth = pOutliner - > GetDepth ( 0 ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int16 ( - 1 ) , nDepth ) ; // depth >= 0 means that the paragraph has bullets enabled
xDocShRef - > DoClose ( ) ;
}
//Bullets not having any text following them are not getting exported to pptx correctly.
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testFdo90607 ( )
2016-06-30 17:12:23 +02:00
{
sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " /sd/qa/unit/data/fdo90607.pptx " ) , PPTX ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
const SdrPage * pPage = GetPage ( 1 , xDocShRef ) ;
SdrTextObj * pTxtObj = dynamic_cast < SdrTextObj * > ( pPage - > GetObj ( 1 ) ) ;
CPPUNIT_ASSERT_MESSAGE ( " no text object " , pTxtObj ! = nullptr ) ;
OutlinerParaObject * pOutlinerParagraphObject = pTxtObj - > GetOutlinerParaObject ( ) ;
const sal_Int16 nDepth = pOutlinerParagraphObject - > GetDepth ( 0 ) ;
CPPUNIT_ASSERT_MESSAGE ( " not equal " , nDepth ! = - 1 ) ;
xDocShRef - > DoClose ( ) ;
}
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testFdo83751 ( )
2016-06-30 17:12:23 +02:00
{
: : sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " /sd/qa/unit/data/pptx/fdo83751.pptx " ) , PPTX ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
SdDrawDocument * pDoc = xDocShRef - > GetDoc ( ) ;
CPPUNIT_ASSERT_MESSAGE ( " no document " , pDoc ! = nullptr ) ;
uno : : Reference < document : : XDocumentPropertiesSupplier > xDocumentPropertiesSupplier ( xDocShRef - > GetModel ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < document : : XDocumentProperties > xProps ( xDocumentPropertiesSupplier - > getDocumentProperties ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < beans : : XPropertySet > xUDProps ( xProps - > getUserDefinedProperties ( ) , uno : : UNO_QUERY ) ;
OUString propValue ;
xUDProps - > getPropertyValue ( " Testing " ) > > = propValue ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " Document " ) , propValue ) ;
xDocShRef - > DoClose ( ) ;
}
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testFdo79731 ( )
2016-06-30 17:12:23 +02:00
{
: : sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " /sd/qa/unit/data/fdo79731.odp " ) , ODP ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
SdDrawDocument * pDoc = xDocShRef - > GetDoc ( ) ;
CPPUNIT_ASSERT ( pDoc ) ;
xDocShRef - > DoClose ( ) ;
}
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testTableCellFillProperties ( )
2016-06-30 17:12:23 +02:00
{
std : : shared_ptr < comphelper : : ConfigurationChanges > batch ( comphelper : : ConfigurationChanges : : create ( ) ) ;
officecfg : : Office : : Common : : Cache : : GraphicManager : : TotalCacheSize : : set ( sal_Int32 ( 1 ) , batch ) ;
batch - > commit ( ) ;
// Load the original file
: : sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " /sd/qa/unit/data/odp/Table_with_Cell_Fill.odp " ) , ODP ) ;
// Export the document and import again for a check
uno : : Reference < lang : : XComponent > xComponent ( xDocShRef - > GetModel ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < frame : : XStorable > xStorable ( xComponent , uno : : UNO_QUERY ) ;
utl : : MediaDescriptor aMediaDescriptor ;
aMediaDescriptor [ " FilterName " ] < < = OStringToOUString ( OString ( aFileFormats [ PPTX ] . pFilterName ) , RTL_TEXTENCODING_UTF8 ) ;
utl : : TempFile aTempFile ;
aTempFile . EnableKillingFile ( ) ;
xStorable - > storeToURL ( aTempFile . GetURL ( ) , aMediaDescriptor . getAsConstPropertyValueList ( ) ) ;
xComponent . set ( xStorable , uno : : UNO_QUERY ) ;
xComponent - > dispose ( ) ;
xDocShRef = loadURL ( aTempFile . GetURL ( ) , PPTX ) ;
const SdrPage * pPage = GetPage ( 1 , xDocShRef ) ;
sdr : : table : : SdrTableObj * pTableObj = dynamic_cast < sdr : : table : : SdrTableObj * > ( pPage - > GetObj ( 0 ) ) ;
CPPUNIT_ASSERT ( pTableObj ) ;
uno : : Reference < table : : XCellRange > xTable ( pTableObj - > getTable ( ) , uno : : UNO_QUERY_THROW ) ;
uno : : Reference < beans : : XPropertySet > xCell ;
// Test Solid fill color
sal_Int32 nColor ;
xCell . set ( xTable - > getCellByPosition ( 0 , 0 ) , uno : : UNO_QUERY_THROW ) ;
xCell - > getPropertyValue ( " FillColor " ) > > = nColor ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 6750207 ) , nColor ) ;
// Test Picture fill type for cell
drawing : : FillStyle aFillStyle ( drawing : : FillStyle_NONE ) ;
xCell . set ( xTable - > getCellByPosition ( 0 , 1 ) , uno : : UNO_QUERY_THROW ) ;
xCell - > getPropertyValue ( " FillStyle " ) > > = aFillStyle ;
2017-03-31 12:21:44 +02:00
CPPUNIT_ASSERT_EQUAL ( ( int ) drawing : : FillStyle_BITMAP , ( int ) aFillStyle ) ;
2016-06-30 17:12:23 +02:00
// Test Gradient fill type for cell
xCell . set ( xTable - > getCellByPosition ( 1 , 0 ) , uno : : UNO_QUERY_THROW ) ;
xCell - > getPropertyValue ( " FillStyle " ) > > = aFillStyle ;
2017-03-31 12:21:44 +02:00
CPPUNIT_ASSERT_EQUAL ( ( int ) drawing : : FillStyle_GRADIENT , ( int ) aFillStyle ) ;
2016-06-30 17:12:23 +02:00
xDocShRef - > DoClose ( ) ;
}
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testBulletStartNumber ( )
2016-06-30 17:12:23 +02:00
{
: : sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " /sd/qa/unit/data/pptx/n90255.pptx " ) , PPTX ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
const SdrPage * pPage = GetPage ( 1 , xDocShRef ) ;
SdrTextObj * pTxtObj = dynamic_cast < SdrTextObj * > ( pPage - > GetObj ( 0 ) ) ;
CPPUNIT_ASSERT_MESSAGE ( " no text object " , pTxtObj ! = nullptr ) ;
const EditTextObject & aEdit = pTxtObj - > GetOutlinerParaObject ( ) - > GetTextObject ( ) ;
const SvxNumBulletItem * pNumFmt = dynamic_cast < const SvxNumBulletItem * > ( aEdit . GetParaAttribs ( 0 ) . GetItem ( EE_PARA_NUMBULLET ) ) ;
CPPUNIT_ASSERT ( pNumFmt ) ;
CPPUNIT_ASSERT_EQUAL_MESSAGE ( " Bullet's start number is wrong! " , sal_Int16 ( pNumFmt - > GetNumRule ( ) - > GetLevel ( 0 ) . GetStart ( ) ) , sal_Int16 ( 3 ) ) ;
xDocShRef - > DoClose ( ) ;
}
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testLineStyle ( )
2016-06-30 17:12:23 +02:00
{
: : sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " sd/qa/unit/data/pptx/lineStyle.pptx " ) , PPTX ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
const SdrPage * pPage = GetPage ( 1 , xDocShRef ) ;
SdrObject const * pShape = pPage - > GetObj ( 0 ) ;
CPPUNIT_ASSERT_MESSAGE ( " no shape " , pShape ! = nullptr ) ;
const XLineStyleItem & rStyleItem = dynamic_cast < const XLineStyleItem & > (
pShape - > GetMergedItem ( XATTR_LINESTYLE ) ) ;
2017-03-31 12:21:44 +02:00
CPPUNIT_ASSERT_EQUAL_MESSAGE ( " Wrong style " , ( int ) drawing : : LineStyle_SOLID , ( int ) rStyleItem . GetValue ( ) ) ;
2016-06-30 17:12:23 +02:00
xDocShRef - > DoClose ( ) ;
}
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testRightToLeftParaghraph ( )
2016-06-30 17:12:23 +02:00
{
: : sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " /sd/qa/unit/data/pptx/rightToLeftParagraph.pptx " ) , PPTX ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
uno : : Reference < beans : : XPropertySet > xShape ( getShapeFromPage ( 0 , 0 , xDocShRef ) ) ;
// Get first paragraph
uno : : Reference < text : : XTextRange > const xParagraph ( getParagraphFromShape ( 0 , xShape ) ) ;
uno : : Reference < beans : : XPropertySet > xPropSet ( xParagraph , uno : : UNO_QUERY_THROW ) ;
sal_Int16 nWritingMode = 0 ;
xPropSet - > getPropertyValue ( " WritingMode " ) > > = nWritingMode ;
CPPUNIT_ASSERT_EQUAL_MESSAGE ( " Wrong paragraph WritingMode " , text : : WritingMode2 : : RL_TB , nWritingMode ) ;
xDocShRef - > DoClose ( ) ;
}
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testTextboxWithHyperlink ( )
2016-06-30 17:12:23 +02:00
{
: : sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " /sd/qa/unit/data/pptx/hyperlinktest.pptx " ) , PPTX ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
uno : : Reference < beans : : XPropertySet > xShape ( getShapeFromPage ( 0 , 0 , xDocShRef ) ) ;
// Get first paragraph
uno : : Reference < text : : XTextRange > const xParagraph ( getParagraphFromShape ( 0 , xShape ) ) ;
// first chunk of text
uno : : Reference < text : : XTextRange > xRun ( getRunFromParagraph ( 0 , xParagraph ) ) ;
uno : : Reference < beans : : XPropertySet > xPropSet ( xRun , uno : : UNO_QUERY_THROW ) ;
uno : : Reference < text : : XTextField > xField ;
xPropSet - > getPropertyValue ( " TextField " ) > > = xField ;
CPPUNIT_ASSERT_MESSAGE ( " Where is the text field? " , xField . is ( ) ) ;
xPropSet . set ( xField , uno : : UNO_QUERY ) ;
OUString aURL ;
xPropSet - > getPropertyValue ( " URL " ) > > = aURL ;
CPPUNIT_ASSERT_EQUAL_MESSAGE ( " URLs don't match " , OUString ( " http://www.xkcd.com/ " ) , aURL ) ;
xDocShRef - > DoClose ( ) ;
}
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testBulletColor ( )
2016-06-30 17:12:23 +02:00
{
: : sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " /sd/qa/unit/data/pptx/bulletColor.pptx " ) , PPTX ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
const SdrPage * pPage = GetPage ( 1 , xDocShRef ) ;
SdrTextObj * pTxtObj = dynamic_cast < SdrTextObj * > ( pPage - > GetObj ( 0 ) ) ;
CPPUNIT_ASSERT_MESSAGE ( " no text object " , pTxtObj ! = nullptr ) ;
const EditTextObject & aEdit = pTxtObj - > GetOutlinerParaObject ( ) - > GetTextObject ( ) ;
const SvxNumBulletItem * pNumFmt = dynamic_cast < const SvxNumBulletItem * > ( aEdit . GetParaAttribs ( 0 ) . GetItem ( EE_PARA_NUMBULLET ) ) ;
CPPUNIT_ASSERT ( pNumFmt ) ;
CPPUNIT_ASSERT_EQUAL_MESSAGE ( " Bullet's color is wrong! " , sal_uInt32 ( 0xff0000 ) , pNumFmt - > GetNumRule ( ) - > GetLevel ( 0 ) . GetBulletColor ( ) . GetColor ( ) ) ;
xDocShRef - > DoClose ( ) ;
}
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testBulletCharAndFont ( )
2016-06-30 17:12:23 +02:00
{
: : sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " /sd/qa/unit/data/odp/bulletCharAndFont.odp " ) , ODP ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
uno : : Reference < beans : : XPropertySet > xShape ( getShapeFromPage ( 0 , 0 , xDocShRef ) ) ;
uno : : Reference < text : : XTextRange > const xParagraph ( getParagraphFromShape ( 0 , xShape ) ) ;
uno : : Reference < beans : : XPropertySet > xPropSet ( xParagraph , uno : : UNO_QUERY_THROW ) ;
uno : : Reference < container : : XIndexAccess > xLevels ( xPropSet - > getPropertyValue ( " NumberingRules " ) , uno : : UNO_QUERY ) ;
uno : : Sequence < beans : : PropertyValue > aProps ;
xLevels - > getByIndex ( 0 ) > > = aProps ; // 1st level
OUString sBulletChar ( sal_Unicode ( 0xf06c ) ) ;
for ( int i = 0 ; i < aProps . getLength ( ) ; + + i )
{
const beans : : PropertyValue & rProp = aProps [ i ] ;
if ( rProp . Name = = " BulletChar " )
CPPUNIT_ASSERT_EQUAL_MESSAGE ( " BulletChar incorrect. " , sBulletChar , rProp . Value . get < OUString > ( ) ) ;
if ( rProp . Name = = " BulletFont " )
{
awt : : FontDescriptor aFontDescriptor ;
rProp . Value > > = aFontDescriptor ;
CPPUNIT_ASSERT_EQUAL_MESSAGE ( " BulletFont incorrect. " , OUString ( " Wingdings " ) , aFontDescriptor . Name ) ;
}
}
xDocShRef - > DoClose ( ) ;
}
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testBulletMarginAndIndentation ( )
2016-06-30 17:12:23 +02:00
{
: : sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " /sd/qa/unit/data/pptx/bulletMarginAndIndent.pptx " ) , PPTX ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
const SdrPage * pPage = GetPage ( 1 , xDocShRef ) ;
SdrTextObj * pTxtObj = dynamic_cast < SdrTextObj * > ( pPage - > GetObj ( 0 ) ) ;
CPPUNIT_ASSERT_MESSAGE ( " no text object " , pTxtObj ! = nullptr ) ;
const EditTextObject & aEdit = pTxtObj - > GetOutlinerParaObject ( ) - > GetTextObject ( ) ;
const SvxNumBulletItem * pNumFmt = dynamic_cast < const SvxNumBulletItem * > ( aEdit . GetParaAttribs ( 0 ) . GetItem ( EE_PARA_NUMBULLET ) ) ;
CPPUNIT_ASSERT ( pNumFmt ) ;
CPPUNIT_ASSERT_EQUAL_MESSAGE ( " Bullet's left margin is wrong! " , sal_uInt32 ( 1000 ) , sal_uInt32 ( pNumFmt - > GetNumRule ( ) - > GetLevel ( 0 ) . GetAbsLSpace ( ) ) ) ; // left margin is 0.79 cm
CPPUNIT_ASSERT_EQUAL_MESSAGE ( " Bullet's indentation is wrong! " , sal_Int32 ( - 998 ) , sal_Int32 ( pNumFmt - > GetNumRule ( ) - > GetLevel ( 0 ) . GetFirstLineOffset ( ) ) ) ;
xDocShRef - > DoClose ( ) ;
}
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testParaMarginAndindentation ( )
2016-06-30 17:12:23 +02:00
{
: : sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " /sd/qa/unit/data/pptx/paraMarginAndIndentation.pptx " ) , PPTX ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
uno : : Reference < beans : : XPropertySet > xShape ( getShapeFromPage ( 0 , 0 , xDocShRef ) ) ;
// Get first paragraph
uno : : Reference < text : : XTextRange > const xParagraph ( getParagraphFromShape ( 0 , xShape ) ) ;
uno : : Reference < beans : : XPropertySet > xPropSet ( xParagraph , uno : : UNO_QUERY_THROW ) ;
sal_Int32 nParaLeftMargin = 0 ;
xPropSet - > getPropertyValue ( " ParaLeftMargin " ) > > = nParaLeftMargin ;
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 1000 ) , sal_uInt32 ( nParaLeftMargin ) ) ;
sal_Int32 nParaFirstLineIndent = 0 ;
xPropSet - > getPropertyValue ( " ParaFirstLineIndent " ) > > = nParaFirstLineIndent ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( - 1268 ) , sal_Int32 ( nParaFirstLineIndent ) ) ;
xDocShRef - > DoClose ( ) ;
}
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testCellLeftAndRightMargin ( )
2016-06-30 17:12:23 +02:00
{
: : sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " sd/qa/unit/data/pptx/n90223.pptx " ) , PPTX ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
sal_Int32 nLeftMargin , nRightMargin ;
const SdrPage * pPage = GetPage ( 1 , xDocShRef ) ;
sdr : : table : : SdrTableObj * pTableObj = dynamic_cast < sdr : : table : : SdrTableObj * > ( pPage - > GetObj ( 0 ) ) ;
CPPUNIT_ASSERT ( pTableObj ) ;
uno : : Reference < css : : table : : XTable > xTable ( pTableObj - > getTable ( ) , uno : : UNO_QUERY_THROW ) ;
uno : : Reference < css : : table : : XMergeableCell > xCell ( xTable - > getCellByPosition ( 0 , 0 ) , uno : : UNO_QUERY_THROW ) ;
uno : : Reference < beans : : XPropertySet > xCellPropSet ( xCell , uno : : UNO_QUERY_THROW ) ;
uno : : Any aLeftMargin = xCellPropSet - > getPropertyValue ( " TextLeftDistance " ) ;
aLeftMargin > > = nLeftMargin ;
uno : : Any aRightMargin = xCellPropSet - > getPropertyValue ( " TextRightDistance " ) ;
aRightMargin > > = nRightMargin ;
// Convert values to EMU
nLeftMargin = oox : : drawingml : : convertHmmToEmu ( nLeftMargin ) ;
nRightMargin = oox : : drawingml : : convertHmmToEmu ( nRightMargin ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 45720 ) , nLeftMargin ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 45720 ) , nRightMargin ) ;
xDocShRef - > DoClose ( ) ;
}
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testMergedCells ( )
2016-06-30 17:12:23 +02:00
{
: : sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " sd/qa/unit/data/odp/cellspan.odp " ) , ODP ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
const SdrPage * pPage = GetPage ( 1 , xDocShRef ) ;
sdr : : table : : SdrTableObj * pTableObj = dynamic_cast < sdr : : table : : SdrTableObj * > ( pPage - > GetObj ( 0 ) ) ;
CPPUNIT_ASSERT ( pTableObj ) ;
uno : : Reference < table : : XTable > xTable ( pTableObj - > getTable ( ) , uno : : UNO_QUERY_THROW ) ;
uno : : Reference < text : : XTextRange > xText1 ( xTable - > getCellByPosition ( 3 , 0 ) , uno : : UNO_QUERY_THROW ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " 0,3 " ) , xText1 - > getString ( ) ) ;
uno : : Reference < text : : XTextRange > xText2 ( xTable - > getCellByPosition ( 3 , 2 ) , uno : : UNO_QUERY_THROW ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " 2,3 " ) , xText2 - > getString ( ) ) ;
}
2016-06-30 20:52:34 +02:00
void SdOOXMLExportTest1 : : testTableCellBorder ( )
2016-06-30 17:12:23 +02:00
{
: : sd : : DrawDocShellRef xDocShRef = loadURL ( m_directories . getURLFromSrc ( " sd/qa/unit/data/pptx/n90190.pptx " ) , PPTX ) ;
2016-10-05 22:00:51 +02:00
xDocShRef = saveAndReload ( xDocShRef . get ( ) , PPTX ) ;
2016-06-30 17:12:23 +02:00
const SdrPage * pPage = GetPage ( 1 , xDocShRef ) ;
sdr : : table : : SdrTableObj * pTableObj = dynamic_cast < sdr : : table : : SdrTableObj * > ( pPage - > GetObj ( 0 ) ) ;
CPPUNIT_ASSERT ( pTableObj ) ;
table : : BorderLine2 aBorderLine ;
uno : : Reference < table : : XTable > xTable ( pTableObj - > getTable ( ) , uno : : UNO_QUERY_THROW ) ;
uno : : Reference < css : : table : : XMergeableCell > xCell ( xTable - > getCellByPosition ( 0 , 0 ) , uno : : UNO_QUERY_THROW ) ;
uno : : Reference < beans : : XPropertySet > xCellPropSet ( xCell , uno : : UNO_QUERY_THROW ) ;
xCellPropSet - > getPropertyValue ( " LeftBorder " ) > > = aBorderLine ;
sal_Int32 nLeftBorder = aBorderLine . LineWidth ;
// While importing the table cell border line width, it converts EMU->Hmm then divided result by 2.
// To get original value of LineWidth need to multiple by 2.
nLeftBorder = nLeftBorder * 2 ;
nLeftBorder = oox : : drawingml : : convertHmmToEmu ( nLeftBorder ) ;
CPPUNIT_ASSERT ( nLeftBorder ) ;
CPPUNIT_ASSERT_EQUAL ( util : : Color ( 45296 ) , aBorderLine . Color ) ;
xCellPropSet - > getPropertyValue ( " RightBorder " ) > > = aBorderLine ;
sal_Int32 nRightBorder = aBorderLine . LineWidth ;
nRightBorder = nRightBorder * 2 ;
nRightBorder = oox : : drawingml : : convertHmmToEmu ( nRightBorder ) ;
CPPUNIT_ASSERT ( nRightBorder ) ;
CPPUNIT_ASSERT_EQUAL ( util : : Color ( 16777215 ) , aBorderLine . Color ) ;
xCellPropSet - > getPropertyValue ( " TopBorder " ) > > = aBorderLine ;
sal_Int32 nTopBorder = aBorderLine . LineWidth ;
nTopBorder = nTopBorder * 2 ;
nTopBorder = oox : : drawingml : : convertHmmToEmu ( nTopBorder ) ;
CPPUNIT_ASSERT ( nTopBorder ) ;
CPPUNIT_ASSERT_EQUAL ( util : : Color ( 45296 ) , aBorderLine . Color ) ;
xCellPropSet - > getPropertyValue ( " BottomBorder " ) > > = aBorderLine ;
sal_Int32 nBottomBorder = aBorderLine . LineWidth ;
nBottomBorder = nBottomBorder * 2 ;
nBottomBorder = oox : : drawingml : : convertHmmToEmu ( nBottomBorder ) ;
CPPUNIT_ASSERT ( nBottomBorder ) ;
CPPUNIT_ASSERT_EQUAL ( util : : Color ( 45296 ) , aBorderLine . Color ) ;
xDocShRef - > DoClose ( ) ;
}
2016-06-30 20:52:34 +02:00
CPPUNIT_TEST_SUITE_REGISTRATION ( SdOOXMLExportTest1 ) ;
2016-06-30 17:12:23 +02:00
CPPUNIT_PLUGIN_IMPLEMENT ( ) ;
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */