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>
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.
void paste ( OUString aFilename , uno : : Reference < text : : XTextRange > xTextRange = uno : : Reference < text : : XTextRange > ( ) )
{
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 ) ;
}
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
2013-11-22 16:34:18 +01:00
# if !defined(MACOSX) && !defined(WNT)
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 ( ) ;
2012-04-06 15:05:52 +02:00
if ( aStr = = " space-before " )
2012-09-28 18:05:28 +02:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( TWIP_TO_MM100 ( 120 ) ) , getProperty < sal_Int32 > ( xRange , " ParaTopMargin " ) ) ;
2012-04-06 15:05:52 +02:00
else if ( aStr = = " space-after " )
2012-09-28 18:05:28 +02:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( TWIP_TO_MM100 ( 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 ) ;
aExpectedSize = Application : : GetDefaultDevice ( ) - > PixelToLogic ( aExpectedSize , aMap ) ;
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 " ) ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( TWIP_TO_MM100 ( 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 ] ;
2012-04-06 15:05:52 +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 > ( ) ) ;
2012-04-06 15:05:52 +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 ( ) ;
2012-09-30 15:04:29 +02:00
CPPUNIT_ASSERT_EQUAL ( sal_Bool ( false ) , getProperty < sal_Bool > ( xParaEnum - > nextElement ( ) , " ParaContextMargin " ) ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Bool ( true ) , 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 ( ) ) ;
2012-09-30 15:04:29 +02:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( TWIP_TO_MM100 ( 200 ) ) , getProperty < sal_Int32 > ( xParaEnum - > nextElement ( ) , " ParaBottomMargin " ) ) ;
2012-03-19 10:45:28 +01: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 " ) ) ;
2012-05-09 11:30:13 +02:00
sal_Int32 nExpected ( TWIP_TO_MM100 ( 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
2012-09-30 15:50:53 +02:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( TWIP_TO_MM100 ( - 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
}
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 ) ;
2012-09-30 15:50:53 +02:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( TWIP_TO_MM100 ( 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 ) ;
2012-07-18 22:47:03 +02:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( TWIP_TO_MM100 ( 19 ) ) , xShape - > getSize ( ) . Height ) ;
}
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 ;
borderTest . testTheBorders ( mxComponent ) ;
}
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 ) ;
2012-11-05 16:35:59 +01:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 423 ) , xShape - > getSize ( ) . Width ) ;
}
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 ) ;
uno : : Reference < container : : XIndexAccess > xTables ( xTablesSupplier - > getTextTables ( ) , uno : : UNO_QUERY ) ;
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 ,
getProperty < uno : : Sequence < text : : TableColumnSeparator > > ( xTableRows - > getByIndex ( 1 ) , " TableColumnSeparators " ) [ 0 ] . Position ) ;
}
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.
2013-08-27 16:44:12 +02:00
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( TWIP_TO_MM100 ( 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 " ) ) ;
}
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 " ) ) ;
2013-03-18 14:49:02 +01:00
// Was 0x008000.
CPPUNIT_ASSERT_EQUAL ( COL_AUTO , 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.
}
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
{
// This was 353, i.e. bottom margin of the paragraph was 0.35cm instead of 0.
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0 ) , getProperty < sal_Int32 > ( getParagraph ( 1 ) , " ParaBottomMargin " ) ) ;
}
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).
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( TWIP_TO_MM100 ( 5954 ) ) , getProperty < sal_Int32 > ( getStyles ( " PageStyles " ) - > getByName ( DEFAULT_STYLE ) , " LeftMargin " ) ) ;
}
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 ( ) ) ;
table : : BorderLine2 fullPtSolid (
1 , 0 , 35 , 0 , table : : BorderLineStyle : : SOLID , 35 ) ;
CPPUNIT_ASSERT_BORDER_EQUAL ( fullPtSolid ,
getProperty < table : : BorderLine2 > ( xCell , " LeftBorder " ) ) ;
CPPUNIT_ASSERT_BORDER_EQUAL ( fullPtSolid ,
getProperty < table : : BorderLine2 > ( xCell , " RightBorder " ) ) ;
CPPUNIT_ASSERT_BORDER_EQUAL ( fullPtSolid ,
getProperty < table : : BorderLine2 > ( xCell , " TopBorder " ) ) ;
CPPUNIT_ASSERT_BORDER_EQUAL ( fullPtSolid ,
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 ( ) ) ;
table : : BorderLine2 halfPtSolid (
/*0*/ 1 , 0 , 18 , 0 , table : : BorderLineStyle : : SOLID , 18 ) ;
CPPUNIT_ASSERT_BORDER_EQUAL ( halfPtSolid ,
getProperty < table : : BorderLine2 > ( xCell , " LeftBorder " ) ) ;
CPPUNIT_ASSERT_EQUAL ( static_cast < sal_Int32 > ( 0xffffffff ) ,
getProperty < sal_Int32 > ( xCell , " BackColor " ) ) ;
xCell . set ( xTable - > getCellByName ( " B2 " ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT ( xCell . is ( ) ) ;
CPPUNIT_ASSERT_BORDER_EQUAL ( halfPtSolid ,
getProperty < table : : BorderLine2 > ( xCell , " LeftBorder " ) ) ;
CPPUNIT_ASSERT_BORDER_EQUAL ( halfPtSolid ,
getProperty < table : : BorderLine2 > ( xCell , " RightBorder " ) ) ;
CPPUNIT_ASSERT_EQUAL ( static_cast < sal_Int32 > ( 0xffffffff ) ,
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 ,
getProperty < style : : BreakType > ( xParaSecond , " BreakType " ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " " ) ,
getProperty < OUString > ( xParaSecond , " PageDescName " ) ) ;
// 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 " ) ,
getProperty < OUString > ( xParaNext , " PageDescName " ) ) ;
uno : : Reference < text : : XTextRange > xParaThird = getParagraph ( 4 ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " THIRD " ) , xParaThird - > getString ( ) ) ;
CPPUNIT_ASSERT_EQUAL ( style : : BreakType_NONE ,
getProperty < style : : BreakType > ( xParaThird , " BreakType " ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " " ) ,
getProperty < OUString > ( xParaThird , " PageDescName " ) ) ;
CPPUNIT_ASSERT_EQUAL ( 2 , getPages ( ) ) ;
}
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 ) ;
uno : : Reference < container : : XIndexAccess > xTables ( xTablesSupplier - > getTextTables ( ) , uno : : UNO_QUERY ) ;
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 ( ) ) ;
}
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 " ) ) ;
}
2012-02-11 17:06:42 +01:00
CPPUNIT_PLUGIN_IMPLEMENT ( ) ;
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */