/*
* This file is part of the LibreOffice project .
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License , v . 2 . 0 . If a copy of the MPL was not distributed with this
* file , You can obtain one at http : //mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice :
*
* Licensed to the Apache Software Foundation ( ASF ) under one or more
* contributor license agreements . See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership . The ASF licenses this file to you under the Apache
* License , Version 2 . 0 ( the " License " ) ; you may not use this file
* except in compliance with the License . You may obtain a copy of
* the License at http : //www.apache.org/licenses/LICENSE-2.0 .
*/
package mod._sm;
import java.io.PrintWriter;
import lib.StatusException;
import lib.TestCase;
import lib.TestEnvironment;
import lib.TestParameters;
import util.SOfficeFactory;
import util.XMLTools;
import com.sun.star.beans.XPropertySet;
import com.sun.star.document.XExporter;
import com.sun.star.lang.XComponent;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.uno.Any;
import com.sun.star.uno.Type;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.uno.XInterface;
import com.sun.star.xml.sax.XDocumentHandler;
/**
* Test for object which is represented by service
* < code > com . sun . star . comp . Math . XMLExporter < / code > . < p >
* Object implements the following interfaces :
* < ul >
* < li > < code > com : : sun : : star : : lang : : XInitialization < / code > < / li >
* < li > < code > com : : sun : : star : : document : : ExportFilter < / code > < / li >
* < li > < code > com : : sun : : star : : document : : XFilter < / code > < / li >
* < li > < code > com : : sun : : star : : document : : XExporter < / code > < / li >
* < li > < code > com : : sun : : star : : beans : : XPropertySet < / code > < / li >
* < / ul >
* @ see com . sun . star . lang . XInitialization
* @ see com . sun . star . document . ExportFilter
* @ see com . sun . star . document . XFilter
* @ see com . sun . star . document . XExporter
* @ see com . sun . star . beans . XPropertySet
* @ see ifc . lang . _ XInitialization
* @ see ifc . document . _ ExportFilter
* @ see ifc . document . _ XFilter
* @ see ifc . document . _ XExporter
* @ see ifc . beans . _ XPropertySet
*/
public class XMLExporter extends TestCase {
XComponent xMathDoc;
/**
* New math document created .
*/
@Override
protected void initialize( TestParameters tParam, PrintWriter log ) throws Exception {
SOfficeFactory SOF = SOfficeFactory.getFactory( tParam.getMSF() );
log.println( "creating a math document" );
xMathDoc = SOF.createMathDoc(null );
}
/**
* Document disposed here .
*/
@Override
protected void cleanup( TestParameters tParam, PrintWriter log ) {
log.println( " disposing xMathDoc " );
xMathDoc.dispose();
}
/**
* Creating a TestEnvironment for the interfaces to be tested .
* Creates an instance of the service
* < code > com . sun . star . comp . Math . XMLExporter < / code > with
* argument which is an implementation of < code > XDocumentHandler < / code >
* and which can check if required tags and character data is
* exported . < p >
* The math document is set as a source document for exporter
* created . A new formula inserted into document . This made
* for checking if this formula is successfully exported within
* the document content .
* Object relations created :
* < ul >
* < li > < code > ' MediaDescriptor ' < / code > for
* { @ link ifc . document . _ XFilter } interface < / li >
* < li > < code > ' XFilter . Checker ' < / code > for
* { @ link ifc . document . _ XFilter } interface < / li >
* < li > < code > ' SourceDocument ' < / code > for
* { @ link ifc . document . _ XExporter } interface < / li >
* < / ul >
*/
@Override
protected TestEnvironment createTestEnvironment
(TestParameters tParam, PrintWriter log) {
XMultiServiceFactory xMSF = tParam.getMSF() ;
XInterface oObj = null ;
final String expFormula = "a - b" ;
FilterChecker filter = new FilterChecker(log);
Any arg = new Any(new Type(XDocumentHandler.class ), filter);
try {
oObj = (XInterface) xMSF.createInstanceWithArguments(
"com.sun.star.comp.Math.XMLExporter" , new Object[] {arg});
XExporter xEx = UnoRuntime.queryInterface
(XExporter.class ,oObj);
xEx.setSourceDocument(xMathDoc);
// setting a formula in document
XPropertySet xPS = UnoRuntime.queryInterface
(XPropertySet.class , xMathDoc) ;
xPS.setPropertyValue("Formula" , expFormula) ;
} catch (com.sun.star.uno.Exception e) {
e.printStackTrace(log) ;
throw new StatusException("Can't create component." , e) ;
}
// checking tags required
filter.addTag(new XMLTools.Tag("math:math" )) ;
filter.addTagEnclosed(new XMLTools.Tag("math:annotation" ),
new XMLTools.Tag("math:semantics" )) ;
filter.addCharactersEnclosed(expFormula,
new XMLTools.Tag("math:annotation" )) ;
// create testobject here
log.println( "creating a new environment" );
TestEnvironment tEnv = new TestEnvironment( oObj );
tEnv.addObjRelation("MediaDescriptor" , XMLTools.createMediaDescriptor(
new String[] {"FilterName" },
new Object[] {"smath: StarOffice XML (Math)" }));
tEnv.addObjRelation("SourceDocument" ,xMathDoc);
tEnv.addObjRelation("XFilter.Checker" , filter) ;
log.println("Implementation Name: " +util.utils.getImplName(oObj));
return tEnv;
}
/**
* This class checks the XML for tags and data required and returns
* checking result to < code > XFilter < / code > interface test . All
* the information about errors occurred in XML data is written
* to log specified .
* @ see ifc . document . _ XFilter
*/
private class FilterChecker extends XMLTools.XMLChecker
implements ifc.document._XFilter.FilterChecker {
/**
* Creates a class which will write information
* into log specified .
*/
private FilterChecker(PrintWriter log) {
super (log, true ) ;
}
/**
* < code > _ XFilter . FilterChecker < / code > interface method
* which returns the result of XML checking .
* @ return < code > true < / code > if the XML data exported was
* valid ( i . e . all necessary tags and character data exists ) ,
* < code > false < / code > if some errors occurred .
*/
public boolean checkFilter() {
return check();
}
}
} // finish class TestCase
Messung V0.5 in Prozent C=93 H=97 G=94
¤ Dauer der Verarbeitung: 0.2 Sekunden
(vorverarbeitet am 2026-09-05)
¤
*© Formatika GbR, Deutschland