2013-07-31 11:36:27 +02:00
/*
2013-04-19 21:10:42 +01:00
* This file is part of the LibreOffice project .
2012-02-11 17:06:42 +01:00
*
2013-04-19 21:10:42 +01:00
* 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/.
2012-02-11 17:06:42 +01:00
*/
2013-11-04 21:32:21 +01:00
# include <swmodeltestbase.hxx>
2013-06-26 15:47:54 +02:00
# include <com/sun/star/awt/FontDescriptor.hpp>
2012-10-17 10:09:57 +02:00
# include <com/sun/star/document/XFilter.hpp>
# include <com/sun/star/document/XImporter.hpp>
2013-06-24 14:13:39 +02:00
# include <com/sun/star/drawing/EnhancedCustomShapeParameterPair.hpp>
2012-09-19 15:45:12 +02:00
# include <com/sun/star/drawing/EnhancedCustomShapeSegment.hpp>
2013-08-09 16:00:04 +02:00
# include <com/sun/star/drawing/FillStyle.hpp>
2012-10-18 09:09:03 +02:00
# include <com/sun/star/drawing/LineStyle.hpp>
2012-06-11 17:55:21 +02:00
# include <com/sun/star/graphic/GraphicType.hpp>
2012-02-21 18:25:37 +01:00
# include <com/sun/star/lang/XServiceInfo.hpp>
2014-02-28 11:55:39 +01:00
# include <com/sun/star/style/BreakType.hpp>
2012-03-24 17:14:12 +01:00
# include <com/sun/star/style/CaseMap.hpp>
2012-04-21 12:53:22 +02:00
# include <com/sun/star/style/LineSpacing.hpp>
# include <com/sun/star/style/LineSpacingMode.hpp>
2013-07-15 11:24:39 +02:00
# include <com/sun/star/style/ParagraphAdjust.hpp>
2014-04-18 16:47:14 +02:00
# include <com/sun/star/style/TabStop.hpp>
2012-02-22 13:05:37 +01:00
# include <com/sun/star/table/BorderLine2.hpp>
# include <com/sun/star/table/BorderLineStyle.hpp>
2012-02-21 18:25:37 +01:00
# include <com/sun/star/text/RelOrientation.hpp>
2012-02-18 23:05:52 +01:00
# include <com/sun/star/text/SizeType.hpp>
2012-11-13 17:30:18 +01:00
# include <com/sun/star/text/TableColumnSeparator.hpp>
2012-03-24 13:04:54 +01:00
# include <com/sun/star/text/TextContentAnchorType.hpp>
2012-04-03 16:49:41 +02:00
# include <com/sun/star/text/XFootnotesSupplier.hpp>
2012-03-16 14:23:36 +01:00
# include <com/sun/star/text/XPageCursor.hpp>
2012-02-11 17:06:42 +01:00
# include <com/sun/star/text/XTextGraphicObjectsSupplier.hpp>
2012-04-25 17:51:45 +02:00
# include <com/sun/star/text/XTextFieldsSupplier.hpp>
2012-02-18 23:05:52 +01:00
# include <com/sun/star/text/XTextFramesSupplier.hpp>
2013-04-10 11:55:22 +02:00
# include <com/sun/star/text/XTextRangeCompare.hpp>
2012-03-30 10:44:09 +02:00
# include <com/sun/star/text/XTextTablesSupplier.hpp>
2012-07-27 21:20:34 +02:00
# include <com/sun/star/text/XTextTable.hpp>
2012-03-16 14:23:36 +01:00
# include <com/sun/star/text/XTextViewCursorSupplier.hpp>
2012-09-19 15:45:12 +02:00
# include <com/sun/star/text/WrapTextMode.hpp>
2013-06-15 19:05:50 +02:00
# include <com/sun/star/text/HoriOrientation.hpp>
# include <com/sun/star/text/VertOrientation.hpp>
2012-04-25 17:51:45 +02:00
# include <com/sun/star/util/XNumberFormatsSupplier.hpp>
2012-02-11 17:06:42 +01:00
2012-09-17 17:11:09 -05:00
# include <rtl/ustring.hxx>
2012-02-11 17:06:42 +01:00
# include <vcl/outdev.hxx>
# include <vcl/svapp.hxx>
2014-01-02 23:52:37 +01:00
# include <vcl/settings.hxx>
2012-10-17 10:09:57 +02:00
# include <unotools/ucbstreamhelper.hxx>
# include <unotools/streamwrap.hxx>
2014-01-18 12:48:09 +01:00
# include <comphelper/sequenceashashmap.hxx>
2012-02-11 17:06:42 +01:00
2012-11-18 11:07:45 +01:00
# include <bordertest.hxx>
2012-05-09 15:25:44 +02:00
class Test : public SwModelTestBase
2012-02-11 17:06:42 +01:00
{
public :
2013-11-04 21:32:21 +01:00
Test ( ) : SwModelTestBase ( " /sw/qa/extras/rtfimport/data/ " , " Rich Text Format " )
{
}
virtual void preTest ( const char * filename ) SAL_OVERRIDE
{
m_aSavedSettings = Application : : GetSettings ( ) ;
if ( OString ( filename ) = = " fdo48023.rtf " )
{
AllSettings aSettings ( m_aSavedSettings ) ;
aSettings . SetLanguageTag ( LanguageTag ( " ru " ) ) ;
Application : : SetSettings ( aSettings ) ;
}
else if ( OString ( filename ) = = " fdo44211.rtf " )
{
AllSettings aSettings ( m_aSavedSettings ) ;
aSettings . SetLanguageTag ( LanguageTag ( " lt " ) ) ;
Application : : SetSettings ( aSettings ) ;
}
}
2012-02-11 17:06:42 +01:00
2013-11-04 21:32:21 +01:00
virtual void postTest ( const char * filename ) SAL_OVERRIDE
{
if ( OString ( filename ) = = " fdo48023.rtf " | | OString ( filename ) = = " fdo44211.rtf " )
Application : : SetSettings ( m_aSavedSettings ) ;
}
protected :
2013-01-15 11:12:55 +01:00
/// Copy&paste helper.
2014-05-27 22:42:29 +02:00
# if !defined WNT
2014-03-17 09:14:55 +02:00
void paste ( const OUString & aFilename , uno : : Reference < text : : XTextRange > xTextRange = uno : : Reference < text : : XTextRange > ( ) )
2013-01-15 11:12:55 +01:00
{
uno : : Reference < document : : XFilter > xFilter ( m_xSFactory - > createInstance ( " com.sun.star.comp.Writer.RtfFilter " ) , uno : : UNO_QUERY_THROW ) ;
uno : : Reference < document : : XImporter > xImporter ( xFilter , uno : : UNO_QUERY_THROW ) ;
xImporter - > setTargetDocument ( mxComponent ) ;
uno : : Sequence < beans : : PropertyValue > aDescriptor ( xTextRange . is ( ) ? 3 : 2 ) ;
aDescriptor [ 0 ] . Name = " InputStream " ;
SvStream * pStream = utl : : UcbStreamHelper : : CreateStream ( getURLFromSrc ( " /sw/qa/extras/rtfimport/data/ " ) + aFilename , STREAM_WRITE ) ;
uno : : Reference < io : : XStream > xStream ( new utl : : OStreamWrapper ( * pStream ) ) ;
aDescriptor [ 0 ] . Value < < = xStream ;
2013-12-05 12:57:01 +01:00
aDescriptor [ 1 ] . Name = " InsertMode " ;
aDescriptor [ 1 ] . Value < < = sal_True ;
2013-01-15 11:12:55 +01:00
if ( xTextRange . is ( ) )
{
aDescriptor [ 2 ] . Name = " TextInsertModeRange " ;
aDescriptor [ 2 ] . Value < < = xTextRange ;
}
xFilter - > filter ( aDescriptor ) ;
}
2014-04-15 23:29:14 +02:00
# endif
2013-01-15 11:12:55 +01:00
2013-11-04 21:32:21 +01:00
AllSettings m_aSavedSettings ;
2012-02-11 17:06:42 +01:00
} ;
2013-11-04 21:32:21 +01:00
# define DECLARE_RTFIMPORT_TEST(TestName, filename) DECLARE_SW_IMPORT_TEST(TestName, filename, Test)
2012-02-11 17:06:42 +01:00
2014-05-27 22:42:29 +02:00
# if !defined(WNT)
2013-11-22 16:34:18 +01:00
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo45553 , " fdo45553.rtf " )
2012-02-11 17:06:42 +01:00
{
uno : : Reference < text : : XTextDocument > xTextDocument ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumerationAccess > xParaEnumAccess ( xTextDocument - > getText ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumeration > xParaEnum = xParaEnumAccess - > createEnumeration ( ) ;
while ( xParaEnum - > hasMoreElements ( ) )
{
uno : : Reference < container : : XEnumerationAccess > xRangeEnumAccess ( xParaEnum - > nextElement ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumeration > xRangeEnum = xRangeEnumAccess - > createEnumeration ( ) ;
while ( xRangeEnum - > hasMoreElements ( ) )
{
uno : : Reference < text : : XTextRange > xRange ( xRangeEnum - > nextElement ( ) , uno : : UNO_QUERY ) ;
OUString aStr = xRange - > getString ( ) ;
2014-05-16 22:11:51 +02:00
if ( aStr = = " space-before " )
2014-04-04 13:39:38 +03:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( convertTwipToMm100 ( 120 ) ) , getProperty < sal_Int32 > ( xRange , " ParaTopMargin " ) ) ;
2014-05-16 22:11:51 +02:00
else if ( aStr = = " space-after " )
2014-04-04 13:39:38 +03:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( convertTwipToMm100 ( 240 ) ) , getProperty < sal_Int32 > ( xRange , " ParaBottomMargin " ) ) ;
2012-02-11 17:06:42 +01:00
}
}
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testN192129 , " n192129.rtf " )
2012-02-11 17:06:42 +01:00
{
// We expect that the result will be 16x16px.
Size aExpectedSize ( 16 , 16 ) ;
MapMode aMap ( MAP_100TH_MM ) ;
2014-05-16 22:11:51 +02:00
aExpectedSize = Application : : GetDefaultDevice ( ) - > PixelToLogic ( aExpectedSize , aMap ) ;
2012-02-11 17:06:42 +01:00
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 ) ;
awt : : Size aActualSize ( xShape - > getSize ( ) ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( aExpectedSize . Width ( ) ) , aActualSize . Width ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( aExpectedSize . Height ( ) ) , aActualSize . Height ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo45543 , " fdo45543.rtf " )
2012-02-13 21:54:18 +01:00
{
2012-02-22 17:53:03 +01:00
CPPUNIT_ASSERT_EQUAL ( 5 , getLength ( ) ) ;
2012-02-13 21:54:18 +01:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testN695479 , " n695479.rtf " )
2012-02-18 23:05:52 +01:00
{
uno : : Reference < text : : XTextFramesSupplier > xTextFramesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xIndexAccess ( xTextFramesSupplier - > getTextFrames ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < beans : : XPropertySet > xPropertySet ( xIndexAccess - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
// Negative ABSH should mean fixed size.
2012-09-28 18:05:28 +02:00
CPPUNIT_ASSERT_EQUAL ( text : : SizeType : : FIX , getProperty < sal_Int16 > ( xPropertySet , " SizeType " ) ) ;
2014-04-04 13:39:38 +03:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( convertTwipToMm100 ( 300 ) ) , getProperty < sal_Int32 > ( xPropertySet , " Height " ) ) ;
2012-02-18 23:05:52 +01:00
2012-02-21 18:25:37 +01:00
uno : : Reference < drawing : : XDrawPageSupplier > xDrawPageSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xDraws ( xDrawPageSupplier - > getDrawPage ( ) , uno : : UNO_QUERY ) ;
bool bFrameFound = false , bDrawFound = false ;
for ( int i = 0 ; i < xDraws - > getCount ( ) ; + + i )
2012-02-18 23:05:52 +01:00
{
2012-02-21 18:25:37 +01:00
uno : : Reference < lang : : XServiceInfo > xServiceInfo ( xDraws - > getByIndex ( i ) , uno : : UNO_QUERY ) ;
2012-05-02 15:01:05 +02:00
if ( xServiceInfo - > supportsService ( " com.sun.star.text.TextFrame " ) )
2012-02-21 18:25:37 +01:00
{
// Both frames should be anchored to the first paragraph.
bFrameFound = true ;
uno : : Reference < text : : XTextContent > xTextContent ( xServiceInfo , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xRange ( xTextContent - > getAnchor ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XText > xText ( xRange - > getText ( ) , uno : : UNO_QUERY ) ;
2012-05-02 15:01:05 +02:00
CPPUNIT_ASSERT_EQUAL ( OUString ( " plain " ) , xText - > getString ( ) ) ;
2012-02-22 13:05:37 +01:00
if ( i = = 0 )
2013-12-20 11:25:37 +01:00
// Additionally, the frist frame should have double border at the bottom.
2012-09-28 18:05:28 +02:00
CPPUNIT_ASSERT_EQUAL ( table : : BorderLineStyle : : DOUBLE , getProperty < table : : BorderLine2 > ( xPropertySet , " BottomBorder " ) . LineStyle ) ;
2012-02-21 18:25:37 +01:00
}
2012-05-02 15:01:05 +02:00
else if ( xServiceInfo - > supportsService ( " com.sun.star.drawing.LineShape " ) )
2012-02-21 18:25:37 +01:00
{
// The older "drawing objects" syntax should be recognized.
bDrawFound = true ;
xPropertySet . set ( xServiceInfo , uno : : UNO_QUERY ) ;
2012-09-28 18:05:28 +02:00
CPPUNIT_ASSERT_EQUAL ( text : : RelOrientation : : PAGE_PRINT_AREA , getProperty < sal_Int16 > ( xPropertySet , " HoriOrientRelation " ) ) ;
CPPUNIT_ASSERT_EQUAL ( text : : RelOrientation : : PAGE_FRAME , getProperty < sal_Int16 > ( xPropertySet , " VertOrientRelation " ) ) ;
2012-02-21 18:25:37 +01:00
}
2012-02-18 23:05:52 +01:00
}
2012-02-21 18:25:37 +01:00
CPPUNIT_ASSERT ( bFrameFound ) ;
CPPUNIT_ASSERT ( bDrawFound ) ;
2012-02-18 23:05:52 +01:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo42465 , " fdo42465.rtf " )
2012-02-22 17:53:03 +01:00
{
CPPUNIT_ASSERT_EQUAL ( 3 , getLength ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo45187 , " fdo45187.rtf " )
2012-02-27 11:19:38 +01:00
{
uno : : Reference < drawing : : XDrawPageSupplier > xDrawPageSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xDraws ( xDrawPageSupplier - > getDrawPage ( ) , uno : : UNO_QUERY ) ;
// There should be two shapes.
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 2 ) , xDraws - > getCount ( ) ) ;
2013-04-10 11:55:22 +02:00
2012-02-27 11:19:38 +01:00
// They should be anchored to different paragraphs.
2013-04-10 11:55:22 +02:00
uno : : Reference < text : : XTextDocument > xTextDocument ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRangeCompare > xTextRangeCompare ( xTextDocument - > getText ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xAnchor0 = uno : : Reference < text : : XTextContent > ( xDraws - > getByIndex ( 0 ) , uno : : UNO_QUERY ) - > getAnchor ( ) ;
uno : : Reference < text : : XTextRange > xAnchor1 = uno : : Reference < text : : XTextContent > ( xDraws - > getByIndex ( 1 ) , uno : : UNO_QUERY ) - > getAnchor ( ) ;
// Was 0 ("starts at the same position"), should be 1 ("starts before")
CPPUNIT_ASSERT_EQUAL ( sal_Int16 ( 1 ) , xTextRangeCompare - > compareRegionStarts ( xAnchor0 , xAnchor1 ) ) ;
2012-02-27 11:19:38 +01:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo46662 , " fdo46662.rtf " )
2012-03-01 11:38:47 +01:00
{
2012-05-09 12:51:01 +02:00
uno : : Reference < beans : : XPropertySet > xPropertySet ( getStyles ( " NumberingStyles " ) - > getByName ( " WWNum3 " ) , uno : : UNO_QUERY ) ;
2012-05-02 15:01:05 +02:00
uno : : Reference < container : : XIndexAccess > xLevels ( xPropertySet - > getPropertyValue ( " NumberingRules " ) , uno : : UNO_QUERY ) ;
2012-03-01 11:38:47 +01:00
uno : : Sequence < beans : : PropertyValue > aProps ;
2012-05-02 15:01:05 +02:00
xLevels - > getByIndex ( 1 ) > > = aProps ; // 2nd level
2012-03-01 11:38:47 +01:00
for ( int i = 0 ; i < aProps . getLength ( ) ; + + i )
{
const beans : : PropertyValue & rProp = aProps [ i ] ;
2014-05-16 22:11:51 +02:00
if ( rProp . Name = = " ParentNumbering " )
2012-09-28 18:05:28 +02:00
CPPUNIT_ASSERT_EQUAL ( sal_Int16 ( 2 ) , rProp . Value . get < sal_Int16 > ( ) ) ;
2014-05-16 22:11:51 +02:00
else if ( rProp . Name = = " Suffix " )
2012-09-28 18:05:28 +02:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0 ) , rProp . Value . get < OUString > ( ) . getLength ( ) ) ;
2012-03-01 11:38:47 +01:00
}
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testN750757 , " n750757.rtf " )
2012-03-12 20:43:42 +01:00
{
uno : : Reference < text : : XTextDocument > xTextDocument ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumerationAccess > xParaEnumAccess ( xTextDocument - > getText ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumeration > xParaEnum = xParaEnumAccess - > createEnumeration ( ) ;
2014-07-01 17:38:02 +02:00
CPPUNIT_ASSERT_EQUAL ( false , bool ( getProperty < sal_Bool > ( xParaEnum - > nextElement ( ) , " ParaContextMargin " ) ) ) ;
CPPUNIT_ASSERT_EQUAL ( true , bool ( getProperty < sal_Bool > ( xParaEnum - > nextElement ( ) , " ParaContextMargin " ) ) ) ;
2012-03-12 20:43:42 +01:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo45563 , " fdo45563.rtf " )
2012-03-13 10:16:27 +01:00
{
uno : : Reference < text : : XTextDocument > xTextDocument ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumerationAccess > xParaEnumAccess ( xTextDocument - > getText ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumeration > xParaEnum = xParaEnumAccess - > createEnumeration ( ) ;
int i = 0 ;
while ( xParaEnum - > hasMoreElements ( ) )
{
xParaEnum - > nextElement ( ) ;
i + + ;
}
CPPUNIT_ASSERT_EQUAL ( 4 , i ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo43965 , " fdo43965.rtf " )
2012-03-16 14:23:36 +01:00
{
uno : : Reference < text : : XTextDocument > xTextDocument ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumerationAccess > xParaEnumAccess ( xTextDocument - > getText ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumeration > xParaEnum = xParaEnumAccess - > createEnumeration ( ) ;
// First paragraph: the parameter of \up was ignored
uno : : Reference < container : : XEnumerationAccess > xRangeEnumAccess ( xParaEnum - > nextElement ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumeration > xRangeEnum = xRangeEnumAccess - > createEnumeration ( ) ;
uno : : Reference < beans : : XPropertySet > xPropertySet ( xRangeEnum - > nextElement ( ) , uno : : UNO_QUERY ) ;
2012-09-30 15:04:29 +02:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 36 ) , getProperty < sal_Int32 > ( xPropertySet , " CharEscapement " ) ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 100 ) , getProperty < sal_Int32 > ( xPropertySet , " CharEscapementHeight " ) ) ;
2012-03-16 14:23:36 +01:00
// Second paragraph: Word vs Writer border default problem
2012-09-30 15:04:29 +02:00
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 26 ) , getProperty < table : : BorderLine2 > ( xParaEnum - > nextElement ( ) , " TopBorder " ) . LineWidth ) ;
2012-03-16 14:23:36 +01:00
// Finally, make sure that we have two pages
2012-04-02 14:24:53 +02:00
CPPUNIT_ASSERT_EQUAL ( 2 , getPages ( ) ) ;
2012-03-16 14:23:36 +01:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testN751020 , " n751020.rtf " )
2012-03-19 10:45:28 +01:00
{
uno : : Reference < text : : XTextDocument > xTextDocument ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumerationAccess > xParaEnumAccess ( xTextDocument - > getText ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumeration > xParaEnum = xParaEnumAccess - > createEnumeration ( ) ;
CPPUNIT_ASSERT ( xParaEnum - > hasMoreElements ( ) ) ;
2014-04-04 13:39:38 +03:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( convertTwipToMm100 ( 200 ) ) , getProperty < sal_Int32 > ( xParaEnum - > nextElement ( ) , " ParaBottomMargin " ) ) ;
2012-03-19 10:45:28 +01:00
}
2014-06-02 23:57:13 +02:00
DECLARE_RTFIMPORT_TEST ( testFdo79384 , " fdo79384.rtf " )
{
uno : : Reference < text : : XTextRange > xTextRange = getRun ( getParagraph ( 1 ) , 1 ) ;
2014-06-04 10:06:58 +02:00
CPPUNIT_ASSERT_EQUAL ( OUString ( " Маркеры спискамЫ " , 31 , RTL_TEXTENCODING_UTF8 ) , xTextRange - > getString ( ) ) ;
2014-06-02 23:57:13 +02:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo47326 , " fdo47326.rtf " )
2012-03-23 12:47:41 +01:00
{
// This was 15 only, as \super buffered text, then the contents of it got lost.
CPPUNIT_ASSERT_EQUAL ( 19 , getLength ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo47036 , " fdo47036.rtf " )
2012-03-24 13:04:54 +01:00
{
uno : : Reference < drawing : : XDrawPageSupplier > xDrawPageSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xDraws ( xDrawPageSupplier - > getDrawPage ( ) , uno : : UNO_QUERY ) ;
int nAtCharacter = 0 ;
for ( int i = 0 ; i < xDraws - > getCount ( ) ; + + i )
{
2012-09-30 15:04:29 +02:00
if ( getProperty < text : : TextContentAnchorType > ( xDraws - > getByIndex ( i ) , " AnchorType " ) = = text : : TextContentAnchorType_AT_CHARACTER )
2012-03-24 13:04:54 +01:00
nAtCharacter + + ;
}
// The image at the document start was ignored.
CPPUNIT_ASSERT_EQUAL ( 1 , nAtCharacter ) ;
2012-03-24 14:55:09 +01:00
// There should be 2 textboxes, not 4
uno : : Reference < text : : XTextFramesSupplier > xTextFramesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xIndexAccess ( xTextFramesSupplier - > getTextFrames ( ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 2 ) , xIndexAccess - > getCount ( ) ) ;
2012-03-24 13:04:54 +01:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo46955 , " fdo46955.rtf " )
2012-03-24 17:14:12 +01:00
{
uno : : Reference < text : : XTextDocument > xTextDocument ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumerationAccess > xParaEnumAccess ( xTextDocument - > getText ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumeration > xParaEnum = xParaEnumAccess - > createEnumeration ( ) ;
while ( xParaEnum - > hasMoreElements ( ) )
{
uno : : Reference < container : : XEnumerationAccess > xRangeEnumAccess ( xParaEnum - > nextElement ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumeration > xRangeEnum = xRangeEnumAccess - > createEnumeration ( ) ;
while ( xRangeEnum - > hasMoreElements ( ) )
2012-09-30 15:04:29 +02:00
CPPUNIT_ASSERT_EQUAL ( style : : CaseMap : : UPPERCASE , getProperty < sal_Int16 > ( xRangeEnum - > nextElement ( ) , " CharCaseMap " ) ) ;
2012-03-24 17:14:12 +01:00
}
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo45394 , " fdo45394.rtf " )
2012-03-30 10:44:09 +02:00
{
2012-11-26 07:38:27 +01:00
uno : : Reference < text : : XText > xHeaderText = getProperty < uno : : Reference < text : : XText > > ( getStyles ( " PageStyles " ) - > getByName ( DEFAULT_STYLE ) , " HeaderText " ) ;
2012-03-30 10:44:09 +02:00
OUString aActual = xHeaderText - > getString ( ) ;
// Encoding in the header was wrong.
2013-07-31 12:46:29 +02:00
OUString aExpected ( " \xd0 \x9f \xd0 \x9a \xd0 \xa0 \xd0 \x98 \xd0 \x9a " , 11 , RTL_TEXTENCODING_UTF8 ) ;
2012-03-30 10:44:09 +02:00
CPPUNIT_ASSERT_EQUAL ( aExpected , aActual ) ;
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 ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo48104 , " fdo48104.rtf " )
2012-04-02 14:10:39 +02:00
{
2012-04-02 14:24:53 +02:00
CPPUNIT_ASSERT_EQUAL ( 2 , getPages ( ) ) ;
2012-04-02 14:10:39 +02:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo47107 , " fdo47107.rtf " )
2012-04-03 15:07:06 +02:00
{
2012-05-09 12:51:01 +02:00
uno : : Reference < container : : XNameAccess > xNumberingStyles ( getStyles ( " NumberingStyles " ) ) ;
2012-04-03 15:07:06 +02:00
// Make sure numbered and bullet legacy syntax is recognized, this used to throw a NoSuchElementException
xNumberingStyles - > getByName ( " WWNum1 " ) ;
xNumberingStyles - > getByName ( " WWNum2 " ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo45182 , " fdo45182.rtf " )
2012-04-03 16:49:41 +02:00
{
uno : : Reference < text : : XFootnotesSupplier > xFootnotesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xFootnotes ( xFootnotesSupplier - > getFootnotes ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xTextRange ( xFootnotes - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
// Encoding in the footnote was wrong.
2013-11-15 15:05:02 +01:00
OUString aExpected ( " \xc5 \xbe ivnost \xc3 \xad \n " , 11 , RTL_TEXTENCODING_UTF8 ) ;
2012-04-03 16:49:41 +02:00
CPPUNIT_ASSERT_EQUAL ( aExpected , xTextRange - > getString ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo44176 , " fdo44176.rtf " )
2012-04-11 09:45:53 +02:00
{
2012-05-09 12:51:01 +02:00
uno : : Reference < container : : XNameAccess > xPageStyles ( getStyles ( " PageStyles " ) ) ;
2012-04-11 09:45:53 +02:00
uno : : Reference < beans : : XPropertySet > xFirstPage ( xPageStyles - > getByName ( " First Page " ) , uno : : UNO_QUERY ) ;
2012-11-26 07:38:27 +01:00
uno : : Reference < beans : : XPropertySet > xDefault ( xPageStyles - > getByName ( DEFAULT_STYLE ) , uno : : UNO_QUERY ) ;
2012-04-11 09:45:53 +02:00
sal_Int32 nFirstTop = 0 , nDefaultTop = 0 , nDefaultHeader = 0 ;
xFirstPage - > getPropertyValue ( " TopMargin " ) > > = nFirstTop ;
xDefault - > getPropertyValue ( " TopMargin " ) > > = nDefaultTop ;
xDefault - > getPropertyValue ( " HeaderHeight " ) > > = nDefaultHeader ;
CPPUNIT_ASSERT_EQUAL ( nFirstTop , nDefaultTop + nDefaultHeader ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo39053 , " fdo39053.rtf " )
2012-04-15 14:39:27 +02:00
{
uno : : Reference < drawing : : XDrawPageSupplier > xDrawPageSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xDraws ( xDrawPageSupplier - > getDrawPage ( ) , uno : : UNO_QUERY ) ;
int nAsCharacter = 0 ;
for ( int i = 0 ; i < xDraws - > getCount ( ) ; + + i )
2012-09-30 15:04:29 +02:00
if ( getProperty < text : : TextContentAnchorType > ( xDraws - > getByIndex ( i ) , " AnchorType " ) = = text : : TextContentAnchorType_AS_CHARACTER )
2012-04-15 14:39:27 +02:00
nAsCharacter + + ;
// The image in binary format was ignored.
CPPUNIT_ASSERT_EQUAL ( 1 , nAsCharacter ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo48356 , " fdo48356.rtf " )
2012-04-20 12:42:23 +02:00
{
uno : : Reference < text : : XTextDocument > xTextDocument ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumerationAccess > xParaEnumAccess ( xTextDocument - > getText ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumeration > xParaEnum = xParaEnumAccess - > createEnumeration ( ) ;
int i = 0 ;
while ( xParaEnum - > hasMoreElements ( ) )
{
xParaEnum - > nextElement ( ) ;
i + + ;
}
// The document used to be imported as two paragraphs.
CPPUNIT_ASSERT_EQUAL ( 1 , i ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo48023 , " fdo48023.rtf " )
2012-04-21 11:25:18 +02:00
{
2012-09-30 15:04:29 +02:00
uno : : Reference < text : : XTextRange > xTextRange = getRun ( getParagraph ( 1 ) , 1 ) ;
2012-04-21 11:25:18 +02:00
// Implicit encoding detection based on locale was missing
2013-07-31 12:46:29 +02:00
OUString aExpected ( " \xd0 \x9f \xd1 \x80 \xd0 \xbe \xd0 \xb3 \xd1 \x80 \xd0 \xb0 \xd0 \xbc \xd0 \xbc \xd0 \xb8 \xd1 \x81 \xd1 \x82 " , 22 , RTL_TEXTENCODING_UTF8 ) ;
2012-04-21 11:25:18 +02:00
CPPUNIT_ASSERT_EQUAL ( aExpected , xTextRange - > getString ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo48876 , " fdo48876.rtf " )
2012-04-21 12:53:22 +02:00
{
uno : : Reference < text : : XTextDocument > xTextDocument ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumerationAccess > xParaEnumAccess ( xTextDocument - > getText ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumeration > xParaEnum = xParaEnumAccess - > createEnumeration ( ) ;
CPPUNIT_ASSERT ( xParaEnum - > hasMoreElements ( ) ) ;
2012-09-30 15:04:29 +02:00
CPPUNIT_ASSERT_EQUAL ( style : : LineSpacingMode : : MINIMUM , getProperty < style : : LineSpacing > ( xParaEnum - > nextElement ( ) , " ParaLineSpacing " ) . Mode ) ;
2012-04-21 12:53:22 +02:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo48193 , " fdo48193.rtf " )
2012-04-25 11:21:06 +02:00
{
CPPUNIT_ASSERT_EQUAL ( 7 , getLength ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo44211 , " fdo44211.rtf " )
2012-04-21 23:01:09 +03:00
{
2012-09-30 15:04:29 +02:00
uno : : Reference < text : : XTextRange > xTextRange = getRun ( getParagraph ( 1 ) , 1 ) ;
2012-04-21 23:01:09 +03:00
2013-07-31 12:46:29 +02:00
OUString aExpected ( " \xc4 \x85 \xc4 \x8d \xc4 \x99 " , 6 , RTL_TEXTENCODING_UTF8 ) ;
2012-04-21 23:01:09 +03:00
CPPUNIT_ASSERT_EQUAL ( aExpected , xTextRange - > getString ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo48037 , " fdo48037.rtf " )
2012-04-25 17:51:45 +02:00
{
uno : : Reference < util : : XNumberFormatsSupplier > xNumberSupplier ( mxComponent , uno : : UNO_QUERY_THROW ) ;
lang : : Locale aUSLocale , aFRLocale ;
aUSLocale . Language = " en " ;
aFRLocale . Language = " fr " ;
sal_Int32 nExpected = xNumberSupplier - > getNumberFormats ( ) - > addNewConverted ( " d MMMM yyyy " , aUSLocale , aFRLocale ) ;
uno : : Reference < text : : XTextFieldsSupplier > xTextFieldsSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumerationAccess > xFieldsAccess ( xTextFieldsSupplier - > getTextFields ( ) ) ;
uno : : Reference < container : : XEnumeration > xFields ( xFieldsAccess - > createEnumeration ( ) ) ;
uno : : Reference < beans : : XPropertySet > xPropertySet ( xFields - > nextElement ( ) , uno : : UNO_QUERY ) ;
sal_Int32 nActual = 0 ;
xPropertySet - > getPropertyValue ( " NumberFormat " ) > > = nActual ;
CPPUNIT_ASSERT_EQUAL ( nExpected , nActual ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo47764 , " fdo47764.rtf " )
2012-05-02 17:50:55 +02:00
{
// \cbpat with zero argument should mean the auto (-1) color, not a default color (black)
2012-09-30 15:11:05 +02:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( - 1 ) , getProperty < sal_Int32 > ( getParagraph ( 1 ) , " ParaBackColor " ) ) ;
2012-05-02 17:50:55 +02:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo38786 , " fdo38786.rtf " )
2012-05-07 09:50:02 +02:00
{
uno : : Reference < text : : XTextFieldsSupplier > xTextFieldsSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumerationAccess > xFieldsAccess ( xTextFieldsSupplier - > getTextFields ( ) ) ;
uno : : Reference < container : : XEnumeration > xFields ( xFieldsAccess - > createEnumeration ( ) ) ;
// \chpgn was ignored, so exception was thrown
xFields - > nextElement ( ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testN757651 , " n757651.rtf " )
2012-05-09 10:21:30 +02:00
{
// The bug was that due to buggy layout the text expanded to two pages.
if ( Application : : GetDefaultDevice ( ) - > IsFontAvailable ( OUString ( " Times New Roman " ) ) )
CPPUNIT_ASSERT_EQUAL ( 1 , getPages ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo49501 , " fdo49501.rtf " )
2012-05-09 11:30:13 +02:00
{
2012-11-26 07:38:27 +01:00
uno : : Reference < beans : : XPropertySet > xStyle ( getStyles ( " PageStyles " ) - > getByName ( DEFAULT_STYLE ) , uno : : UNO_QUERY ) ;
2012-05-09 11:30:13 +02:00
2012-09-30 15:28:47 +02:00
CPPUNIT_ASSERT_EQUAL ( sal_True , getProperty < sal_Bool > ( xStyle , " IsLandscape " ) ) ;
2014-04-04 13:39:38 +03:00
sal_Int32 nExpected ( convertTwipToMm100 ( 567 ) ) ;
2012-09-30 15:28:47 +02:00
CPPUNIT_ASSERT_EQUAL ( nExpected , getProperty < sal_Int32 > ( xStyle , " LeftMargin " ) ) ;
CPPUNIT_ASSERT_EQUAL ( nExpected , getProperty < sal_Int32 > ( xStyle , " RightMargin " ) ) ;
CPPUNIT_ASSERT_EQUAL ( nExpected , getProperty < sal_Int32 > ( xStyle , " TopMargin " ) ) ;
CPPUNIT_ASSERT_EQUAL ( nExpected , getProperty < sal_Int32 > ( xStyle , " BottomMargin " ) ) ;
2012-05-09 11:30:13 +02:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo49271 , " fdo49271.rtf " )
2012-05-09 16:07:12 +02:00
{
2012-09-30 15:50:53 +02:00
CPPUNIT_ASSERT_EQUAL ( 25.f , getProperty < float > ( getParagraph ( 2 ) , " CharHeight " ) ) ;
2012-05-09 16:07:12 +02:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo49692 , " fdo49692.rtf " )
2012-05-10 10:35:47 +02:00
{
uno : : Reference < beans : : XPropertySet > xPropertySet ( getStyles ( " NumberingStyles " ) - > getByName ( " WWNum1 " ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xLevels ( xPropertySet - > getPropertyValue ( " NumberingRules " ) , uno : : UNO_QUERY ) ;
uno : : Sequence < beans : : PropertyValue > aProps ;
xLevels - > getByIndex ( 0 ) > > = aProps ; // 1st level
for ( int i = 0 ; i < aProps . getLength ( ) ; + + i )
{
const beans : : PropertyValue & rProp = aProps [ i ] ;
if ( rProp . Name = = " Suffix " )
2012-09-30 15:50:53 +02:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0 ) , rProp . Value . get < OUString > ( ) . getLength ( ) ) ;
2012-05-10 10:35:47 +02:00
}
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo45190 , " fdo45190.rtf " )
2012-05-11 14:45:59 +02:00
{
// inherited \fi should be reset
2012-09-30 15:50:53 +02:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0 ) , getProperty < sal_Int32 > ( getParagraph ( 1 ) , " ParaFirstLineIndent " ) ) ;
2012-05-11 14:45:59 +02:00
// but direct one not
2014-04-04 13:39:38 +03:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( convertTwipToMm100 ( - 100 ) ) , getProperty < sal_Int32 > ( getParagraph ( 2 ) , " ParaFirstLineIndent " ) ) ;
2012-05-11 14:45:59 +02:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo50539 , " fdo50539.rtf " )
2012-06-01 16:30:06 +02:00
{
// \chcbpat with zero argument should mean the auto (-1) color, not a default color (black)
2012-09-30 15:50:53 +02:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( - 1 ) , getProperty < sal_Int32 > ( getRun ( getParagraph ( 1 ) , 1 ) , " CharBackColor " ) ) ;
2012-06-01 16:30:06 +02:00
}
2014-06-10 12:26:26 +04:00
DECLARE_RTFIMPORT_TEST ( testFdo79599 , " fdo79599.rtf " )
{
// test for \highlightNN, document has full \colortbl (produced in MS Word 2003 or 2007)
// ignore \highlight0
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( - 1 ) , getProperty < sal_Int32 > ( getRun ( getParagraph ( 1 ) , 1 ) , " CharBackColor " ) ) ;
// test \highlight2 = yellow
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 0xFFFF00 ) , getProperty < sal_uInt32 > ( getRun ( getParagraph ( 2 ) , 1 ) , " CharBackColor " ) ) ;
// test \highlight3 = green
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 0x00FF00 ) , getProperty < sal_uInt32 > ( getRun ( getParagraph ( 3 ) , 1 ) , " CharBackColor " ) ) ;
// test \highlight4 = cyan
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 0x00FFFF ) , getProperty < sal_uInt32 > ( getRun ( getParagraph ( 4 ) , 1 ) , " CharBackColor " ) ) ;
// test \highlight5 = magenta
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 0xFF00FF ) , getProperty < sal_uInt32 > ( getRun ( getParagraph ( 5 ) , 1 ) , " CharBackColor " ) ) ;
// test \highlight6 = blue
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 0x0000FF ) , getProperty < sal_uInt32 > ( getRun ( getParagraph ( 6 ) , 1 ) , " CharBackColor " ) ) ;
// test \highlight7 = red
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 0xFF0000 ) , getProperty < sal_uInt32 > ( getRun ( getParagraph ( 7 ) , 1 ) , " CharBackColor " ) ) ;
// test \highlight8 = dark blue
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 0x000080 ) , getProperty < sal_uInt32 > ( getRun ( getParagraph ( 8 ) , 1 ) , " CharBackColor " ) ) ;
// test \highlight9 = dark cyan
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 0x008080 ) , getProperty < sal_uInt32 > ( getRun ( getParagraph ( 9 ) , 1 ) , " CharBackColor " ) ) ;
// test \highlight10 = dark green
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 0x008000 ) , getProperty < sal_uInt32 > ( getRun ( getParagraph ( 10 ) , 1 ) , " CharBackColor " ) ) ;
// test \highlight11 = dark magenta
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 0x800080 ) , getProperty < sal_uInt32 > ( getRun ( getParagraph ( 11 ) , 1 ) , " CharBackColor " ) ) ;
// test \highlight12 = dark red
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 0x800000 ) , getProperty < sal_uInt32 > ( getRun ( getParagraph ( 12 ) , 1 ) , " CharBackColor " ) ) ;
// test \highlight13 = dark yellow
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 0x808000 ) , getProperty < sal_uInt32 > ( getRun ( getParagraph ( 13 ) , 1 ) , " CharBackColor " ) ) ;
// test \highlight14 = dark gray
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 0x808080 ) , getProperty < sal_uInt32 > ( getRun ( getParagraph ( 14 ) , 1 ) , " CharBackColor " ) ) ;
// test \highlight15 = light gray
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 0xC0C0C0 ) , getProperty < sal_uInt32 > ( getRun ( getParagraph ( 15 ) , 1 ) , " CharBackColor " ) ) ;
// test \highlight1 = black
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 0x000000 ) , getProperty < sal_uInt32 > ( getRun ( getParagraph ( 16 ) , 1 ) , " CharBackColor " ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo50665 , " fdo50665.rtf " )
2012-06-06 12:58:07 +02:00
{
// Access the second run, which is a textfield
2012-09-30 15:50:53 +02:00
uno : : Reference < beans : : XPropertySet > xRun ( getRun ( getParagraph ( 1 ) , 2 ) , uno : : UNO_QUERY ) ;
2012-06-06 12:58:07 +02:00
// This used to be the default, as character properties were ignored.
2012-09-30 15:50:53 +02:00
CPPUNIT_ASSERT_EQUAL ( OUString ( " Book Antiqua " ) , getProperty < OUString > ( xRun , " CharFontName " ) ) ;
2012-06-06 12:58:07 +02:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo49659 , " fdo49659.rtf " )
2012-06-11 17:55:21 +02:00
{
// Both tables were ignored: 1) was in the header, 2) was ignored due to missing empty par at the end of the doc
uno : : Reference < text : : XTextTablesSupplier > xTextTablesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xIndexAccess ( xTextTablesSupplier - > getTextTables ( ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 2 ) , xIndexAccess - > getCount ( ) ) ;
// The graphic was also empty
2013-08-27 16:44:12 +02:00
uno : : Reference < beans : : XPropertySet > xGraphic ( getProperty < uno : : Reference < beans : : XPropertySet > > ( getShape ( 1 ) , " Graphic " ) , uno : : UNO_QUERY ) ;
2012-09-30 15:50:53 +02:00
CPPUNIT_ASSERT_EQUAL ( graphic : : GraphicType : : PIXEL , getProperty < sal_Int8 > ( xGraphic , " GraphicType " ) ) ;
2012-06-11 17:55:21 +02:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo46966 , " fdo46966.rtf " )
2012-06-22 18:55:15 +02:00
{
/*
* The problem was the top margin was 1440 ( 1 inch ) , but it should be 720 ( 0.5 inch ) .
*
* xray ThisComponent . StyleFamilies . PageStyles . Default . TopMargin
*/
2012-11-26 07:38:27 +01:00
uno : : Reference < beans : : XPropertySet > xPropertySet ( getStyles ( " PageStyles " ) - > getByName ( DEFAULT_STYLE ) , uno : : UNO_QUERY ) ;
2014-04-04 13:39:38 +03:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( convertTwipToMm100 ( 720 ) ) , getProperty < sal_Int32 > ( xPropertySet , " TopMargin " ) ) ;
2012-06-22 18:55:15 +02:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo52066 , " fdo52066.rtf " )
2012-07-18 22:47:03 +02:00
{
/*
* The problem was that the height of the shape was too big .
*
* xray ThisComponent . DrawPage ( 0 ) . Size . Height
*/
2013-08-27 16:44:12 +02:00
uno : : Reference < drawing : : XShape > xShape ( getShape ( 1 ) , uno : : UNO_QUERY ) ;
2014-04-04 13:39:38 +03:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( convertTwipToMm100 ( 19 ) ) , xShape - > getSize ( ) . Height ) ;
2012-07-18 22:47:03 +02:00
}
2014-06-12 20:37:47 +02:00
DECLARE_RTFIMPORT_TEST ( testFdo76633 , " fdo76633.rtf " )
{
// check that there is only a graphic object, not an additional rectangle
uno : : Reference < lang : : XServiceInfo > xShape ( getShape ( 1 ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT ( xShape . is ( ) ) ;
CPPUNIT_ASSERT ( xShape - > supportsService ( " com.sun.star.text.TextGraphicObject " ) ) ;
2014-06-14 11:24:39 +02:00
try
{
2014-06-12 20:37:47 +02:00
uno : : Reference < drawing : : XShape > xShape2 ( getShape ( 2 ) , uno : : UNO_QUERY ) ;
CPPUNIT_FAIL ( " exception expected " ) ;
2014-06-14 11:24:39 +02:00
}
catch ( lang : : IndexOutOfBoundsException const & )
{
/* expected */
}
2014-06-12 20:37:47 +02:00
}
2012-07-18 22:47:03 +02:00
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo48033 , " fdo48033.rtf " )
2012-07-27 21:20:34 +02:00
{
/*
2013-02-25 09:45:52 +01:00
* The problem was that the picture ( 48033 ) or OLE object ( 53594 ) was in the first cell ,
* instead of the second one .
2012-07-27 21:20:34 +02:00
*
* oTable = ThisComponent . TextTables ( 0 )
* oParas = oTable . getCellByName ( " B1 " ) . Text . createEnumeration
* oPara = oParas . nextElement
* oRuns = oPara . createEnumeration
* oRun = oRuns . nextElement
* xray oRun . TextPortionType ' Frame , was Text
*/
uno : : Reference < text : : XTextTablesSupplier > xTextTablesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xTables ( xTextTablesSupplier - > getTextTables ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextTable > xTable ( xTables - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xCell ( xTable - > getCellByName ( " B1 " ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumerationAccess > xParaEnumAccess ( xCell - > getText ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumeration > xParaEnum = xParaEnumAccess - > createEnumeration ( ) ;
uno : : Reference < text : : XTextRange > xPara ( xParaEnum - > nextElement ( ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " Frame " ) , getProperty < OUString > ( getRun ( xPara , 1 ) , " TextPortionType " ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo53594 , " fdo53594.rtf " )
{
/*
* The problem was that the picture ( 48033 ) or OLE object ( 53594 ) was in the first cell ,
* instead of the second one .
*
* oTable = ThisComponent . TextTables ( 0 )
* oParas = oTable . getCellByName ( " B1 " ) . Text . createEnumeration
* oPara = oParas . nextElement
* oRuns = oPara . createEnumeration
* oRun = oRuns . nextElement
* xray oRun . TextPortionType ' Frame , was Text
*/
uno : : Reference < text : : XTextTablesSupplier > xTextTablesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xTables ( xTextTablesSupplier - > getTextTables ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextTable > xTable ( xTables - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xCell ( xTable - > getCellByName ( " B1 " ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumerationAccess > xParaEnumAccess ( xCell - > getText ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumeration > xParaEnum = xParaEnumAccess - > createEnumeration ( ) ;
uno : : Reference < text : : XTextRange > xPara ( xParaEnum - > nextElement ( ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " Frame " ) , getProperty < OUString > ( getRun ( xPara , 1 ) , " TextPortionType " ) ) ;
}
DECLARE_RTFIMPORT_TEST ( testFdo36089 , " fdo36089.rtf " )
2012-07-27 17:40:39 +02:00
{
CPPUNIT_ASSERT_EQUAL ( sal_Int16 ( - 50 ) , getProperty < sal_Int16 > ( getRun ( getParagraph ( 1 ) , 2 ) , " CharEscapement " ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo49892 , " fdo49892.rtf " )
2012-08-01 21:03:58 +02:00
{
uno : : Reference < drawing : : XDrawPageSupplier > xDrawPageSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xDraws ( xDrawPageSupplier - > getDrawPage ( ) , uno : : UNO_QUERY ) ;
for ( int i = 0 ; i < xDraws - > getCount ( ) ; + + i )
{
OUString aDescription = getProperty < OUString > ( xDraws - > getByIndex ( i ) , " Description " ) ;
if ( aDescription = = " red " )
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0 ) , getProperty < sal_Int32 > ( xDraws - > getByIndex ( i ) , " ZOrder " ) ) ;
else if ( aDescription = = " green " )
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 1 ) , getProperty < sal_Int32 > ( xDraws - > getByIndex ( i ) , " ZOrder " ) ) ;
else if ( aDescription = = " blue " )
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 2 ) , getProperty < sal_Int32 > ( xDraws - > getByIndex ( i ) , " ZOrder " ) ) ;
else if ( aDescription = = " rect " )
{
CPPUNIT_ASSERT_EQUAL ( text : : RelOrientation : : PAGE_FRAME , getProperty < sal_Int16 > ( xDraws - > getByIndex ( i ) , " HoriOrientRelation " ) ) ;
CPPUNIT_ASSERT_EQUAL ( text : : RelOrientation : : PAGE_FRAME , getProperty < sal_Int16 > ( xDraws - > getByIndex ( i ) , " VertOrientRelation " ) ) ;
}
}
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo48446 , " fdo48446.rtf " )
2012-08-10 17:48:57 +02:00
{
2013-07-31 12:46:29 +02:00
OUString aExpected ( " \xd0 \x98 \xd0 \xbc \xd1 \x8f " , 6 , RTL_TEXTENCODING_UTF8 ) ;
2012-08-10 17:48:57 +02:00
getParagraph ( 1 , aExpected ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo47495 , " fdo47495.rtf " )
2012-08-13 12:23:05 +02:00
{
// Used to have 4 paragraphs, as a result the original bugdoc had 2 pages instead of 1.
CPPUNIT_ASSERT_EQUAL ( 2 , getParagraphs ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testAllGapsWord , " all_gaps_word.rtf " )
2012-07-28 14:01:04 +02:00
{
BorderTest borderTest ;
2014-05-08 14:30:24 +03:00
borderTest . testTheBorders ( mxComponent , false ) ;
2012-07-28 14:01:04 +02:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo52052 , " fdo52052.rtf " )
2012-08-28 11:21:50 +02:00
{
// Make sure the textframe containing the text "third" appears on the 3rd page.
CPPUNIT_ASSERT_EQUAL ( OUString ( " third " ) , parseDump ( " /root/page[3]/body/txt/anchored/fly/txt/text() " ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testInk , " ink.rtf " )
2012-09-19 15:45:12 +02:00
{
/*
* The problem was that the second segment had wrong command count and wrap type .
*
* oShape = ThisComponent . DrawPage ( 0 )
* oPathPropVec = oShape . CustomShapeGeometry ( 1 ) . Value
* oSegments = oPathPropVec ( 1 ) . Value
* msgbox oSegments ( 1 ) . Count ' was 0x2000 | 10 , should be 10
* msgbox oShape . Surround ' was 2 , should be 1
*/
2013-08-27 16:44:12 +02:00
uno : : Sequence < beans : : PropertyValue > aProps = getProperty < uno : : Sequence < beans : : PropertyValue > > ( getShape ( 1 ) , " CustomShapeGeometry " ) ;
2012-11-16 14:00:10 +00:00
uno : : Sequence < beans : : PropertyValue > aPathProps ;
2012-09-19 15:45:12 +02:00
for ( int i = 0 ; i < aProps . getLength ( ) ; + + i )
{
const beans : : PropertyValue & rProp = aProps [ i ] ;
if ( rProp . Name = = " Path " )
2012-11-16 14:00:10 +00:00
rProp . Value > > = aPathProps ;
2012-09-19 15:45:12 +02:00
}
uno : : Sequence < drawing : : EnhancedCustomShapeSegment > aSegments ;
2012-11-16 14:00:10 +00:00
for ( int i = 0 ; i < aPathProps . getLength ( ) ; + + i )
2012-09-19 15:45:12 +02:00
{
2012-11-16 14:00:10 +00:00
const beans : : PropertyValue & rProp = aPathProps [ i ] ;
2012-09-19 15:45:12 +02:00
if ( rProp . Name = = " Segments " )
rProp . Value > > = aSegments ;
}
CPPUNIT_ASSERT_EQUAL ( sal_Int16 ( 10 ) , aSegments [ 1 ] . Count ) ;
2013-08-27 16:44:12 +02:00
CPPUNIT_ASSERT_EQUAL ( text : : WrapTextMode_THROUGHT , getProperty < text : : WrapTextMode > ( getShape ( 1 ) , " Surround " ) ) ;
2012-09-19 15:45:12 +02:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo52389 , " fdo52389.rtf " )
2012-09-21 11:58:02 +02:00
{
// The last '!' character at the end of the document was lost
CPPUNIT_ASSERT_EQUAL ( 6 , getLength ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo49655 , " fdo49655.rtf " )
2012-09-24 09:41:02 +01:00
{
/*
2013-03-27 12:09:32 +01:00
* 49655 :
2012-09-24 09:41:02 +01:00
* The problem was that the table was not imported due to the ' ' string in the middle of the table definition .
*
* xray ThisComponent . TextTables . Count ' was 0
2013-11-04 21:32:21 +01:00
*/
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 ( ) ) ;
}
DECLARE_RTFIMPORT_TEST ( testFdo62805 , " fdo62805.rtf " )
{
/*
2013-03-27 12:09:32 +01:00
* 62805 :
* The problem was that the table was not imported due to the absence of \ pard after \ row .
* The table was instead in a group ( the ' } ' replace the \ pard ) .
2012-09-24 09:41:02 +01:00
*/
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 ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo52475 , " fdo52475.rtf " )
2012-09-28 17:45:21 +02:00
{
// The problem was that \chcbpat0 resulted in no color, instead of COL_AUTO.
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( - 1 ) , getProperty < sal_Int32 > ( getRun ( getParagraph ( 1 ) , 3 ) , " CharBackColor " ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo55493 , " fdo55493.rtf " )
2012-10-11 16:48:55 +02:00
{
// The problem was that the width of the PNG was detected as 15,24cm, instead of 3.97cm
2013-08-27 16:44:12 +02:00
uno : : Reference < drawing : : XShape > xShape ( getShape ( 1 ) , uno : : UNO_QUERY ) ;
2012-10-11 16:48:55 +02:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 3969 ) , xShape - > getSize ( ) . Width ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testCopyPastePageStyle , " copypaste-pagestyle.rtf " )
2012-10-17 10:09:57 +02:00
{
// The problem was that RTF import during copy&paste did not ignore page styles.
// Once we have more copy&paste tests, makes sense to refactor this to some helper method.
2013-01-15 11:12:55 +01:00
paste ( " copypaste-pagestyle-paste.rtf " ) ;
2012-10-17 10:09:57 +02:00
2012-11-26 07:38:27 +01:00
uno : : Reference < beans : : XPropertySet > xPropertySet ( getStyles ( " PageStyles " ) - > getByName ( DEFAULT_STYLE ) , uno : : UNO_QUERY ) ;
2012-10-17 10:09:57 +02:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 21001 ) , getProperty < sal_Int32 > ( xPropertySet , " Width " ) ) ; // Was letter, i.e. 21590
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testCopyPasteFootnote , " copypaste-footnote.rtf " )
2013-01-15 09:58:48 +01:00
{
// The RTF import did not handle the case when the position wasn't the main document XText, but something different, e.g. a footnote.
uno : : Reference < text : : XFootnotesSupplier > xFootnotesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xFootnotes ( xFootnotesSupplier - > getFootnotes ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xTextRange ( xFootnotes - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
2013-01-15 11:12:55 +01:00
paste ( " copypaste-footnote-paste.rtf " , xTextRange ) ;
2013-01-15 09:58:48 +01:00
CPPUNIT_ASSERT_EQUAL ( OUString ( " bbb " ) , xTextRange - > getString ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo61193 , " hello.rtf " )
2013-04-15 20:37:52 +02:00
{
// Pasting content that contained a footnote caused a crash.
uno : : Reference < text : : XTextDocument > xTextDocument ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xText ( xTextDocument - > getText ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xEnd = xText - > getEnd ( ) ;
paste ( " fdo61193.rtf " , xEnd ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testShptxtPard , " shptxt-pard.rtf " )
2012-10-17 11:17:14 +02:00
{
// The problem was that \pard inside \shptxt caused loss of shape text
2013-08-27 16:44:12 +02:00
uno : : Reference < text : : XText > xText ( getShape ( 1 ) , uno : : UNO_QUERY ) ;
2012-10-17 11:17:14 +02:00
CPPUNIT_ASSERT_EQUAL ( OUString ( " shape text " ) , xText - > getString ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testDoDhgt , " do-dhgt.rtf " )
2012-10-17 16:12:15 +02:00
{
uno : : Reference < drawing : : XDrawPageSupplier > xDrawPageSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xDraws ( xDrawPageSupplier - > getDrawPage ( ) , uno : : UNO_QUERY ) ;
for ( int i = 0 ; i < xDraws - > getCount ( ) ; + + i )
{
sal_Int32 nFillColor = getProperty < sal_Int32 > ( xDraws - > getByIndex ( i ) , " FillColor " ) ;
if ( nFillColor = = 0xc0504d ) // red
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0 ) , getProperty < sal_Int32 > ( xDraws - > getByIndex ( i ) , " ZOrder " ) ) ;
else if ( nFillColor = = 0x9bbb59 ) // green
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 1 ) , getProperty < sal_Int32 > ( xDraws - > getByIndex ( i ) , " ZOrder " ) ) ;
else if ( nFillColor = = 0x4f81bd ) // blue
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 2 ) , getProperty < sal_Int32 > ( xDraws - > getByIndex ( i ) , " ZOrder " ) ) ;
}
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testDplinehollow , " dplinehollow.rtf " )
2012-10-18 09:09:03 +02:00
{
2013-08-27 16:44:12 +02:00
uno : : Reference < beans : : XPropertySet > xPropertySet ( getShape ( 1 ) , uno : : UNO_QUERY ) ;
2012-10-18 09:09:03 +02:00
CPPUNIT_ASSERT_EQUAL ( drawing : : LineStyle_NONE , getProperty < drawing : : LineStyle > ( xPropertySet , " LineStyle " ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testLeftmarginDefault , " leftmargin-default.rtf " )
2012-10-18 13:36:49 +02:00
{
// The default left/right margin was incorrect when the top margin was set to zero.
2012-11-26 07:38:27 +01:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 2540 ) , getProperty < sal_Int32 > ( getStyles ( " PageStyles " ) - > getByName ( DEFAULT_STYLE ) , " LeftMargin " ) ) ;
2012-10-18 13:36:49 +02:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testDppolyline , " dppolyline.rtf " )
2012-10-19 12:06:34 +02:00
{
// This was completely ignored, for now, just make sure we have all 4 lines.
uno : : Reference < drawing : : XDrawPageSupplier > xDrawPageSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xDraws ( xDrawPageSupplier - > getDrawPage ( ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 4 ) , xDraws - > getCount ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo56512 , " fdo56512.rtf " )
2012-10-30 17:39:31 +01:00
{
uno : : Reference < text : : XTextFramesSupplier > xTextFramesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xIndexAccess ( xTextFramesSupplier - > getTextFrames ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xTextRange ( xIndexAccess - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
2013-07-31 12:46:29 +02:00
OUString aExpected ( " \xd7 \xa2 \xd7 \x95 \xd7 \xa1 \xd7 \xa7 \xd7 \x9e \xd7 \x95 \xd7 \xa8 \xd7 \xa9 \xd7 \x94 " , 20 , RTL_TEXTENCODING_UTF8 ) ;
2012-10-30 17:39:31 +01:00
CPPUNIT_ASSERT_EQUAL ( aExpected , xTextRange - > getString ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo52989 , " fdo52989.rtf " )
2012-11-05 16:35:59 +01:00
{
// Same as n#192129, but for JPEG files.
2013-08-27 16:44:12 +02:00
uno : : Reference < drawing : : XShape > xShape ( getShape ( 1 ) , uno : : UNO_QUERY ) ;
2014-06-04 10:57:29 +02:00
// This was 2, should be 423 (or 369?).
CPPUNIT_ASSERT ( xShape - > getSize ( ) . Width > = 369 ) ;
2012-11-05 16:35:59 +01:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo48442 , " fdo48442.rtf " )
2012-11-06 10:53:10 +01:00
{
// The problem was that \pvmrg is the default in RTF, but not in Writer.
2013-08-27 16:44:12 +02:00
uno : : Reference < drawing : : XShape > xShape = getShape ( 1 ) ;
2012-11-06 10:53:10 +01:00
CPPUNIT_ASSERT_EQUAL ( text : : RelOrientation : : PAGE_PRINT_AREA , getProperty < sal_Int16 > ( xShape , " VertOrientRelation " ) ) ; // was FRAME
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo55525 , " fdo55525.rtf " )
2012-11-13 17:30:18 +01:00
{
uno : : Reference < text : : XTextTablesSupplier > xTextTablesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xTables ( xTextTablesSupplier - > getTextTables ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextTable > xTable ( xTables - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
// Negative left margin was ~missing, -191
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( - 1877 ) , getProperty < sal_Int32 > ( xTable , " LeftMargin " ) ) ;
// Cell width of A1 was 3332 (e.g. not set, 30% percent of total width)
uno : : Reference < table : : XTableRows > xTableRows ( xTable - > getRows ( ) , uno : : UNO_QUERY ) ;
2013-03-28 16:47:28 +01:00
CPPUNIT_ASSERT_EQUAL ( sal_Int16 ( 896 ) , getProperty < uno : : Sequence < text : : TableColumnSeparator > > ( xTableRows - > getByIndex ( 0 ) , " TableColumnSeparators " ) [ 0 ] . Position ) ;
2012-11-13 17:30:18 +01:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo57708 , " fdo57708.rtf " )
2012-11-30 17:15:35 +01:00
{
// There were two issues: the doc was of 2 pages and the picture was missing.
CPPUNIT_ASSERT_EQUAL ( 1 , getPages ( ) ) ;
uno : : Reference < drawing : : XDrawPageSupplier > xDrawPageSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xDraws ( xDrawPageSupplier - > getDrawPage ( ) , uno : : UNO_QUERY ) ;
// Two objects: a picture and a textframe.
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 2 ) , xDraws - > getCount ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo54473 , " fdo54473.rtf " )
2012-12-04 10:38:53 +01:00
{
// The problem was that character styles were not imported due to a typo.
CPPUNIT_ASSERT_EQUAL ( OUString ( " Anot " ) , getProperty < OUString > ( getRun ( getParagraph ( 1 ) , 1 , " Text " ) , " CharStyleName " ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " ForeignTxt " ) , getProperty < OUString > ( getRun ( getParagraph ( 1 ) , 3 , " character " ) , " CharStyleName " ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo49934 , " fdo49934.rtf " )
2012-12-08 14:04:16 +01:00
{
// Column break without columns defined should be a page break, but it was just ignored.
CPPUNIT_ASSERT_EQUAL ( 2 , getPages ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo57886 , " fdo57886.rtf " )
2012-12-22 19:35:30 +01:00
{
// Was 'int from <?> to <?> <?>'.
CPPUNIT_ASSERT_EQUAL ( OUString ( " int from {firstlower} to {firstupper} {firstbody} " ) , getFormula ( getRun ( getParagraph ( 1 ) , 1 ) ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo58076 , " fdo58076.rtf " )
2012-12-23 14:37:59 +01:00
{
// An additional section was created, so the default page style didn't have the custom margins.
uno : : Reference < beans : : XPropertySet > xStyle ( getStyles ( " PageStyles " ) - > getByName ( DEFAULT_STYLE ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 2251 ) , getProperty < sal_Int32 > ( xStyle , " LeftMargin " ) ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 1752 ) , getProperty < sal_Int32 > ( xStyle , " RightMargin " ) ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 635 ) , getProperty < sal_Int32 > ( xStyle , " TopMargin " ) ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 635 ) , getProperty < sal_Int32 > ( xStyle , " BottomMargin " ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo57678 , " fdo57678.rtf " )
2012-12-24 15:06:15 +01:00
{
// Paragraphs of the two tables were not converted to tables.
uno : : Reference < text : : XTextTablesSupplier > xTextTablesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xIndexAccess ( xTextTablesSupplier - > getTextTables ( ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 2 ) , xIndexAccess - > getCount ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo45183 , " fdo45183.rtf " )
2012-12-27 23:37:35 +01:00
{
// Was text::WrapTextMode_PARALLEL, i.e. shpfblwtxt didn't send the shape below text.
2013-08-27 16:44:12 +02:00
CPPUNIT_ASSERT_EQUAL ( text : : WrapTextMode_THROUGHT , getProperty < text : : WrapTextMode > ( getShape ( 1 ) , " Surround " ) ) ;
2012-12-27 23:37:35 +01:00
uno : : Reference < text : : XTextTablesSupplier > xTextTablesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xTables ( xTextTablesSupplier - > getTextTables ( ) , uno : : UNO_QUERY ) ;
// Was 247, resulting in a table having width almost zero and height of 10+ pages.
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 16237 ) , getProperty < sal_Int32 > ( xTables - > getByIndex ( 0 ) , " Width " ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo54612 , " fdo54612.rtf " )
2012-12-30 22:55:20 +01:00
{
// \dpptx without a \dppolycount caused a crash.
uno : : Reference < drawing : : XDrawPageSupplier > xDrawPageSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xDraws ( xDrawPageSupplier - > getDrawPage ( ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 8 ) , xDraws - > getCount ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo58933 , " fdo58933.rtf " )
2013-01-09 15:29:29 +01:00
{
// The problem was that the table had an additional cell in its first line.
uno : : Reference < text : : XTextTablesSupplier > xTextTablesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xTables ( xTextTablesSupplier - > getTextTables ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextTable > xTable ( xTables - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
// This was 4.
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 3 ) , xTable - > getCellNames ( ) . getLength ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo44053 , " fdo44053.rtf " )
2013-01-14 17:26:35 +01:00
{
uno : : Reference < text : : XTextTablesSupplier > xTablesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
2014-05-16 22:11:51 +02:00
uno : : Reference < container : : XIndexAccess > xTables ( xTablesSupplier - > getTextTables ( ) , uno : : UNO_QUERY ) ;
2013-01-14 17:26:35 +01:00
uno : : Reference < text : : XTextTable > xTextTable ( xTables - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
uno : : Reference < table : : XTableRows > xTableRows ( xTextTable - > getRows ( ) , uno : : UNO_QUERY ) ;
// The with of the table's A1 and A2 cell should equal.
CPPUNIT_ASSERT_EQUAL ( getProperty < uno : : Sequence < text : : TableColumnSeparator > > ( xTableRows - > getByIndex ( 0 ) , " TableColumnSeparators " ) [ 0 ] . Position ,
2014-05-16 22:11:51 +02:00
getProperty < uno : : Sequence < text : : TableColumnSeparator > > ( xTableRows - > getByIndex ( 1 ) , " TableColumnSeparators " ) [ 0 ] . Position ) ;
2013-01-14 17:26:35 +01:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo48440 , " fdo48440.rtf " )
2013-02-01 11:20:52 +01:00
{
// Page break was ignored.
CPPUNIT_ASSERT_EQUAL ( 2 , getPages ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo58646line , " fdo58646line.rtf " )
2013-02-05 20:46:19 +01:00
{
// \line symbol was ignored
getParagraph ( 1 , " foo \n bar " ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo58646 , " fdo58646.rtf " )
2013-02-02 15:29:24 +01:00
{
2014-02-03 14:01:31 +01:00
// Page break was ignored inside a continuous section, on title page.
2013-02-02 15:29:24 +01:00
CPPUNIT_ASSERT_EQUAL ( 2 , getPages ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo59419 , " fdo59419.rtf " )
2013-02-03 14:37:38 +01:00
{
// Junk to be ignored broke import of the table.
uno : : Reference < text : : XTextTablesSupplier > xTablesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xTables ( xTablesSupplier - > getTextTables ( ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 1 ) , xTables - > getCount ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo58076_2 , " fdo58076-2.rtf " )
2013-02-05 18:16:12 +01:00
{
// Position of the picture wasn't correct.
2014-04-04 13:39:38 +03:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( convertTwipToMm100 ( 8345 ) ) , getProperty < sal_Int32 > ( getShape ( 1 ) , " HoriOrientPosition " ) ) ;
2013-02-05 18:16:12 +01:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo59953 , " fdo59953.rtf " )
2013-02-08 12:34:55 +01:00
{
uno : : Reference < text : : XTextTablesSupplier > xTextTablesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xTables ( xTextTablesSupplier - > getTextTables ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextTable > xTable ( xTables - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
// Cell width of A1 was 4998 (e.g. not set / not wide enough, ~50% of total width)
uno : : Reference < table : : XTableRows > xTableRows ( xTable - > getRows ( ) , uno : : UNO_QUERY ) ;
2013-03-28 16:47:28 +01:00
CPPUNIT_ASSERT_EQUAL ( sal_Int16 ( 7649 ) , getProperty < uno : : Sequence < text : : TableColumnSeparator > > ( xTableRows - > getByIndex ( 0 ) , " TableColumnSeparators " ) [ 0 ] . Position ) ;
2013-02-08 12:34:55 +01:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo59638 , " fdo59638.rtf " )
2013-03-01 17:38:03 +01:00
{
// The problem was that w:lvlOverride inside w:num was ignores by dmapper.
uno : : Reference < beans : : XPropertySet > xPropertySet ( getStyles ( " NumberingStyles " ) - > getByName ( " WWNum1 " ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xLevels ( xPropertySet - > getPropertyValue ( " NumberingRules " ) , uno : : UNO_QUERY ) ;
uno : : Sequence < beans : : PropertyValue > aProps ;
xLevels - > getByIndex ( 0 ) > > = aProps ; // 1st level
for ( int i = 0 ; i < aProps . getLength ( ) ; + + i )
{
const beans : : PropertyValue & rProp = aProps [ i ] ;
if ( rProp . Name = = " BulletChar " )
{
// Was '*', should be 'o'.
CPPUNIT_ASSERT_EQUAL ( OUString ( " \xEF \x82 \xB7 " , 3 , RTL_TEXTENCODING_UTF8 ) , rProp . Value . get < OUString > ( ) ) ;
return ;
}
}
CPPUNIT_FAIL ( " no BulletChar property " ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo60722 , " fdo60722.rtf " )
2013-03-06 16:23:22 +01:00
{
// The problem was that the larger shape was over the smaller one, and not the other way around.
2013-08-27 16:44:12 +02:00
uno : : Reference < beans : : XPropertySet > xShape ( getShape ( 1 ) , uno : : UNO_QUERY ) ;
2013-03-06 16:23:22 +01:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0 ) , getProperty < sal_Int32 > ( xShape , " ZOrder " ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " larger " ) , getProperty < OUString > ( xShape , " Description " ) ) ;
2013-08-27 16:44:12 +02:00
xShape . set ( getShape ( 2 ) , uno : : UNO_QUERY ) ;
2013-03-06 16:23:22 +01:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 1 ) , getProperty < sal_Int32 > ( xShape , " ZOrder " ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " smaller " ) , getProperty < OUString > ( xShape , " Description " ) ) ;
// Color of the line was blue, and it had zero width.
2013-08-27 16:44:12 +02:00
xShape . set ( getShape ( 3 ) , uno : : UNO_QUERY ) ;
2013-03-06 16:23:22 +01:00
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 26 ) , getProperty < sal_uInt32 > ( xShape , " LineWidth " ) ) ;
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 0 ) , getProperty < sal_uInt32 > ( xShape , " LineColor " ) ) ;
}
2014-03-14 16:48:17 +01:00
DECLARE_RTFIMPORT_TEST ( testDoDhgtOld , " do-dhgt-old.rtf " )
{
// The file contains 3 shapes which have the same dhgt (z-order).
// Test that the order is 1) a 2) black rectangle 3) b, and not something else
uno : : Reference < text : : XText > xShape ( getShape ( 1 ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0 ) , getProperty < sal_Int32 > ( xShape , " ZOrder " ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " a " ) , xShape - > getString ( ) ) ;
xShape . set ( getShape ( 2 ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 1 ) , getProperty < sal_Int32 > ( xShape , " ZOrder " ) ) ;
CPPUNIT_ASSERT_EQUAL ( COL_BLACK , getProperty < sal_uInt32 > ( xShape , " FillColor " ) ) ;
xShape . set ( getShape ( 3 ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 2 ) , getProperty < sal_Int32 > ( xShape , " ZOrder " ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " b " ) , xShape - > getString ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo61909 , " fdo61909.rtf " )
2013-03-18 12:40:46 +01:00
{
uno : : Reference < text : : XTextRange > xTextRange = getRun ( getParagraph ( 1 ) , 1 ) ;
2013-03-18 14:49:02 +01:00
// Was the Writer default font.
2013-03-18 12:40:46 +01:00
CPPUNIT_ASSERT_EQUAL ( OUString ( " Courier New " ) , getProperty < OUString > ( xTextRange , " CharFontName " ) ) ;
2014-06-10 12:26:26 +04:00
// It is white (0xFFFFFF) in document
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 0xFFFFFF ) , getProperty < sal_uInt32 > ( xTextRange , " CharBackColor " ) ) ;
2013-03-18 12:40:46 +01:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo62288 , " fdo62288.rtf " )
2013-03-22 11:08:12 +01:00
{
uno : : Reference < text : : XTextTablesSupplier > xTextTablesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xTables ( xTextTablesSupplier - > getTextTables ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextTable > xTable ( xTables - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xCell ( xTable - > getCellByName ( " B1 " ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumerationAccess > xParaEnumAccess ( xCell - > getText ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumeration > xParaEnum = xParaEnumAccess - > createEnumeration ( ) ;
uno : : Reference < text : : XTextRange > xPara ( xParaEnum - > nextElement ( ) , uno : : UNO_QUERY ) ;
// Margins were inherited from the previous cell, even there was a \pard there.
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0 ) , getProperty < sal_Int32 > ( xPara , " ParaLeftMargin " ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo37716 , " fdo37716.rtf " )
2013-03-28 12:19:23 +01:00
{
uno : : Reference < text : : XTextFramesSupplier > xTextFramesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xFrames ( xTextFramesSupplier - > getTextFrames ( ) , uno : : UNO_QUERY ) ;
// \nowrap got ignored, so Surround was text::WrapTextMode_PARALLEL
CPPUNIT_ASSERT_EQUAL ( text : : WrapTextMode_NONE , getProperty < text : : WrapTextMode > ( xFrames - > getByIndex ( 0 ) , " Surround " ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo51916 , " fdo51916.rtf " )
2013-04-03 17:28:42 +02:00
{
// Complex nested table caused a crash.
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo63023 , " fdo63023.rtf " )
2013-04-18 14:42:22 +02:00
{
uno : : Reference < text : : XText > xHeaderText = getProperty < uno : : Reference < text : : XText > > ( getStyles ( " PageStyles " ) - > getByName ( DEFAULT_STYLE ) , " HeaderText " ) ;
// Back color was black (0) in the header, due to missing color table in the substream.
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0xFFFF99 ) , getProperty < sal_Int32 > ( getRun ( getParagraphOfText ( 1 , xHeaderText ) , 1 ) , " CharBackColor " ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo42109 , " fdo42109.rtf " )
2013-05-11 18:03:57 +02:00
{
uno : : Reference < text : : XTextTablesSupplier > xTextTablesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xTables ( xTextTablesSupplier - > getTextTables ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextTable > xTable ( xTables - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xCell ( xTable - > getCellByName ( " B1 " ) , uno : : UNO_QUERY ) ;
// Make sure the page number is imported as a field in the B1 cell.
CPPUNIT_ASSERT_EQUAL ( OUString ( " TextField " ) , getProperty < OUString > ( getRun ( getParagraphOfText ( 1 , xCell - > getText ( ) ) , 1 ) , " TextPortionType " ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo62977 , " fdo62977.rtf " )
2013-05-15 09:59:18 +02:00
{
// The middle character was imported as '?' instead of the proper unicode value.
getRun ( getParagraph ( 1 ) , 1 , OUString ( " \xE5 \xB9 \xB4 \xEF \xBC \x94 \xE6 \x9C \x88 " , 9 , RTL_TEXTENCODING_UTF8 ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testN818997 , " n818997.rtf " )
2013-05-21 14:56:45 +02:00
{
// \page was ignored between two \shp tokens.
CPPUNIT_ASSERT_EQUAL ( 2 , getPages ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo64671 , " fdo64671.rtf " )
2013-05-27 10:44:01 +02:00
{
// Additional '}' was inserted before the special character.
getRun ( getParagraph ( 1 ) , 1 , OUString ( " \xC5 \xBD " , 2 , RTL_TEXTENCODING_UTF8 ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testPageBackground , " page-background.rtf " )
2013-05-28 21:34:37 +02:00
{
// The problem was that \background was ignored.
uno : : Reference < beans : : XPropertySet > xPageStyle ( getStyles ( " PageStyles " ) - > getByName ( DEFAULT_STYLE ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0x92D050 ) , getProperty < sal_Int32 > ( xPageStyle , " BackColor " ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo62044 , " fdo62044.rtf " )
2013-06-04 12:21:11 +02:00
{
// The problem was that RTF import during copy&paste did not ignore existing paragraph styles.
uno : : Reference < text : : XTextDocument > xTextDocument ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xText ( xTextDocument - > getText ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xEnd = xText - > getEnd ( ) ;
paste ( " fdo62044-paste.rtf " , xEnd ) ;
uno : : Reference < beans : : XPropertySet > xPropertySet ( getStyles ( " ParagraphStyles " ) - > getByName ( " Heading 1 " ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( 10.f , getProperty < float > ( xPropertySet , " CharHeight " ) ) ; // Was 18, i.e. reset back to original value.
}
2014-06-13 23:49:59 +02:00
DECLARE_RTFIMPORT_TEST ( testFdo70578 , " fdo70578.rtf " )
{
// Style without explicit \s0 was not imported as the default style
uno : : Reference < beans : : XPropertySet > xPropertySet (
getStyles ( " ParagraphStyles " ) - > getByName ( " Subtitle " ) , uno : : UNO_QUERY ) ;
uno : : Reference < style : : XStyle > xStyle ( xPropertySet , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " Standard " ) , xStyle - > getParentStyle ( ) ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0 ) , getProperty < sal_Int32 > ( xPropertySet , " ParaTopMargin " ) ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0 ) , getProperty < sal_Int32 > ( xPropertySet , " ParaBottomMargin " ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testPoshPosv , " posh-posv.rtf " )
2013-06-15 19:05:50 +02:00
{
2013-08-27 16:44:12 +02:00
CPPUNIT_ASSERT_EQUAL ( text : : HoriOrientation : : CENTER , getProperty < sal_Int16 > ( getShape ( 1 ) , " HoriOrient " ) ) ;
CPPUNIT_ASSERT_EQUAL ( text : : VertOrientation : : CENTER , getProperty < sal_Int16 > ( getShape ( 1 ) , " VertOrient " ) ) ;
CPPUNIT_ASSERT_EQUAL ( true , getProperty < bool > ( getShape ( 1 ) , " FrameIsAutomaticHeight " ) ) ;
2013-06-15 19:05:50 +02:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testN825305 , " n825305.rtf " )
2013-06-18 16:22:32 +02:00
{
// The problem was that the textbox wasn't transparent, due to unimplemented fFilled == 0.
2013-08-27 16:44:12 +02:00
uno : : Reference < beans : : XPropertyState > xPropertyState ( getShape ( 2 ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 100 ) , getProperty < sal_Int32 > ( getShape ( 2 ) , " BackColorTransparency " ) ) ;
2013-06-18 16:22:32 +02:00
beans : : PropertyState ePropertyState = xPropertyState - > getPropertyState ( " BackColorTransparency " ) ;
// Was beans::PropertyState_DEFAULT_VALUE.
CPPUNIT_ASSERT_EQUAL ( beans : : PropertyState_DIRECT_VALUE , ePropertyState ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testParaBottomMargin , " para-bottom-margin.rtf " )
2013-06-21 15:48:39 +02:00
{
2014-06-19 09:39:49 +02:00
uno : : Reference < beans : : XPropertySet > xPropertySet ( getStyles ( " ParagraphStyles " ) - > getByName ( " Standard " ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 353 ) , getProperty < sal_Int32 > ( xPropertySet , " ParaBottomMargin " ) ) ;
n#825305: writerfilter RTF import: override style properties like Word
It would certainly be immediately obvious to any reader of the RTF spec
that \sN will apply the style with index N to the current paragraph.
But actually, that is not what Word does when it reads \sN...
what it really does is to apply the style with index N, and then for
every attribute in that style, apply the same attribute with a default
value to the paragraph, effectively overriding what's in the style.
If that doesn't make any sense to you, well, have you heard the joke
about how many Microsoft engineers it takes to change a light bulb?
Also, \pard apparently implies \s0.
To implement that, change RTFSprms::deduplicate() to recursively
look for style SPRMs that are missing in the properties, and put
in default ones, currently just for 2 keywords \sa and \sb.
This requires changing deduplicate() to be const and return a new value,
since it is no longer idempotent, as the erased SPRMs would get
defaulted on the next run.
While at it, fix RTFValue::equals() which did not compare m_sValue.
This fixes the testParaBottomMargin test that was broken by the fix
for fdo#70578.
Change-Id: I4ced38628d76f6c41b488d608a804883493ff00b
2014-06-17 18:40:04 +02:00
2013-06-21 15:48:39 +02:00
// This was 353, i.e. bottom margin of the paragraph was 0.35cm instead of 0.
n#825305: writerfilter RTF import: override style properties like Word
It would certainly be immediately obvious to any reader of the RTF spec
that \sN will apply the style with index N to the current paragraph.
But actually, that is not what Word does when it reads \sN...
what it really does is to apply the style with index N, and then for
every attribute in that style, apply the same attribute with a default
value to the paragraph, effectively overriding what's in the style.
If that doesn't make any sense to you, well, have you heard the joke
about how many Microsoft engineers it takes to change a light bulb?
Also, \pard apparently implies \s0.
To implement that, change RTFSprms::deduplicate() to recursively
look for style SPRMs that are missing in the properties, and put
in default ones, currently just for 2 keywords \sa and \sb.
This requires changing deduplicate() to be const and return a new value,
since it is no longer idempotent, as the erased SPRMs would get
defaulted on the next run.
While at it, fix RTFValue::equals() which did not compare m_sValue.
This fixes the testParaBottomMargin test that was broken by the fix
for fdo#70578.
Change-Id: I4ced38628d76f6c41b488d608a804883493ff00b
2014-06-17 18:40:04 +02:00
// The reason why this is 0 despite the default style containing \sa200
// is that Word will actually interpret \sN (or \pard which apparently
// implies \s0) as "set style N and for every attribute of that style,
// set an attribute with default value on the paragraph"
2013-06-21 15:48:39 +02:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0 ) , getProperty < sal_Int32 > ( getParagraph ( 1 ) , " ParaBottomMargin " ) ) ;
n#825305: writerfilter RTF import: override style properties like Word
It would certainly be immediately obvious to any reader of the RTF spec
that \sN will apply the style with index N to the current paragraph.
But actually, that is not what Word does when it reads \sN...
what it really does is to apply the style with index N, and then for
every attribute in that style, apply the same attribute with a default
value to the paragraph, effectively overriding what's in the style.
If that doesn't make any sense to you, well, have you heard the joke
about how many Microsoft engineers it takes to change a light bulb?
Also, \pard apparently implies \s0.
To implement that, change RTFSprms::deduplicate() to recursively
look for style SPRMs that are missing in the properties, and put
in default ones, currently just for 2 keywords \sa and \sb.
This requires changing deduplicate() to be const and return a new value,
since it is no longer idempotent, as the erased SPRMs would get
defaulted on the next run.
While at it, fix RTFValue::equals() which did not compare m_sValue.
This fixes the testParaBottomMargin test that was broken by the fix
for fdo#70578.
Change-Id: I4ced38628d76f6c41b488d608a804883493ff00b
2014-06-17 18:40:04 +02:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 2 ) , getProperty < sal_Int32 > ( getParagraph ( 1 ) , " ParaTopMargin " ) ) ;
2013-06-21 15:48:39 +02:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testN823655 , " n823655.rtf " )
2013-06-24 14:13:39 +02:00
{
2013-08-27 16:44:12 +02:00
uno : : Sequence < beans : : PropertyValue > aProps = getProperty < uno : : Sequence < beans : : PropertyValue > > ( getShape ( 1 ) , " CustomShapeGeometry " ) ;
2013-06-24 14:13:39 +02:00
uno : : Sequence < beans : : PropertyValue > aPathProps ;
for ( int i = 0 ; i < aProps . getLength ( ) ; + + i )
{
const beans : : PropertyValue & rProp = aProps [ i ] ;
if ( rProp . Name = = " Path " )
aPathProps = rProp . Value . get < uno : : Sequence < beans : : PropertyValue > > ( ) ;
}
uno : : Sequence < drawing : : EnhancedCustomShapeParameterPair > aCoordinates ;
for ( int i = 0 ; i < aPathProps . getLength ( ) ; + + i )
{
const beans : : PropertyValue & rProp = aPathProps [ i ] ;
if ( rProp . Name = = " Coordinates " )
aCoordinates = rProp . Value . get < uno : : Sequence < drawing : : EnhancedCustomShapeParameterPair > > ( ) ;
}
// The first coordinate pair of this freeform shape was 286,0 instead of 0,286.
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 286 ) , aCoordinates [ 0 ] . Second . Value . get < sal_Int32 > ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo66040 , " fdo66040.rtf " )
2013-06-25 14:47:48 +02:00
{
uno : : Reference < drawing : : XDrawPageSupplier > xDrawPageSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xDraws ( xDrawPageSupplier - > getDrawPage ( ) , uno : : UNO_QUERY ) ;
// This was 0 (no shapes were imported), we want two textframes.
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 2 ) , xDraws - > getCount ( ) ) ;
// The second paragraph of the first shape should be actually a table, with "A" in its A1 cell.
uno : : Reference < text : : XTextRange > xTextRange ( xDraws - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XText > xText = xTextRange - > getText ( ) ;
uno : : Reference < text : : XTextTable > xTable ( getParagraphOrTable ( 2 , xText ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " A " ) , uno : : Reference < text : : XTextRange > ( xTable - > getCellByName ( " A1 " ) , uno : : UNO_QUERY ) - > getString ( ) ) ;
// Make sure the second shape has the correct position and size.
uno : : Reference < drawing : : XShape > xShape ( xDraws - > getByIndex ( 1 ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 14420 ) , getProperty < sal_Int32 > ( xShape , " HoriOrientPosition " ) ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( - 1032 ) , getProperty < sal_Int32 > ( xShape , " VertOrientPosition " ) ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 14000 ) , xShape - > getSize ( ) . Width ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 21001 ) , xShape - > getSize ( ) . Height ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testN823675 , " n823675.rtf " )
2013-06-26 15:47:54 +02:00
{
uno : : Reference < beans : : XPropertySet > xPropertySet ( getStyles ( " NumberingStyles " ) - > getByName ( " WWNum1 " ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xLevels ( xPropertySet - > getPropertyValue ( " NumberingRules " ) , uno : : UNO_QUERY ) ;
uno : : Sequence < beans : : PropertyValue > aProps ;
xLevels - > getByIndex ( 0 ) > > = aProps ; // 1st level
awt : : FontDescriptor aFont ;
for ( int i = 0 ; i < aProps . getLength ( ) ; + + i )
{
const beans : : PropertyValue & rProp = aProps [ i ] ;
if ( rProp . Name = = " BulletFont " )
aFont = rProp . Value . get < awt : : FontDescriptor > ( ) ;
}
// This was empty, i.e. no font name was set for the bullet numbering.
CPPUNIT_ASSERT_EQUAL ( OUString ( " Symbol " ) , aFont . Name ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo47802 , " fdo47802.rtf " )
2013-07-01 11:37:30 +02:00
{
uno : : Reference < drawing : : XDrawPageSupplier > xDrawPageSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xDraws ( xDrawPageSupplier - > getDrawPage ( ) , uno : : UNO_QUERY ) ;
// Shape inside table was ignored.
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 1 ) , xDraws - > getCount ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo39001 , " fdo39001.rtf " )
2013-07-05 11:37:24 +02:00
{
// Document was of 4 pages, \sect at the end of the doc wasn't ignored.
CPPUNIT_ASSERT_EQUAL ( 3 , getPages ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testGroupshape , " groupshape.rtf " )
{
uno : : Reference < drawing : : XDrawPageSupplier > xDrawPageSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xDraws ( xDrawPageSupplier - > getDrawPage ( ) , uno : : UNO_QUERY ) ;
// There should be a single groupshape with 2 children.
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 1 ) , xDraws - > getCount ( ) ) ;
uno : : Reference < drawing : : XShapes > xGroupshape ( xDraws - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 2 ) , xGroupshape - > getCount ( ) ) ;
}
DECLARE_RTFIMPORT_TEST ( testGroupshape_notext , " groupshape-notext.rtf " )
2013-07-08 16:21:28 +02:00
{
uno : : Reference < drawing : : XDrawPageSupplier > xDrawPageSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xDraws ( xDrawPageSupplier - > getDrawPage ( ) , uno : : UNO_QUERY ) ;
// There should be a single groupshape with 2 children.
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 1 ) , xDraws - > getCount ( ) ) ;
uno : : Reference < drawing : : XShapes > xGroupshape ( xDraws - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 2 ) , xGroupshape - > getCount ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo66565 , " fdo66565.rtf " )
2013-07-09 11:29:33 +02:00
{
uno : : Reference < text : : XTextTablesSupplier > xTextTablesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xTables ( xTextTablesSupplier - > getTextTables ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextTable > xTable ( xTables - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
// Cell width of A2 was 554, should be 453/14846*10000
uno : : Reference < table : : XTableRows > xTableRows ( xTable - > getRows ( ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int16 ( 304 ) , getProperty < uno : : Sequence < text : : TableColumnSeparator > > ( xTableRows - > getByIndex ( 1 ) , " TableColumnSeparators " ) [ 0 ] . Position ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo54900 , " fdo54900.rtf " )
2013-07-15 11:24:39 +02:00
{
uno : : Reference < text : : XTextTablesSupplier > xTextTablesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xTables ( xTextTablesSupplier - > getTextTables ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextTable > xTable ( xTables - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xCell ( xTable - > getCellByName ( " A1 " ) , uno : : UNO_QUERY ) ;
// Paragraph was aligned to left, should be center.
CPPUNIT_ASSERT_EQUAL ( style : : ParagraphAdjust_CENTER , static_cast < style : : ParagraphAdjust > ( getProperty < sal_Int16 > ( getParagraphOfText ( 1 , xCell - > getText ( ) ) , " ParaAdjust " ) ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo64637 , " fdo64637.rtf " )
2013-07-23 12:01:47 +02:00
{
// The problem was that the custom "Company" property was added twice, the second invocation resulted in an exception.
uno : : Reference < document : : XDocumentPropertiesSupplier > xDocumentPropertiesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < beans : : XPropertySet > xPropertySet ( xDocumentPropertiesSupplier - > getDocumentProperties ( ) - > getUserDefinedProperties ( ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " bbb " ) , getProperty < OUString > ( xPropertySet , " Company " ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testN820504 , " n820504.rtf " )
2013-07-25 18:12:51 +02:00
{
// The shape was anchored at-page instead of at-character (that's incorrect as Word only supports at-character and as-character).
2013-08-27 16:44:12 +02:00
CPPUNIT_ASSERT_EQUAL ( text : : TextContentAnchorType_AT_CHARACTER , getProperty < text : : TextContentAnchorType > ( getShape ( 1 ) , " AnchorType " ) ) ;
2013-07-25 18:12:51 +02:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo67365 , " fdo67365.rtf " )
2013-07-27 01:03:06 +02:00
{
uno : : Reference < text : : XTextTablesSupplier > xTextTablesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xTables ( xTextTablesSupplier - > getTextTables ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextTable > xTable ( xTables - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
uno : : Reference < table : : XTableRows > xRows = xTable - > getRows ( ) ;
// The table only had 3 rows.
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 4 ) , xRows - > getCount ( ) ) ;
// This was 4999, i.e. the two cells of the row had equal widths instead of a larger and a smaller cell.
CPPUNIT_ASSERT_EQUAL ( sal_Int16 ( 5290 ) , getProperty < uno : : Sequence < text : : TableColumnSeparator > > ( xRows - > getByIndex ( 2 ) , " TableColumnSeparators " ) [ 0 ] . Position ) ;
uno : : Reference < text : : XTextRange > xCell ( xTable - > getCellByName ( " A2 " ) , uno : : UNO_QUERY ) ;
// Paragraph was aligned to center, should be left.
CPPUNIT_ASSERT_EQUAL ( style : : ParagraphAdjust_LEFT , static_cast < style : : ParagraphAdjust > ( getProperty < sal_Int16 > ( getParagraphOfText ( 1 , xCell - > getText ( ) ) , " ParaAdjust " ) ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo67498 , " fdo67498.rtf " )
2013-08-05 17:08:20 +02:00
{
// Left margin of the default page style wasn't set (was 2000).
2014-04-04 13:39:38 +03:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( convertTwipToMm100 ( 5954 ) ) , getProperty < sal_Int32 > ( getStyles ( " PageStyles " ) - > getByName ( DEFAULT_STYLE ) , " LeftMargin " ) ) ;
2013-08-05 17:08:20 +02:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo47440 , " fdo47440.rtf " )
2013-08-06 16:31:29 +02:00
{
// Vertical and horizontal orientation of the picture wasn't imported (was text::RelOrientation::FRAME).
2013-08-27 16:44:12 +02:00
CPPUNIT_ASSERT_EQUAL ( text : : RelOrientation : : PAGE_FRAME , getProperty < sal_Int16 > ( getShape ( 1 ) , " HoriOrientRelation " ) ) ;
CPPUNIT_ASSERT_EQUAL ( text : : RelOrientation : : PAGE_FRAME , getProperty < sal_Int16 > ( getShape ( 1 ) , " VertOrientRelation " ) ) ;
2013-08-06 16:31:29 +02:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo53556 , " fdo53556.rtf " )
2013-08-09 16:00:04 +02:00
{
// This was drawing::FillStyle_SOLID, which resulted in being non-transparent, hiding text which would be visible.
2013-08-27 16:44:12 +02:00
CPPUNIT_ASSERT_EQUAL ( drawing : : FillStyle_NONE , getProperty < drawing : : FillStyle > ( getShape ( 3 ) , " FillStyle " ) ) ;
2013-08-09 16:00:04 +02:00
// This was a com.sun.star.drawing.CustomShape, which resulted in lack of word wrapping in the bugdoc.
2013-08-27 16:44:12 +02:00
uno : : Reference < beans : : XPropertySet > xShapeProperties ( getShape ( 1 ) , uno : : UNO_QUERY ) ;
2013-08-09 16:00:04 +02:00
uno : : Reference < drawing : : XShapeDescriptor > xShapeDescriptor ( xShapeProperties , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " FrameShape " ) , xShapeDescriptor - > getShapeType ( ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo63428 , " hello.rtf " )
2013-08-12 11:53:45 +02:00
{
// Pasting content that contained an annotation caused a crash.
uno : : Reference < text : : XTextDocument > xTextDocument ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xText ( xTextDocument - > getText ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xEnd = xText - > getEnd ( ) ;
paste ( " fdo63428.rtf " , xEnd ) ;
// Additionally, commented range was imported as a normal comment.
2014-01-09 12:18:12 +01:00
CPPUNIT_ASSERT_EQUAL ( OUString ( " Annotation " ) , getProperty < OUString > ( getRun ( getParagraph ( 1 ) , 2 ) , " TextPortionType " ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " AnnotationEnd " ) , getProperty < OUString > ( getRun ( getParagraph ( 1 ) , 4 ) , " TextPortionType " ) ) ;
2013-08-12 11:53:45 +02:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testGroupshapeRotation , " groupshape-rotation.rtf " )
2013-08-13 10:26:00 +02:00
{
// Rotation on groupshapes wasn't handled correctly, RotateAngle was 4500.
2013-08-27 16:44:12 +02:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 315 * 100 ) , getProperty < sal_Int32 > ( getShape ( 1 ) , " RotateAngle " ) ) ;
2013-08-13 10:26:00 +02:00
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo44715 , " fdo44715.rtf " )
2013-08-17 11:38:45 +02:00
{
uno : : Reference < text : : XTextTable > xTable ( getParagraphOrTable ( 1 ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xCell ( xTable - > getCellByName ( " A1 " ) , uno : : UNO_QUERY ) ;
// Style information wasn't reset, which caused character height to be 16.
CPPUNIT_ASSERT_EQUAL ( 12.f , getProperty < float > ( getParagraphOfText ( 2 , xCell - > getText ( ) ) , " CharHeight " ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo68076 , " fdo68076.rtf " )
2013-08-22 11:21:25 +02:00
{
// Encoding of the last char was wrong (more 'o' than 'y').
OUString aExpected ( " \xD0 \x9E \xD0 \xB1 \xD1 \x8A \xD0 \xB5 \xD0 \xBA \xD1 \x82 \xE2 \x80 \x93 \xD1 \x83 " , 19 , RTL_TEXTENCODING_UTF8 ) ;
getParagraph ( 1 , aExpected ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo68291 , " fdo68291.odt " )
2013-09-09 10:14:19 +02:00
{
uno : : Reference < text : : XTextDocument > xTextDocument ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xText ( xTextDocument - > getText ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xEnd = xText - > getEnd ( ) ;
paste ( " fdo68291-paste.rtf " , xEnd ) ;
// This was "Standard", causing an unwanted page break on next paste.
CPPUNIT_ASSERT_EQUAL ( OUString ( ) , getProperty < OUString > ( getParagraph ( 1 ) , " PageDescName " ) ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo69384 , " hello.rtf " )
2013-10-04 11:02:59 +02:00
{
uno : : Reference < text : : XTextDocument > xTextDocument ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xText ( xTextDocument - > getText ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xEnd = xText - > getEnd ( ) ;
paste ( " fdo69384-paste.rtf " , xEnd ) ;
// Import got interrupted in the middle of style sheet table import,
// resuling in missing styles and text.
getStyles ( " ParagraphStyles " ) - > getByName ( " Text body justified " ) ;
}
2013-11-04 21:32:21 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo70221 , " fdo70221.rtf " )
2013-10-21 09:31:55 +02:00
{
uno : : Reference < drawing : : XDrawPageSupplier > xDrawPageSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xDraws ( xDrawPageSupplier - > getDrawPage ( ) , uno : : UNO_QUERY ) ;
// The picture was imported twice.
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 1 ) , xDraws - > getCount ( ) ) ;
}
2013-11-15 15:05:02 +01:00
DECLARE_RTFIMPORT_TEST ( testCp1000018 , " cp1000018.rtf " )
{
// The problem was that the empty paragraph at the end of the footnote got
// lost during import.
uno : : Reference < text : : XFootnotesSupplier > xFootnotesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xFootnotes ( xFootnotesSupplier - > getFootnotes ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xTextRange ( xFootnotes - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
OUString aExpected ( " Footnote first line. \n " ) ;
2013-12-05 11:33:56 +01:00
CPPUNIT_ASSERT_EQUAL ( aExpected , xTextRange - > getString ( ) ) ;
2013-11-15 15:05:02 +01:00
}
2013-11-04 21:32:21 +01:00
# endif
2012-02-11 17:06:42 +01:00
2014-02-18 11:22:52 +01:00
DECLARE_RTFIMPORT_TEST ( testNestedTable , " rhbz1065629.rtf " )
{
// nested table in second cell was missing
uno : : Reference < text : : XTextTablesSupplier > xTextTablesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xTables ( xTextTablesSupplier - > getTextTables ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextTable > xTable ( xTables - > getByIndex ( 1 ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xCell ( xTable - > getCellByName ( " A1 " ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumerationAccess > xParaEnumAccess ( xCell - > getText ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumeration > xParaEnum = xParaEnumAccess - > createEnumeration ( ) ;
uno : : Reference < text : : XTextRange > xPara ( xParaEnum - > nextElement ( ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " Responsable Commercial: " ) , xPara - > getString ( ) ) ;
xCell . set ( xTable - > getCellByName ( " A2 " ) , uno : : UNO_QUERY ) ;
xParaEnumAccess . set ( xCell - > getText ( ) , uno : : UNO_QUERY ) ;
xParaEnum = xParaEnumAccess - > createEnumeration ( ) ;
xPara . set ( xParaEnum - > nextElement ( ) , uno : : UNO_QUERY ) ;
xPara . set ( xParaEnum - > nextElement ( ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " Nom: John Doe " ) , xPara - > getString ( ) ) ;
2014-02-25 12:50:46 +01:00
// outer table: background color, borders for B1/B2 cell
xTable . set ( xTables - > getByIndex ( 2 ) , uno : : UNO_QUERY ) ;
xCell . set ( xTable - > getCellByName ( " A1 " ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT ( xCell . is ( ) ) ;
2014-05-16 22:11:51 +02:00
table : : BorderLine2 fullPtSolid ( 1 , 0 , 35 , 0 , table : : BorderLineStyle : : SOLID , 35 ) ;
2014-02-25 12:50:46 +01:00
CPPUNIT_ASSERT_BORDER_EQUAL ( fullPtSolid ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " LeftBorder " ) ) ;
2014-02-25 12:50:46 +01:00
CPPUNIT_ASSERT_BORDER_EQUAL ( fullPtSolid ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " RightBorder " ) ) ;
2014-02-25 12:50:46 +01:00
CPPUNIT_ASSERT_BORDER_EQUAL ( fullPtSolid ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " TopBorder " ) ) ;
2014-02-25 12:50:46 +01:00
CPPUNIT_ASSERT_BORDER_EQUAL ( fullPtSolid ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " BottomBorder " ) ) ;
2014-02-25 15:08:47 +01:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0xCC0000 ) , getProperty < sal_Int32 > ( xCell , " BackColor " ) ) ;
2014-02-25 12:50:46 +01:00
xCell . set ( xTable - > getCellByName ( " A2 " ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT ( xCell . is ( ) ) ;
2014-05-16 22:11:51 +02:00
table : : BorderLine2 halfPtSolid ( /*0*/ 1 , 0 , 18 , 0 , table : : BorderLineStyle : : SOLID , 18 ) ;
2014-02-25 12:50:46 +01:00
CPPUNIT_ASSERT_BORDER_EQUAL ( halfPtSolid ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " LeftBorder " ) ) ;
2014-02-25 12:50:46 +01:00
CPPUNIT_ASSERT_EQUAL ( static_cast < sal_Int32 > ( 0xffffffff ) ,
2014-05-16 22:11:51 +02:00
getProperty < sal_Int32 > ( xCell , " BackColor " ) ) ;
2014-02-25 12:50:46 +01:00
xCell . set ( xTable - > getCellByName ( " B2 " ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT ( xCell . is ( ) ) ;
CPPUNIT_ASSERT_BORDER_EQUAL ( halfPtSolid ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " LeftBorder " ) ) ;
2014-02-25 12:50:46 +01:00
CPPUNIT_ASSERT_BORDER_EQUAL ( halfPtSolid ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " RightBorder " ) ) ;
2014-02-25 12:50:46 +01:00
CPPUNIT_ASSERT_EQUAL ( static_cast < sal_Int32 > ( 0xffffffff ) ,
2014-05-16 22:11:51 +02:00
getProperty < sal_Int32 > ( xCell , " BackColor " ) ) ;
2014-02-27 23:48:59 +01:00
// \sect at the end resulted in spurious page break
CPPUNIT_ASSERT_EQUAL ( 1 , getPages ( ) ) ;
2014-02-18 11:22:52 +01:00
}
2014-02-28 11:55:39 +01:00
DECLARE_RTFIMPORT_TEST ( testContSectionPageBreak , " cont-section-pagebreak.rtf " )
{
uno : : Reference < text : : XTextRange > xParaSecond = getParagraph ( 2 ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " SECOND " ) , xParaSecond - > getString ( ) ) ;
CPPUNIT_ASSERT_EQUAL ( style : : BreakType_NONE ,
2014-05-16 22:11:51 +02:00
getProperty < style : : BreakType > ( xParaSecond , " BreakType " ) ) ;
2014-02-28 11:55:39 +01:00
CPPUNIT_ASSERT_EQUAL ( OUString ( " " ) ,
2014-05-16 22:11:51 +02:00
getProperty < OUString > ( xParaSecond , " PageDescName " ) ) ;
2014-02-28 11:55:39 +01:00
// actually not sure how many paragraph there should be between
// SECOND and THIRD - important is that the page break is on there
uno : : Reference < text : : XTextRange > xParaNext = getParagraph ( 3 ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " " ) , xParaNext - > getString ( ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " Converted1 " ) ,
2014-05-16 22:11:51 +02:00
getProperty < OUString > ( xParaNext , " PageDescName " ) ) ;
2014-02-28 11:55:39 +01:00
uno : : Reference < text : : XTextRange > xParaThird = getParagraph ( 4 ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " THIRD " ) , xParaThird - > getString ( ) ) ;
CPPUNIT_ASSERT_EQUAL ( style : : BreakType_NONE ,
2014-05-16 22:11:51 +02:00
getProperty < style : : BreakType > ( xParaThird , " BreakType " ) ) ;
2014-02-28 11:55:39 +01:00
CPPUNIT_ASSERT_EQUAL ( OUString ( " " ) ,
2014-05-16 22:11:51 +02:00
getProperty < OUString > ( xParaThird , " PageDescName " ) ) ;
2014-02-28 11:55:39 +01:00
CPPUNIT_ASSERT_EQUAL ( 2 , getPages ( ) ) ;
}
2014-02-28 20:14:12 +01:00
DECLARE_RTFIMPORT_TEST ( testFooterPara , " footer-para.rtf " )
{
// check that paragraph properties in footer are imported
uno : : Reference < text : : XText > xFooterText =
2014-05-16 22:11:51 +02:00
getProperty < uno : : Reference < text : : XText > > ( getStyles ( " PageStyles " ) - > getByName ( " First Page " ) , " FooterText " ) ;
2014-02-28 20:14:12 +01:00
uno : : Reference < text : : XTextContent > xParagraph =
getParagraphOrTable ( 1 , xFooterText ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " All Rights Reserved. " ) ,
2014-05-16 22:11:51 +02:00
uno : : Reference < text : : XTextRange > ( xParagraph , uno : : UNO_QUERY ) - > getString ( ) ) ;
2014-02-28 20:14:12 +01:00
CPPUNIT_ASSERT_EQUAL ( ( sal_Int16 ) style : : ParagraphAdjust_CENTER ,
2014-05-16 22:11:51 +02:00
getProperty < /*style::ParagraphAdjust*/ sal_Int16 > ( xParagraph , " ParaAdjust " ) ) ;
2014-02-28 20:14:12 +01:00
}
2013-11-22 16:34:18 +01:00
DECLARE_RTFIMPORT_TEST ( testCp1000016 , " hello.rtf " )
{
// The single-line document had a second fake empty para on Windows.
bool bFound = true ;
try
{
getParagraph ( 2 ) ;
}
catch ( const container : : NoSuchElementException & )
{
bFound = false ;
}
CPPUNIT_ASSERT_EQUAL ( false , bFound ) ;
}
2013-12-28 09:55:33 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo65090 , " fdo65090.rtf " )
{
uno : : Reference < text : : XTextTablesSupplier > xTablesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
2014-05-16 22:11:51 +02:00
uno : : Reference < container : : XIndexAccess > xTables ( xTablesSupplier - > getTextTables ( ) , uno : : UNO_QUERY ) ;
2013-12-28 09:55:33 +01:00
uno : : Reference < text : : XTextTable > xTextTable ( xTables - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
uno : : Reference < table : : XTableRows > xTableRows ( xTextTable - > getRows ( ) , uno : : UNO_QUERY ) ;
// The first row had 3 cells, instead of a horizontally merged one and a normal one (2 -> 1 separator).
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 1 ) , getProperty < uno : : Sequence < text : : TableColumnSeparator > > ( xTableRows - > getByIndex ( 0 ) , " TableColumnSeparators " ) . getLength ( ) ) ;
}
2014-03-14 19:03:09 +01:00
DECLARE_RTFIMPORT_TEST ( testTableBorderDefaults , " fdo68779.rtf " )
{
// table borders without \brdrw were not imported
uno : : Reference < text : : XTextTablesSupplier > xTextTablesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xTables ( xTextTablesSupplier - > getTextTables ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextTable > xTable ( xTables - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xCell ( xTable - > getCellByName ( " A1 " ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT ( xCell . is ( ) ) ;
2014-05-16 22:11:51 +02:00
table : : BorderLine2 solid ( 1 , 0 , 26 , 0 , table : : BorderLineStyle : : SOLID , 26 ) ;
2014-03-14 19:03:09 +01:00
CPPUNIT_ASSERT_BORDER_EQUAL ( solid ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " LeftBorder " ) ) ;
2014-03-14 19:03:09 +01:00
CPPUNIT_ASSERT_BORDER_EQUAL ( solid ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " RightBorder " ) ) ;
2014-03-14 19:03:09 +01:00
CPPUNIT_ASSERT_BORDER_EQUAL ( solid ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " TopBorder " ) ) ;
2014-03-14 19:03:09 +01:00
CPPUNIT_ASSERT_BORDER_EQUAL ( solid ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " BottomBorder " ) ) ;
2014-03-14 19:03:09 +01:00
xTable . set ( xTables - > getByIndex ( 1 ) , uno : : UNO_QUERY ) ;
xCell . set ( xTable - > getCellByName ( " A1 " ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT ( xCell . is ( ) ) ;
2014-05-16 22:11:51 +02:00
table : : BorderLine2 dotted ( 1 , 0 , 26 , 0 , table : : BorderLineStyle : : DOTTED , 26 ) ;
2014-03-14 19:03:09 +01:00
CPPUNIT_ASSERT_BORDER_EQUAL ( dotted ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " LeftBorder " ) ) ;
2014-03-14 19:03:09 +01:00
CPPUNIT_ASSERT_BORDER_EQUAL ( dotted ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " RightBorder " ) ) ;
2014-03-14 19:03:09 +01:00
CPPUNIT_ASSERT_BORDER_EQUAL ( dotted ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " TopBorder " ) ) ;
2014-03-14 19:03:09 +01:00
CPPUNIT_ASSERT_BORDER_EQUAL ( dotted ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " BottomBorder " ) ) ;
2014-03-14 19:03:09 +01:00
xTable . set ( xTables - > getByIndex ( 2 ) , uno : : UNO_QUERY ) ;
xCell . set ( xTable - > getCellByName ( " A1 " ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT ( xCell . is ( ) ) ;
2014-05-16 22:11:51 +02:00
table : : BorderLine2 doubled ( 1 , 26 , 26 , 26 , table : : BorderLineStyle : : DOUBLE , 79 ) ;
2014-03-14 19:03:09 +01:00
CPPUNIT_ASSERT_BORDER_EQUAL ( doubled ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " LeftBorder " ) ) ;
2014-03-14 19:03:09 +01:00
CPPUNIT_ASSERT_BORDER_EQUAL ( doubled ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " RightBorder " ) ) ;
2014-03-14 19:03:09 +01:00
CPPUNIT_ASSERT_BORDER_EQUAL ( doubled ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " TopBorder " ) ) ;
2014-03-14 19:03:09 +01:00
CPPUNIT_ASSERT_BORDER_EQUAL ( doubled ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " BottomBorder " ) ) ;
2014-03-14 19:03:09 +01:00
xTable . set ( xTables - > getByIndex ( 3 ) , uno : : UNO_QUERY ) ;
xCell . set ( xTable - > getCellByName ( " A1 " ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT ( xCell . is ( ) ) ;
2014-05-16 22:11:51 +02:00
table : : BorderLine2 thinThickMG ( 1 , 14 , 26 , 14 , table : : BorderLineStyle : : THINTHICK_MEDIUMGAP , 53 ) ;
2014-03-14 19:03:09 +01:00
CPPUNIT_ASSERT_BORDER_EQUAL ( thinThickMG ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " LeftBorder " ) ) ;
2014-03-14 19:03:09 +01:00
CPPUNIT_ASSERT_BORDER_EQUAL ( thinThickMG ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " RightBorder " ) ) ;
2014-03-14 19:03:09 +01:00
CPPUNIT_ASSERT_BORDER_EQUAL ( thinThickMG ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " TopBorder " ) ) ;
2014-03-14 19:03:09 +01:00
CPPUNIT_ASSERT_BORDER_EQUAL ( thinThickMG ,
2014-05-16 22:11:51 +02:00
getProperty < table : : BorderLine2 > ( xCell , " BottomBorder " ) ) ;
2014-03-14 19:03:09 +01:00
}
2013-12-29 15:21:51 +01:00
DECLARE_RTFIMPORT_TEST ( testShpzDhgt , " shpz-dhgt.rtf " )
{
// Test that shpz has priority over dhght and not the other way around.
// Drawpage is sorted by ZOrder, so first should be red (back).
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0xff0000 ) , getProperty < sal_Int32 > ( getShape ( 1 ) , " FillColor " ) ) ;
// Second (front) should be green.
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0x00ff00 ) , getProperty < sal_Int32 > ( getShape ( 2 ) , " FillColor " ) ) ;
}
2013-12-29 16:15:03 +01:00
DECLARE_RTFIMPORT_TEST ( testBackground , " background.rtf " )
{
// The first shape wasn't in the foreground.
CPPUNIT_ASSERT_EQUAL ( true , bool ( getProperty < sal_Bool > ( getShape ( 1 ) , " Opaque " ) ) ) ;
CPPUNIT_ASSERT_EQUAL ( false , bool ( getProperty < sal_Bool > ( getShape ( 2 ) , " Opaque " ) ) ) ;
}
2014-01-18 12:48:09 +01:00
DECLARE_RTFIMPORT_TEST ( testLevelfollow , " levelfollow.rtf " )
{
uno : : Reference < container : : XIndexAccess > xNum1Levels = getProperty < uno : : Reference < container : : XIndexAccess > > ( getStyles ( " NumberingStyles " ) - > getByName ( " WWNum1 " ) , " NumberingRules " ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int16 ( SvxNumberFormat : : LISTTAB ) , comphelper : : SequenceAsHashMap ( xNum1Levels - > getByIndex ( 0 ) ) [ " LabelFollowedBy " ] . get < sal_Int16 > ( ) ) ; // first level, tab
uno : : Reference < container : : XIndexAccess > xNum2Levels = getProperty < uno : : Reference < container : : XIndexAccess > > ( getStyles ( " NumberingStyles " ) - > getByName ( " WWNum2 " ) , " NumberingRules " ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int16 ( SvxNumberFormat : : SPACE ) , comphelper : : SequenceAsHashMap ( xNum2Levels - > getByIndex ( 0 ) ) [ " LabelFollowedBy " ] . get < sal_Int16 > ( ) ) ; // first level, space
uno : : Reference < container : : XIndexAccess > xNum3Levels = getProperty < uno : : Reference < container : : XIndexAccess > > ( getStyles ( " NumberingStyles " ) - > getByName ( " WWNum3 " ) , " NumberingRules " ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int16 ( SvxNumberFormat : : NOTHING ) , comphelper : : SequenceAsHashMap ( xNum3Levels - > getByIndex ( 0 ) ) [ " LabelFollowedBy " ] . get < sal_Int16 > ( ) ) ; // first level, nothing
}
2014-01-26 11:33:11 +01:00
DECLARE_RTFIMPORT_TEST ( testCharColor , " char-color.rtf " )
{
// This was -1: character color wasn't set.
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0x365F91 ) , getProperty < sal_Int32 > ( getParagraph ( 1 ) , " CharColor " ) ) ;
}
2014-03-14 10:50:25 +01:00
DECLARE_RTFIMPORT_TEST ( testFdo69289 , " fdo69289.rtf " )
{
uno : : Reference < text : : XTextTablesSupplier > xTextTablesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xTables ( xTextTablesSupplier - > getTextTables ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextTable > xTable ( xTables - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
uno : : Reference < table : : XTableRows > xTableRows ( xTable - > getRows ( ) , uno : : UNO_QUERY ) ;
// There were only 2 cells (1 separators) in the table, should be 3 (2 separators).
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 2 ) , getProperty < uno : : Sequence < text : : TableColumnSeparator > > ( xTableRows - > getByIndex ( 0 ) , " TableColumnSeparators " ) . getLength ( ) ) ;
}
2014-03-14 12:11:13 +01:00
DECLARE_RTFIMPORT_TEST ( testDptxbxRelation , " dptxbx-relation.rtf " )
{
// This was FRAME, not PAGE_FRAME, even if dobxpage is in the document.
CPPUNIT_ASSERT_EQUAL ( text : : RelOrientation : : PAGE_FRAME , getProperty < sal_Int16 > ( getShape ( 1 ) , " HoriOrientRelation " ) ) ;
}
2014-03-14 15:51:25 +01:00
DECLARE_RTFIMPORT_TEST ( testDprectAnchor , " dprect-anchor.rtf " )
{
// This was at-page, which is not something Word supports, so clearly an import error.
CPPUNIT_ASSERT_EQUAL ( text : : TextContentAnchorType_AT_CHARACTER , getProperty < text : : TextContentAnchorType > ( getShape ( 1 ) , " AnchorType " ) ) ;
}
2014-04-04 10:29:49 +02:00
DECLARE_RTFIMPORT_TEST ( testFdo76628 , " fdo76628.rtf " )
{
OUString aExpected ( " \xd0 \x9e \xd0 \x91 \xd0 \xa0 \xd0 \x90 \xd0 \x97 \xd0 \x95 \xd0 \xa6 " , 14 , RTL_TEXTENCODING_UTF8 ) ;
// Should be 'SAMPLE' in Russian, was garbage.
getParagraph ( 1 , aExpected ) ;
uno : : Reference < text : : XText > xHeaderText = getProperty < uno : : Reference < text : : XText > > ( getStyles ( " PageStyles " ) - > getByName ( DEFAULT_STYLE ) , " HeaderText " ) ;
OUString aExpectedHeader ( " \xd0 \x9f \xd0 \xbe \xd0 \xb4 \xd0 \xb3 \xd0 \xbe \xd1 \x82 \xd0 \xbe \xd0 \xb2 \xd0 \xbb \xd0 \xb5 \xd0 \xbd \xd0 \xbe " , 24 , RTL_TEXTENCODING_UTF8 ) ;
// Should be 'prepared' in Russian, was garbage.
getParagraphOfText ( 1 , xHeaderText , aExpectedHeader ) ;
}
2014-04-05 15:38:18 +02:00
DECLARE_RTFIMPORT_TEST ( testFdo74823 , " fdo74823.rtf " )
{
uno : : Reference < text : : XTextTablesSupplier > xTextTablesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xTables ( xTextTablesSupplier - > getTextTables ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextTable > xTable ( xTables - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
// Cell width of C2 was too large / column separator being 3749 too small (e.g. not set, around 3/7 of total width)
uno : : Reference < table : : XTableRows > xTableRows ( xTable - > getRows ( ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int16 ( 5391 ) , getProperty < uno : : Sequence < text : : TableColumnSeparator > > ( xTableRows - > getByIndex ( 1 ) , " TableColumnSeparators " ) [ 2 ] . Position ) ;
}
2014-04-12 16:15:28 +02:00
DECLARE_RTFIMPORT_TEST ( testFdo74599 , " fdo74599.rtf " )
{
uno : : Reference < beans : : XPropertySet > xPropertySet ( getStyles ( " ParagraphStyles " ) - > getByName ( " Heading 3 " ) , uno : : UNO_QUERY ) ;
// Writer default styles weren't disabled, so the color was gray, not default (black).
CPPUNIT_ASSERT_EQUAL ( static_cast < sal_Int32 > ( - 1 ) , getProperty < sal_Int32 > ( xPropertySet , " CharColor " ) ) ;
}
2014-04-14 08:52:59 +02:00
DECLARE_RTFIMPORT_TEST ( testFdo77267 , " fdo77267.rtf " )
{
// Paragraph was aligned to left, should be center.
CPPUNIT_ASSERT_EQUAL ( style : : ParagraphAdjust_CENTER , static_cast < style : : ParagraphAdjust > ( getProperty < sal_Int16 > ( getParagraph ( 1 ) , " ParaAdjust " ) ) ) ;
}
2014-04-18 16:47:14 +02:00
DECLARE_RTFIMPORT_TEST ( testFdo75735 , " fdo75735.rtf " )
{
// Number of tabstops in the second paragraph should be 3, was 6.
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 3 ) , getProperty < uno : : Sequence < style : : TabStop > > ( getParagraph ( 2 ) , " ParaTabStops " ) . getLength ( ) ) ;
}
2014-04-22 12:53:24 +02:00
DECLARE_RTFIMPORT_TEST ( testFontOverride , " font-override.rtf " )
{
// This was "Times New Roman".
CPPUNIT_ASSERT_EQUAL ( OUString ( " Arial " ) , getProperty < OUString > ( getRun ( getParagraph ( 1 ) , 1 ) , " CharFontName " ) ) ;
}
2014-06-20 12:52:03 +02:00
DECLARE_RTFIMPORT_TEST ( testColumnBreak , " column-break.rtf " )
{
// Column break at the very start of the document was ignored.
CPPUNIT_ASSERT_EQUAL ( style : : BreakType_COLUMN_BEFORE , getProperty < style : : BreakType > ( getParagraph ( 2 ) , " BreakType " ) ) ;
}
2012-02-11 17:06:42 +01:00
CPPUNIT_PLUGIN_IMPLEMENT ( ) ;
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */