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-04-15 20:02:30 +02: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-04-15 20:02:30 +02:00
*/
2013-04-15 15:49:35 +02:00
# include <com/sun/star/awt/Gradient.hpp>
2012-05-09 14:30:55 +02:00
# include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
2012-08-15 12:39:38 +02:00
# include <com/sun/star/drawing/EnhancedCustomShapeParameterPair.hpp>
2013-04-15 15:49:35 +02:00
# include <com/sun/star/drawing/FillStyle.hpp>
2012-07-26 12:54:37 +02:00
# include <com/sun/star/frame/XStorable.hpp>
2013-04-15 13:31:01 +02:00
# include <com/sun/star/table/BorderLine2.hpp>
# include <com/sun/star/table/ShadowFormat.hpp>
2012-12-21 14:44:06 +01:00
# include <com/sun/star/text/XFootnotesSupplier.hpp>
2012-05-11 09:38:03 +02:00
# include <com/sun/star/text/XPageCursor.hpp>
# include <com/sun/star/text/XTextViewCursorSupplier.hpp>
2012-07-26 12:54:37 +02:00
# include <com/sun/star/view/XViewSettingsSupplier.hpp>
2013-03-27 10:58:53 +01:00
# include <com/sun/star/text/RelOrientation.hpp>
2012-04-15 20:02:30 +02:00
# include <vcl/svapp.hxx>
2012-11-18 11:07:45 +01:00
# include <swmodeltestbase.hxx>
2012-10-24 07:28:15 +02:00
2012-05-09 15:25:44 +02:00
class Test : public SwModelTestBase
2012-04-15 20:02:30 +02:00
{
public :
void testZoom ( ) ;
2012-04-24 12:47:16 +02:00
void testFdo38176 ( ) ;
2012-05-09 14:30:55 +02:00
void testFdo49683 ( ) ;
2012-05-11 09:38:03 +02:00
void testFdo44174 ( ) ;
2012-06-15 16:15:07 +02:00
void testFdo50087 ( ) ;
2012-06-22 15:41:37 +02:00
void testFdo50831 ( ) ;
2012-06-27 12:11:05 +02:00
void testFdo48335 ( ) ;
2012-07-18 11:43:02 +02:00
void testFdo38244 ( ) ;
2012-07-26 12:54:37 +02:00
void testMathAccents ( ) ;
void testMathEqarray ( ) ;
2012-07-26 16:07:47 +02:00
void testMathD ( ) ;
2012-07-26 16:16:38 +02:00
void testMathEscaping ( ) ;
2012-07-26 16:23:32 +02:00
void testMathLim ( ) ;
void testMathMatrix ( ) ;
void testMathBox ( ) ;
void testMathMso2007 ( ) ;
2012-07-27 10:00:30 +02:00
void testMathNary ( ) ;
void testMathLimupp ( ) ;
void testMathStrikeh ( ) ;
2012-07-27 10:16:26 +02:00
void testMathPlaceholders ( ) ;
2012-07-27 10:31:17 +02:00
void testMathRad ( ) ;
void testMathSepchr ( ) ;
void testMathSubscripts ( ) ;
void testMathVerticalstacks ( ) ;
2012-07-27 16:32:13 +02:00
void testMathRuns ( ) ;
2012-08-15 12:39:38 +02:00
void testFdo53113 ( ) ;
2012-10-25 16:59:52 +02:00
void testFdo55939 ( ) ;
2012-11-29 17:12:54 +01:00
void testTextFrames ( ) ;
2012-12-21 14:44:06 +01:00
void testFdo53604 ( ) ;
2013-01-17 09:41:07 +01:00
void testFdo52286 ( ) ;
2013-02-26 17:28:27 +01:00
void testFdo61507 ( ) ;
2013-03-27 10:58:53 +01:00
void testFdo30983 ( ) ;
2013-03-29 12:30:52 +01:00
void testPlaceholder ( ) ;
2013-04-02 15:57:33 +02:00
void testMnor ( ) ;
2013-04-07 20:23:49 +02:00
void testI120928 ( ) ;
2013-04-08 12:19:23 +02:00
void testBookmark ( ) ;
2013-04-08 14:39:54 +02:00
void testHyperlink ( ) ;
2013-04-15 13:31:01 +02:00
void testTextFrameBorders ( ) ;
2013-04-15 15:49:35 +02:00
void testTextframeGradient ( ) ;
2013-06-16 13:21:38 +02:00
void testRecordChanges ( ) ;
2013-06-16 18:27:34 +02:00
void testTextframeTable ( ) ;
2013-07-10 12:12:55 +02:00
void testFdo66682 ( ) ;
2013-08-15 17:13:25 +02:00
void testParaShadow ( ) ;
2012-04-15 20:02:30 +02:00
2012-04-27 15:36:23 +02:00
CPPUNIT_TEST_SUITE ( Test ) ;
2012-04-15 20:02:30 +02:00
# if !defined(MACOSX) && !defined(WNT)
2012-10-20 11:42:15 +02:00
CPPUNIT_TEST ( run ) ;
2012-04-15 20:02:30 +02:00
# endif
CPPUNIT_TEST_SUITE_END ( ) ;
private :
2012-10-20 11:42:15 +02:00
void run ( ) ;
2012-04-15 20:02:30 +02:00
} ;
2012-10-20 11:42:15 +02:00
void Test : : run ( )
2012-04-15 20:02:30 +02:00
{
2012-10-20 11:42:15 +02:00
MethodEntry < Test > aMethods [ ] = {
{ " zoom.rtf " , & Test : : testZoom } ,
{ " fdo38176.rtf " , & Test : : testFdo38176 } ,
{ " fdo49683.rtf " , & Test : : testFdo49683 } ,
{ " fdo44174.rtf " , & Test : : testFdo44174 } ,
{ " fdo50087.rtf " , & Test : : testFdo50087 } ,
{ " fdo50831.rtf " , & Test : : testFdo50831 } ,
{ " fdo48335.odt " , & Test : : testFdo48335 } ,
{ " fdo38244.rtf " , & Test : : testFdo38244 } ,
{ " math-accents.rtf " , & Test : : testMathAccents } ,
{ " math-eqarray.rtf " , & Test : : testMathEqarray } ,
{ " math-d.rtf " , & Test : : testMathD } ,
{ " math-escaping.rtf " , & Test : : testMathEscaping } ,
{ " math-lim.rtf " , & Test : : testMathLim } ,
{ " math-matrix.rtf " , & Test : : testMathMatrix } ,
{ " math-mbox.rtf " , & Test : : testMathBox } ,
{ " math-mso2007.rtf " , & Test : : testMathMso2007 } ,
{ " math-nary.rtf " , & Test : : testMathNary } ,
{ " math-limupp.rtf " , & Test : : testMathLimupp } ,
{ " math-strikeh.rtf " , & Test : : testMathStrikeh } ,
{ " math-placeholders.rtf " , & Test : : testMathPlaceholders } ,
{ " math-rad.rtf " , & Test : : testMathRad } ,
{ " math-sepchr.rtf " , & Test : : testMathSepchr } ,
{ " math-subscripts.rtf " , & Test : : testMathSubscripts } ,
{ " math-vertical-stacks.rtf " , & Test : : testMathVerticalstacks } ,
{ " math-runs.rtf " , & Test : : testMathRuns } ,
{ " fdo53113.odt " , & Test : : testFdo53113 } ,
2012-10-25 16:59:52 +02:00
{ " fdo55939.odt " , & Test : : testFdo55939 } ,
2012-11-29 17:12:54 +01:00
{ " textframes.odt " , & Test : : testTextFrames } ,
2012-12-21 14:44:06 +01:00
{ " fdo53604.odt " , & Test : : testFdo53604 } ,
2013-01-17 09:41:07 +01:00
{ " fdo52286.odt " , & Test : : testFdo52286 } ,
2013-02-26 17:28:27 +01:00
{ " fdo61507.rtf " , & Test : : testFdo61507 } ,
2013-03-27 10:58:53 +01:00
{ " fdo30983.rtf " , & Test : : testFdo30983 } ,
2013-03-29 12:30:52 +01:00
{ " placeholder.odt " , & Test : : testPlaceholder } ,
2013-04-02 15:57:33 +02:00
{ " mnor.rtf " , & Test : : testMnor } ,
2013-04-07 20:23:49 +02:00
{ " i120928.rtf " , & Test : : testI120928 } ,
2013-04-08 12:19:23 +02:00
{ " bookmark.rtf " , & Test : : testBookmark } ,
2013-04-08 14:39:54 +02:00
{ " hyperlink.rtf " , & Test : : testHyperlink } ,
2013-04-15 13:31:01 +02:00
{ " textframe-borders.rtf " , & Test : : testTextFrameBorders } ,
2013-04-15 15:49:35 +02:00
{ " textframe-gradient.rtf " , & Test : : testTextframeGradient } ,
2013-06-16 13:21:38 +02:00
{ " record-changes.rtf " , & Test : : testRecordChanges } ,
2013-06-16 18:27:34 +02:00
{ " textframe-table.rtf " , & Test : : testTextframeTable } ,
2013-07-10 12:12:55 +02:00
{ " fdo66682.rtf " , & Test : : testFdo66682 } ,
2013-08-15 17:13:25 +02:00
{ " para-shadow.rtf " , & Test : : testParaShadow } ,
2012-10-20 11:42:15 +02:00
} ;
// Don't test the first import of these, for some reason those tests fail
const char * aBlacklist [ ] = {
" math-eqarray.rtf " ,
" math-escaping.rtf " ,
" math-lim.rtf " ,
" math-mso2007.rtf " ,
" math-nary.rtf " ,
" math-rad.rtf " ,
" math-vertical-stacks.rtf " ,
" math-runs.rtf " ,
} ;
std : : vector < const char * > vBlacklist ( aBlacklist , aBlacklist + SAL_N_ELEMENTS ( aBlacklist ) ) ;
2012-12-21 22:07:47 +01:00
header ( ) ;
2012-10-20 11:42:15 +02:00
for ( unsigned int i = 0 ; i < SAL_N_ELEMENTS ( aMethods ) ; + + i )
{
MethodEntry < Test > & rEntry = aMethods [ i ] ;
2012-12-21 22:07:47 +01:00
load ( " /sw/qa/extras/rtfexport/data/ " , rEntry . pName ) ;
2012-10-20 11:42:15 +02:00
// If the testcase is stored in some other format, it's pointless to test.
if ( OString ( rEntry . pName ) . endsWith ( " .rtf " ) & & std : : find ( vBlacklist . begin ( ) , vBlacklist . end ( ) , rEntry . pName ) = = vBlacklist . end ( ) )
( this - > * rEntry . pMethod ) ( ) ;
2012-12-21 22:07:47 +01:00
reload ( " Rich Text Format " ) ;
2012-10-20 11:42:15 +02:00
( this - > * rEntry . pMethod ) ( ) ;
2012-12-21 22:07:47 +01:00
finish ( ) ;
2012-10-20 11:42:15 +02:00
}
2012-04-15 20:02:30 +02:00
}
2012-04-27 15:36:23 +02:00
void Test : : testZoom ( )
2012-04-15 20:02:30 +02:00
{
uno : : Reference < frame : : XModel > xModel ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < view : : XViewSettingsSupplier > xViewSettingsSupplier ( xModel - > getCurrentController ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < beans : : XPropertySet > xPropertySet ( xViewSettingsSupplier - > getViewSettings ( ) ) ;
sal_Int16 nValue = 0 ;
xPropertySet - > getPropertyValue ( " ZoomValue " ) > > = nValue ;
CPPUNIT_ASSERT_EQUAL ( sal_Int16 ( 42 ) , nValue ) ;
}
2012-04-27 15:36:23 +02:00
void Test : : testFdo38176 ( )
2012-04-24 12:47:16 +02:00
{
2012-04-24 13:05:12 +02:00
CPPUNIT_ASSERT_EQUAL ( 9 , getLength ( ) ) ;
2012-04-24 12:47:16 +02:00
}
2012-05-09 14:30:55 +02:00
void Test : : testFdo49683 ( )
{
uno : : Reference < document : : XDocumentPropertiesSupplier > xDocumentPropertiesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < document : : XDocumentProperties > xDocumentProperties ( xDocumentPropertiesSupplier - > getDocumentProperties ( ) ) ;
uno : : Sequence < OUString > aKeywords ( xDocumentProperties - > getKeywords ( ) ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 2 ) , aKeywords . getLength ( ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " one " ) , aKeywords [ 0 ] ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " two " ) , aKeywords [ 1 ] ) ;
}
2012-05-11 09:38:03 +02:00
void Test : : testFdo44174 ( )
{
uno : : Reference < frame : : XModel > xModel ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextViewCursorSupplier > xTextViewCursorSupplier ( xModel - > getCurrentController ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < beans : : XPropertySet > xPropertySet ( xTextViewCursorSupplier - > getViewCursor ( ) , uno : : UNO_QUERY ) ;
OUString aValue ;
xPropertySet - > getPropertyValue ( " PageStyleName " ) > > = aValue ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " First Page " ) , aValue ) ;
}
2012-06-15 16:15:07 +02:00
void Test : : testFdo50087 ( )
{
uno : : Reference < document : : XDocumentPropertiesSupplier > xDocumentPropertiesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < document : : XDocumentProperties > xDocumentProperties ( xDocumentPropertiesSupplier - > getDocumentProperties ( ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " Title " ) , xDocumentProperties - > getTitle ( ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " Subject " ) , xDocumentProperties - > getSubject ( ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " First line. \n Second line. " ) , xDocumentProperties - > getDescription ( ) ) ;
}
2012-06-22 15:41:37 +02:00
void Test : : testFdo50831 ( )
{
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 ( ) ;
uno : : Reference < beans : : XPropertySet > xPropertySet ( xParaEnum - > nextElement ( ) , uno : : UNO_QUERY ) ;
float fValue = 0 ;
xPropertySet - > getPropertyValue ( " CharHeight " ) > > = fValue ;
CPPUNIT_ASSERT_EQUAL ( 10.f , fValue ) ;
}
2012-06-27 12:11:05 +02:00
void Test : : testFdo48335 ( )
{
/*
* The problem was that we exported a fake pagebreak , make sure it ' s just a soft one now .
*
* oParas = ThisComponent . Text . createEnumeration
* oPara = oParas . nextElement
* oPara = oParas . nextElement
* oPara = oParas . nextElement
* oRuns = oPara . createEnumeration
* oRun = oRuns . nextElement
* xray oRun . TextPortionType ' was Text , should be SoftPageBreak
*/
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 ( ) ;
for ( int i = 0 ; i < 2 ; i + + )
xParaEnum - > nextElement ( ) ;
uno : : Reference < container : : XEnumerationAccess > xRunEnumAccess ( xParaEnum - > nextElement ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumeration > xRunEnum = xRunEnumAccess - > createEnumeration ( ) ;
uno : : Reference < beans : : XPropertySet > xPropertySet ( xRunEnum - > nextElement ( ) , uno : : UNO_QUERY ) ;
OUString aValue ;
xPropertySet - > getPropertyValue ( " TextPortionType " ) > > = aValue ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " SoftPageBreak " ) , aValue ) ;
}
2012-07-18 11:43:02 +02:00
void Test : : testFdo38244 ( )
{
// See ooxmlexport's testFdo38244().
// Test comment range feature.
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 ( ) ;
uno : : Reference < container : : XEnumerationAccess > xRunEnumAccess ( xParaEnum - > nextElement ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumeration > xRunEnum = xRunEnumAccess - > createEnumeration ( ) ;
xRunEnum - > nextElement ( ) ;
uno : : Reference < beans : : XPropertySet > xPropertySet ( xRunEnum - > nextElement ( ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " TextFieldStart " ) , getProperty < OUString > ( xPropertySet , " TextPortionType " ) ) ;
xRunEnum - > nextElement ( ) ;
xPropertySet . set ( xRunEnum - > nextElement ( ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " TextFieldEnd " ) , getProperty < OUString > ( xPropertySet , " TextPortionType " ) ) ;
// Test initials.
uno : : Reference < text : : XTextFieldsSupplier > xTextFieldsSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XEnumerationAccess > xFieldsAccess ( xTextFieldsSupplier - > getTextFields ( ) ) ;
uno : : Reference < container : : XEnumeration > xFields ( xFieldsAccess - > createEnumeration ( ) ) ;
xPropertySet . set ( xFields - > nextElement ( ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " M " ) , getProperty < OUString > ( xPropertySet , " Initials " ) ) ;
}
2012-07-26 12:54:37 +02:00
void Test : : testMathAccents ( )
{
OUString aActual = getFormula ( getRun ( getParagraph ( 1 ) , 1 ) ) ;
OUString aExpected ( " acute {a} grave {a} check {a} breve {a} circle {a} widevec {a} widetilde {a} widehat {a} dot {a} widevec {a} widevec {a} widetilde {a} underline {a} " ) ;
CPPUNIT_ASSERT_EQUAL ( aExpected , aActual ) ;
}
void Test : : testMathEqarray ( )
{
OUString aActual = getFormula ( getRun ( getParagraph ( 1 ) , 1 ) ) ;
OUString aExpected ( " y = left lbrace stack { 0, x < 0 # 1, x = 0 # {x} ^ {2} , x > 0 } right none " ) ;
CPPUNIT_ASSERT_EQUAL ( aExpected , aActual ) ;
}
2012-07-26 16:07:47 +02:00
void Test : : testMathD ( )
{
OUString aActual = getFormula ( getRun ( getParagraph ( 1 ) , 1 ) ) ;
OUString aExpected ( " left (x mline y mline z right ) left ( 1 right ) left [ 2 right ] left ldbracket 3 right rdbracket left lline 4 right rline left ldline 5 right rdline left langle 6 right rangle left langle a mline b right rangle left ( { x } over { y } right ) " );
CPPUNIT_ASSERT_EQUAL ( aExpected , aActual ) ;
}
2012-07-26 16:16:38 +02:00
void Test : : testMathEscaping ( )
{
OUString aActual = getFormula ( getRun ( getParagraph ( 1 ) , 1 ) ) ;
2013-07-31 12:46:29 +02:00
OUString aExpected ( " \xc3 \xa1 \\ { " , 5 , RTL_TEXTENCODING_UTF8 ) ;
2012-07-26 16:16:38 +02:00
CPPUNIT_ASSERT_EQUAL ( aExpected , aActual ) ;
}
2012-07-26 16:23:32 +02:00
void Test : : testMathLim ( )
{
OUString aActual = getFormula ( getRun ( getParagraph ( 1 ) , 1 ) ) ;
2013-07-31 12:46:29 +02:00
OUString aExpected ( " lim from {x \xe2 \x86 \x92 1} {x} " , 22 , RTL_TEXTENCODING_UTF8 ) ;
2012-07-26 16:23:32 +02:00
CPPUNIT_ASSERT_EQUAL ( aExpected , aActual ) ;
}
void Test : : testMathMatrix ( )
{
OUString aActual = getFormula ( getRun ( getParagraph ( 1 ) , 1 ) ) ;
OUString aExpected ( " left [matrix {1 # 2 ## 3 # 4} right ] " ) ;
CPPUNIT_ASSERT_EQUAL ( aExpected , aActual ) ;
}
void Test : : testMathBox ( )
{
OUString aActual = getFormula ( getRun ( getParagraph ( 1 ) , 1 ) ) ;
OUString aExpected ( " a " ) ;
CPPUNIT_ASSERT_EQUAL ( aExpected , aActual ) ;
}
void Test : : testMathMso2007 ( )
{
OUString aActual = getFormula ( getRun ( getParagraph ( 1 ) , 1 ) ) ;
2013-07-31 12:46:29 +02:00
OUString aExpected ( " A = \xcf \x80 {r} ^ {2} " , 16 , RTL_TEXTENCODING_UTF8 ) ;
2012-07-26 16:23:32 +02:00
CPPUNIT_ASSERT_EQUAL ( aExpected , aActual ) ;
aActual = getFormula ( getRun ( getParagraph ( 2 ) , 1 ) ) ;
2013-07-31 12:46:29 +02:00
aExpected = OUString ( " {left (x + a right )} ^ {n} = sum from {k = 0} to {n} {left (stack { n # k } right ) {x} ^ {k} {a} ^ {n \xe2 \x88 \x92 k}} " , 111 , RTL_TEXTENCODING_UTF8 ) ;
2012-07-26 16:23:32 +02:00
CPPUNIT_ASSERT_EQUAL ( aExpected , aActual ) ;
aActual = getFormula ( getRun ( getParagraph ( 3 ) , 1 ) ) ;
2013-07-31 12:46:29 +02:00
aExpected = OUString ( " {left (1 + x right )} ^ {n} = 1 + {nx} over {1 !} + {n left (n \xe2 \x88 \x92 1 right ) {x} ^ {2}} over {2 !} + \xe2 \x80 \xa6 " , 104 , RTL_TEXTENCODING_UTF8 ) ;
2012-07-26 16:23:32 +02:00
CPPUNIT_ASSERT_EQUAL ( aExpected , aActual ) ;
aActual = getFormula ( getRun ( getParagraph ( 4 ) , 1 ) ) ;
2013-07-31 12:46:29 +02:00
aExpected = OUString ( " f left (x right ) = {a} rsub {0} + sum from {n = 1} to { \xe2 \x88 \x9e } {left ({a} rsub {n} cos {n \xcf \x80 x} over {L} + {b} rsub {n} sin {n \xcf \x80 x} over {L} right )} " , 144 ,
2012-07-26 16:23:32 +02:00
RTL_TEXTENCODING_UTF8 ) ;
CPPUNIT_ASSERT_EQUAL ( aExpected , aActual ) ;
aActual = getFormula ( getRun ( getParagraph ( 5 ) , 1 ) ) ;
aExpected = " {a} ^ {2} + {b} ^ {2} = {c} ^ {2} " ;
CPPUNIT_ASSERT_EQUAL ( aExpected , aActual ) ;
aActual = getFormula ( getRun ( getParagraph ( 6 ) , 1 ) ) ;
2013-07-31 12:46:29 +02:00
aExpected = OUString ( " x = { \xe2 \x88 \x92 b \xc2 \xb1 sqrt {{b} ^ {2} \xe2 \x88 \x92 4 ac}} over {2 a} " , 51 , RTL_TEXTENCODING_UTF8 ) ;
2012-07-26 16:23:32 +02:00
CPPUNIT_ASSERT_EQUAL ( aExpected , aActual ) ;
aActual = getFormula ( getRun ( getParagraph ( 7 ) , 1 ) ) ;
2013-07-31 12:46:29 +02:00
aExpected = OUString ( " {e} ^ {x} = 1 + {x} over {1 !} + {{x} ^ {2}} over {2 !} + {{x} ^ {3}} over {3 !} + \xe2 \x80 \xa6 , \xe2 \x88 \x92 \xe2 \x88 \x9e < x < \xe2 \x88 \x9e " , 106 , RTL_TEXTENCODING_UTF8 ) ;
2012-07-26 16:23:32 +02:00
CPPUNIT_ASSERT_EQUAL ( aExpected , aActual ) ;
aActual = getFormula ( getRun ( getParagraph ( 8 ) , 1 ) ) ;
2013-07-31 12:46:29 +02:00
aExpected = OUString ( " sin \xce \xb1 \xc2 \xb1 sin \xce \xb2 = 2 sin {1} over {2} left ( \xce \xb1 \xc2 \xb1 \xce \xb2 right ) cos {1} over {2} left ( \xce \xb1 \xe2 \x88 \x93 \xce \xb2 right ) " , 101 , RTL_TEXTENCODING_UTF8 ) ;
2012-07-26 16:23:32 +02:00
CPPUNIT_ASSERT_EQUAL ( aExpected , aActual ) ;
aActual = getFormula ( getRun ( getParagraph ( 9 ) , 1 ) ) ;
2013-07-31 12:46:29 +02:00
aExpected = OUString ( " cos \xce \xb1 + cos \xce \xb2 = 2 cos {1} over {2} left ( \xce \xb1 + \xce \xb2 right ) cos {1} over {2} left ( \xce \xb1 \xe2 \x88 \x92 \xce \xb2 right ) " , 99 , RTL_TEXTENCODING_UTF8 ) ;
2012-07-26 16:23:32 +02:00
CPPUNIT_ASSERT_EQUAL ( aExpected , aActual ) ;
}
2012-07-27 10:00:30 +02:00
void Test : : testMathNary ( )
{
OUString aActual = getFormula ( getRun ( getParagraph ( 1 ) , 1 ) ) ;
OUString aExpected ( " lllint from {1} to {2} {x + 1} prod from {a} {b} sum to {2} {x} " ) ;
CPPUNIT_ASSERT_EQUAL ( aExpected , aActual ) ;
}
void Test : : testMathLimupp ( )
{
OUString aActual = getFormula ( getRun ( getParagraph ( 1 ) , 1 ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " {abcd} overbrace {4} " ) , aActual ) ;
aActual = getFormula ( getRun ( getParagraph ( 2 ) , 1 ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " {xyz} underbrace {3} " ) , aActual ) ;
}
void Test : : testMathStrikeh ( )
{
OUString aActual = getFormula ( getRun ( getParagraph ( 1 ) , 1 ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " overstrike {abc} " ) , aActual ) ;
}
2012-07-27 10:16:26 +02:00
void Test : : testMathPlaceholders ( )
{
OUString aActual = getFormula ( getRun ( getParagraph ( 1 ) , 1 ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " sum from <?> to <?> <?> " ) , aActual ) ;
}
2012-07-27 10:31:17 +02:00
void Test : : testMathRad ( )
{
OUString aActual = getFormula ( getRun ( getParagraph ( 1 ) , 1 ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " sqrt {4} nroot {3} {x + 1} " ) , aActual ) ;
}
void Test : : testMathSepchr ( )
{
OUString aActual = getFormula ( getRun ( getParagraph ( 1 ) , 1 ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " AxByBzC " ) , aActual ) ;
}
void Test : : testMathSubscripts ( )
{
OUString aActual = getFormula ( getRun ( getParagraph ( 1 ) , 1 ) ) ;
OUString aExpected ( " {x} ^ {y} + {e} ^ {x} {x} ^ {b} {x} rsub {b} {a} rsub {c} rsup {b} {x} lsub {2} lsup {1} {{x csup {6} csub {3}} lsub {4} lsup {5}} rsub {2} rsup {1} " ) ;
CPPUNIT_ASSERT_EQUAL ( aExpected , aActual ) ;
}
void Test : : testMathVerticalstacks ( )
{
CPPUNIT_ASSERT_EQUAL ( OUString ( " {a} over {b} " ) , getFormula ( getRun ( getParagraph ( 1 ) , 1 ) ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " {a} / {b} " ) , getFormula ( getRun ( getParagraph ( 2 ) , 1 ) ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " stack { a # b } " ) , getFormula ( getRun ( getParagraph ( 3 ) , 1 ) ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " stack { a # stack { b # c } } " ) , getFormula ( getRun ( getParagraph ( 4 ) , 1 ) ) ) ;
}
2012-07-27 16:32:13 +02:00
void Test : : testMathRuns ( )
{
// was [](){}, i.e. first curly bracket had an incorrect position
CPPUNIT_ASSERT_EQUAL ( OUString ( " \\ { left [ right ] left ( right ) \\ } " ) , getFormula ( getRun ( getParagraph ( 1 ) , 1 ) ) ) ;
}
2012-08-15 12:39:38 +02:00
void Test : : testFdo53113 ( )
{
/*
* The problem was that a custom shape was missings its second ( and all the other remaining ) coordinates .
*
* oShape = ThisComponent . DrawPage ( 0 )
* oPathPropVec = oShape . CustomShapeGeometry ( 1 ) . Value
* oCoordinates = oPathPropVec ( 0 ) . Value
* xray oCoordinates ( 1 ) . First . Value ' 535
* xray oCoordinates ( 1 ) . Second . Value ' 102
*/
uno : : Reference < drawing : : XDrawPageSupplier > xDrawPageSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xDraws ( xDrawPageSupplier - > getDrawPage ( ) , uno : : UNO_QUERY ) ;
uno : : Sequence < beans : : PropertyValue > aProps = getProperty < uno : : Sequence < beans : : PropertyValue > > ( xDraws - > getByIndex ( 0 ) , " CustomShapeGeometry " ) ;
2012-11-16 14:00:10 +00:00
uno : : Sequence < beans : : PropertyValue > aPathProps ;
2012-08-15 12:39:38 +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-08-15 12:39:38 +02:00
}
uno : : Sequence < drawing : : EnhancedCustomShapeParameterPair > aPairs ;
2012-11-16 14:00:10 +00:00
for ( int i = 0 ; i < aPathProps . getLength ( ) ; + + i )
2012-08-15 12:39:38 +02:00
{
2012-11-16 14:00:10 +00:00
const beans : : PropertyValue & rProp = aPathProps [ i ] ;
2012-08-15 12:39:38 +02:00
if ( rProp . Name = = " Coordinates " )
rProp . Value > > = aPairs ;
}
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 16 ) , aPairs . getLength ( ) ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 535 ) , aPairs [ 1 ] . First . Value . get < sal_Int32 > ( ) ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 102 ) , aPairs [ 1 ] . Second . Value . get < sal_Int32 > ( ) ) ;
}
2012-10-25 16:59:52 +02:00
void Test : : testFdo55939 ( )
{
// The problem was that the exported RTF was invalid.
uno : : Reference < text : : XTextRange > xParagraph ( getParagraph ( 1 ) ) ;
getRun ( xParagraph , 1 , " Main text before footnote. " ) ;
// Why the tab has to be removed here?
CPPUNIT_ASSERT_EQUAL ( OUString ( " Footnote text. " ) ,
getProperty < uno : : Reference < text : : XTextRange > > ( getRun ( xParagraph , 2 ) , " Footnote " ) - > getText ( ) - > getString ( ) . replaceAll ( " \t " , " " ) ) ;
getRun ( xParagraph , 3 , " Text after the footnote. " ) ; // However, this leading space is intentional and OK.
}
2012-11-29 17:12:54 +01:00
void Test : : testTextFrames ( )
{
// The output was simply invalid, so let's check if all 3 frames were imported back.
uno : : Reference < text : : XTextFramesSupplier > xTextFramesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xIndexAccess ( xTextFramesSupplier - > getTextFrames ( ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 3 ) , xIndexAccess - > getCount ( ) ) ;
}
2012-12-21 14:44:06 +01:00
void Test : : testFdo53604 ( )
{
// Invalid output on empty footnote.
uno : : Reference < text : : XFootnotesSupplier > xFootnotesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xFootnotes ( xFootnotesSupplier - > getFootnotes ( ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 1 ) , xFootnotes - > getCount ( ) ) ;
}
2013-01-17 09:41:07 +01:00
void Test : : testFdo52286 ( )
{
// The problem was that font size wasn't reduced in sub/super script.
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 58 ) , getProperty < sal_Int32 > ( getRun ( getParagraph ( 1 ) , 2 ) , " CharEscapementHeight " ) ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 58 ) , getProperty < sal_Int32 > ( getRun ( getParagraph ( 2 ) , 2 ) , " CharEscapementHeight " ) ) ;
}
2013-02-26 17:28:27 +01:00
void Test : : testFdo61507 ( )
{
/*
* Unicode - only characters in \ title confused Wordpad . Once the exporter
* was fixed to guard the problematic characters with \ upr and \ ud , the
* importer didn ' t cope with these new keywords .
*/
uno : : Reference < document : : XDocumentPropertiesSupplier > xDocumentPropertiesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < document : : XDocumentProperties > xDocumentProperties ( xDocumentPropertiesSupplier - > getDocumentProperties ( ) ) ;
2013-07-31 12:46:29 +02:00
OUString aExpected = OUString ( " \xc3 \x89 \xc3 \x81 \xc5 \x90 \xc5 \xb0 \xe2 \x88 \xad " , 11 , RTL_TEXTENCODING_UTF8 ) ;
2013-02-26 17:28:27 +01:00
CPPUNIT_ASSERT_EQUAL ( aExpected , xDocumentProperties - > getTitle ( ) ) ;
// Only "Hello.", no additional characters.
CPPUNIT_ASSERT_EQUAL ( 6 , getLength ( ) ) ;
}
2013-03-27 10:58:53 +01:00
void Test : : testFdo30983 ( )
{
// These were 'page text area', not 'entire page', i.e. both the horizontal
// and vertical positions were incorrect.
uno : : Reference < drawing : : XDrawPageSupplier > xDrawPageSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xDraws ( xDrawPageSupplier - > getDrawPage ( ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( text : : RelOrientation : : PAGE_FRAME , getProperty < sal_Int16 > ( xDraws - > getByIndex ( 0 ) , " HoriOrientRelation " ) ) ;
CPPUNIT_ASSERT_EQUAL ( text : : RelOrientation : : PAGE_FRAME , getProperty < sal_Int16 > ( xDraws - > getByIndex ( 0 ) , " VertOrientRelation " ) ) ;
}
2013-03-29 12:30:52 +01:00
void Test : : testPlaceholder ( )
{
// Only the field text was exported, make sure we still have a field with the correct Hint text.
uno : : Reference < text : : XTextRange > xRun ( getRun ( getParagraph ( 1 ) , 2 ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " TextField " ) , getProperty < OUString > ( xRun , " TextPortionType " ) ) ;
uno : : Reference < beans : : XPropertySet > xField = getProperty < uno : : Reference < beans : : XPropertySet > > ( xRun , " TextField " ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " place holder " ) , getProperty < OUString > ( xField , " Hint " ) ) ;
}
2013-04-02 15:57:33 +02:00
void Test : : testMnor ( )
{
// \mnor wasn't handled, leading to missing quotes around "divF" and so on.
OUString aActual = getFormula ( getRun ( getParagraph ( 1 ) , 1 ) ) ;
2013-07-31 12:46:29 +02:00
OUString aExpected ( " iiint from {V} to <?> { \" divF \" } dV = llint from {S} to <?> { \" F \" \xe2 \x88 \x99 \" n \" dS} " , 74 , RTL_TEXTENCODING_UTF8 ) ;
2013-04-02 15:57:33 +02:00
CPPUNIT_ASSERT_EQUAL ( aExpected , aActual ) ;
}
2013-04-07 20:23:49 +02:00
void Test : : testI120928 ( )
{
// \listpicture and \levelpicture0 was ignored, leading to missing graphic bullet in numbering.
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
bool bIsGraphic = false ;
for ( int i = 0 ; i < aProps . getLength ( ) ; + + i )
{
const beans : : PropertyValue & rProp = aProps [ i ] ;
if ( rProp . Name = = " NumberingType " )
CPPUNIT_ASSERT_EQUAL ( style : : NumberingType : : BITMAP , rProp . Value . get < sal_Int16 > ( ) ) ;
else if ( rProp . Name = = " GraphicURL " )
bIsGraphic = true ;
}
CPPUNIT_ASSERT_EQUAL ( true , bIsGraphic ) ;
}
2013-04-08 12:19:23 +02:00
void Test : : testBookmark ( )
{
uno : : Reference < text : : XBookmarksSupplier > xBookmarksSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextContent > xBookmark ( xBookmarksSupplier - > getBookmarks ( ) - > getByName ( " firstword " ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " Hello " ) , xBookmark - > getAnchor ( ) - > getString ( ) ) ;
}
2013-04-08 14:39:54 +02:00
void Test : : testHyperlink ( )
{
CPPUNIT_ASSERT_EQUAL ( OUString ( " " ) , getProperty < OUString > ( getRun ( getParagraph ( 1 ) , 1 , " Hello " ) , " HyperLinkURL " ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " http://en.wikipedia.org/wiki/World " ) , getProperty < OUString > ( getRun ( getParagraph ( 1 ) , 2 , " world " ) , " HyperLinkURL " ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " " ) , getProperty < OUString > ( getRun ( getParagraph ( 1 ) , 3 , " ! " ) , " HyperLinkURL " ) ) ;
}
2013-04-15 13:31:01 +02:00
void Test : : testTextFrameBorders ( )
{
uno : : Reference < text : : XTextFramesSupplier > xTextFramesSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xIndexAccess ( xTextFramesSupplier - > getTextFrames ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < beans : : XPropertySet > xFrame ( xIndexAccess - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0xD99594 ) , getProperty < sal_Int32 > ( xFrame , " BackColor " ) ) ;
table : : BorderLine2 aBorder = getProperty < table : : BorderLine2 > ( xFrame , " TopBorder " ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0xC0504D ) , aBorder . Color ) ;
CPPUNIT_ASSERT_EQUAL ( sal_uInt32 ( 35 ) , aBorder . LineWidth ) ;
table : : ShadowFormat aShadowFormat = getProperty < table : : ShadowFormat > ( xFrame , " ShadowFormat " ) ;
CPPUNIT_ASSERT_EQUAL ( table : : ShadowLocation_BOTTOM_RIGHT , aShadowFormat . Location ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int16 ( 48 ) , aShadowFormat . ShadowWidth ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0x622423 ) , aShadowFormat . Color ) ;
}
2013-04-15 15:49:35 +02:00
void Test : : testTextframeGradient ( )
{
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 ( ) ) ;
uno : : Reference < beans : : XPropertySet > xFrame ( xIndexAccess - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( drawing : : FillStyle_GRADIENT , getProperty < drawing : : FillStyle > ( xFrame , " FillStyle " ) ) ;
awt : : Gradient aGradient = getProperty < awt : : Gradient > ( xFrame , " FillGradient " ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0xC0504D ) , aGradient . StartColor ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0xD99594 ) , aGradient . EndColor ) ;
CPPUNIT_ASSERT_EQUAL ( awt : : GradientStyle_AXIAL , aGradient . Style ) ;
xFrame . set ( xIndexAccess - > getByIndex ( 1 ) , uno : : UNO_QUERY ) ;
CPPUNIT_ASSERT_EQUAL ( drawing : : FillStyle_GRADIENT , getProperty < drawing : : FillStyle > ( xFrame , " FillStyle " ) ) ;
aGradient = getProperty < awt : : Gradient > ( xFrame , " FillGradient " ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0x000000 ) , aGradient . StartColor ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int32 ( 0x666666 ) , aGradient . EndColor ) ;
CPPUNIT_ASSERT_EQUAL ( awt : : GradientStyle_AXIAL , aGradient . Style ) ;
}
2013-06-16 13:21:38 +02:00
void Test : : testRecordChanges ( )
{
// \revisions wasn't imported/exported.
CPPUNIT_ASSERT_EQUAL ( true , getProperty < bool > ( mxComponent , " RecordChanges " ) ) ;
}
2013-06-16 18:27:34 +02:00
void Test : : testTextframeTable ( )
{
uno : : Reference < drawing : : XDrawPageSupplier > xDrawPageSupplier ( mxComponent , uno : : UNO_QUERY ) ;
uno : : Reference < container : : XIndexAccess > xDraws ( xDrawPageSupplier - > getDrawPage ( ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XTextRange > xTextRange ( xDraws - > getByIndex ( 0 ) , uno : : UNO_QUERY ) ;
uno : : Reference < text : : XText > xText = xTextRange - > getText ( ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " First para. " ) , getParagraphOfText ( 1 , xText ) - > getString ( ) ) ;
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 ( ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " B " ) , uno : : Reference < text : : XTextRange > ( xTable - > getCellByName ( " B1 " ) , uno : : UNO_QUERY ) - > getString ( ) ) ;
CPPUNIT_ASSERT_EQUAL ( OUString ( " Last para. " ) , getParagraphOfText ( 3 , xText ) - > getString ( ) ) ;
}
2013-07-10 12:12:55 +02:00
void Test : : testFdo66682 ( )
{
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
OUString aSuffix ;
for ( int i = 0 ; i < aProps . getLength ( ) ; + + i )
{
const beans : : PropertyValue & rProp = aProps [ i ] ;
if ( rProp . Name = = " Suffix " )
aSuffix = rProp . Value . get < OUString > ( ) ;
}
// Suffix was '\0' instead of ' '.
CPPUNIT_ASSERT_EQUAL ( OUString ( " " ) , aSuffix ) ;
}
2013-08-15 17:13:25 +02:00
void Test : : testParaShadow ( )
{
// The problem was that \brdrsh was ignored.
table : : ShadowFormat aShadow = getProperty < table : : ShadowFormat > ( getParagraph ( 2 ) , " ParaShadowFormat " ) ;
CPPUNIT_ASSERT_EQUAL ( COL_BLACK , sal_uInt32 ( aShadow . Color ) ) ;
CPPUNIT_ASSERT_EQUAL ( table : : ShadowLocation_BOTTOM_RIGHT , aShadow . Location ) ;
CPPUNIT_ASSERT_EQUAL ( sal_Int16 ( TWIP_TO_MM100 ( 60 ) ) , aShadow . ShadowWidth ) ;
}
2012-04-27 15:36:23 +02:00
CPPUNIT_TEST_SUITE_REGISTRATION ( Test ) ;
2012-04-15 20:02:30 +02:00
CPPUNIT_PLUGIN_IMPLEMENT ( ) ;
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */