/*
* 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 ifc.util;
import java.io.PrintWriter;
import lib.MultiMethodTest;
import lib.Status;
import lib.StatusException;
import com.sun.star.beans.PropertyValue;
import com.sun.star.table.TableSortField;
import com.sun.star.util.XSortable;
/**
* Testing < code > com . sun . star . util . XSortable < / code >
* interface methods :
* < ul >
* < li > < code > createSortDescriptor ( ) < / code > < / li >
* < li > < code > sort ( ) < / code > < / li >
* < / ul > < p >
* This test needs the following object relations :
* < ul >
* < li > < code > ' SORTCHECKER ' < / code > : < code >
* _ XSortable . XSortChecker < / code > interface implementation
* < / li >
* < ul > < p >
* Test is < b > NOT < / b > multithread compliant . < p >
* @ see com . sun . star . util . XSortable
*/
public class _XSortable extends MultiMethodTest {
// oObj filled by MultiMethodTest
public XSortable oObj = null ;
XSortChecker checker = null ;
PropertyValue[] oPV = null ;
@Override
protected void before() {
checker = (XSortChecker) tEnv.getObjRelation("SORTCHECKER" );
if (checker == null ) {
throw new StatusException(Status.failed(
"Couldn't get relation 'SORTCHECKER'" ));
}
checker.setPrintWriter(log);
}
/**
* Test calls the method . < p >
* Has < b > OK < / b > status if the length of the returned array
* is greater than zero . < p >
*/
public void _createSortDescriptor() {
boolean bResult = false ;
log.println("test for createSortDescriptor() " );
oPV = oObj.createSortDescriptor();
if (oPV.length > 0 ) {
bResult = true ;
for (int k = 0 ; k < oPV.length; k++) {
log.println("DescriptorProperty " + k + ": Name=" +
oPV[k].Name + "; Value=" + oPV[k].Value);
if (oPV[k].Name.equals("SortFields" )) {
TableSortField[] tsf = (TableSortField[]) oPV[k].Value;
for (int l = 0 ; l < tsf.length; l++) {
log.println("\t isAscending: " +
tsf[l].IsAscending);
log.println("\t IsCaseSensitive: " +
tsf[l].IsCaseSensitive);
log.println("\t CollatorAlgorithm: " +
tsf[l].CollatorAlgorithm);
}
}
}
}
log.println("Found " + oPV.length + " PropertyValues" );
tRes.tested("createSortDescriptor()" , bResult);
}
/**
* Test calls the method using descriptor created before as
* parameter . < p >
* Has < b > OK < / b > status if the method successfully returns
* and no exceptions were thrown . < p >
* The following method tests are to be completed successfully before :
* < ul >
* < li > < code > createSortDescriptor ( ) < / code > : to have a descriptor
* for sort . < / li >
* < / ul >
*/
public void _sort() {
checker.prepareToSort();
log.println(
"############## Sort algorithm: Alphanumeric Order: Ascending" );
modifyDescriptor(false , true );
oObj.sort(oPV);
boolean res = checker.checkSort(false , true );
log.println(
"############################################################" );
log.println(
"############# Sort algorithm: Alphanumeric Order: Descending" );
modifyDescriptor(false , false );
oObj.sort(oPV);
res = checker.checkSort(false , false );
log.println(
"############################################################" );
log.println(
"################# Sort algorithm: Numeric Order: Ascending" );
modifyDescriptor(true , true );
oObj.sort(oPV);
res = checker.checkSort(true , true );
log.println(
"############################################################" );
log.println(
"################## Sort algorithm: Numeric Order: Descending" );
modifyDescriptor(true , false );
oObj.sort(oPV);
res = checker.checkSort(true , false );
log.println(
"############################################################" );
tRes.tested("sort()" , res);
}
protected void modifyDescriptor(boolean isSortNumeric,
boolean isSortAscending) {
for (int i = 0 ; i < oPV.length; i++) {
if (oPV[i].Name.equals("SortFields" )) {
TableSortField[] TableFields = (TableSortField[]) oPV[i].Value;
if (TableFields.length == 0 ) {
TableFields = new TableSortField[1 ];
TableFields[0 ] = new TableSortField();
}
for (int k = 0 ; k < TableFields.length; k++) {
TableFields[k].IsAscending = isSortAscending;
if (isSortNumeric) {
TableFields[k].FieldType = com.sun.star.table.TableSortFieldType.NUMERIC;
TableFields[k].CollatorAlgorithm = "numeric" ;
} else {
TableFields[k].FieldType = com.sun.star.table.TableSortFieldType.ALPHANUMERIC;
TableFields[k].CollatorAlgorithm = "alphanumeric" ;
}
}
oPV[i].Value = TableFields;
}
if (oPV[i].Name.equals("isSortInTable" )) {
oPV[i].Value = Boolean .TRUE ;
}
if (oPV[i].Name.equals("IsSortColumns" )) {
oPV[i].Value = Boolean .FALSE ;
}
}
log.println("Modified sort descriptor: " );
if (oPV.length > 0 ) {
for (int k = 0 ; k < oPV.length; k++) {
log.println("DescriptorProperty " + k + ": Name=" +
oPV[k].Name + "; Value=" + oPV[k].Value);
if (oPV[k].Name.equals("SortFields" )) {
TableSortField[] tsf = (TableSortField[]) oPV[k].Value;
for (int l = 0 ; l < tsf.length; l++) {
log.println("\t isAscending: " +
tsf[l].IsAscending);
log.println("\t IsCaseSensitive: " +
tsf[l].IsCaseSensitive);
log.println("\t CollatorAlgorithm: " +
tsf[l].CollatorAlgorithm);
}
}
}
}
}
/**
* The interface for sort checking .
*/
public interface XSortChecker {
void prepareToSort();
boolean checkSort(boolean isSortNumbering,
boolean isSortAscending);
void setPrintWriter(PrintWriter log);
}
/**
* Forces environment recreation .
*/
@Override
protected void after() {
disposeEnvironment();
}
} // finish class _XSortable
Messung V0.5 in Prozent C=96 H=87 G=91
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.4Bemerkung:
¤
*Bot Zugriff