summaryrefslogtreecommitdiff
path: root/framework/qa/complex/path_settings/PathSettingsTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/qa/complex/path_settings/PathSettingsTest.java')
-rwxr-xr-xframework/qa/complex/path_settings/PathSettingsTest.java1236
1 files changed, 898 insertions, 338 deletions
diff --git a/framework/qa/complex/path_settings/PathSettingsTest.java b/framework/qa/complex/path_settings/PathSettingsTest.java
index b264bbd558..527176aaae 100755
--- a/framework/qa/complex/path_settings/PathSettingsTest.java
+++ b/framework/qa/complex/path_settings/PathSettingsTest.java
@@ -27,432 +27,992 @@
package complex.path_settings;
import com.sun.star.beans.Property;
+import com.sun.star.beans.PropertyVetoException;
+import com.sun.star.beans.UnknownPropertyException;
import com.sun.star.beans.XFastPropertySet;
import com.sun.star.beans.XMultiPropertySet;
import com.sun.star.beans.XPropertySet;
import com.sun.star.beans.XPropertiesChangeListener;
import com.sun.star.beans.XPropertyChangeListener;
import com.sun.star.beans.XVetoableChangeListener;
+import com.sun.star.lang.WrappedTargetException;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.uno.AnyConverter;
-import complexlib.ComplexTestCase;
-public class PathSettingsTest extends ComplexTestCase {
+// ---------- junit imports -----------------
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openoffice.test.OfficeConnection;
+import static org.junit.Assert.*;
+// ------------------------------------------
+
+public class PathSettingsTest
+{
private static XMultiServiceFactory xMSF;
-
// the test object: an instance of the tested service
- private static Object oObj = null;
+ private static Object aPathSettings = null;
// the properties of the service
- private static Property[] props = null;
- private static String[] propNames = null;
- private static String[] availablePropNames = new String[]{
- "Addin",
- "AutoCorrect",
- "Autotext",
- "Backup",
- "Basic",
- "Bitmap",
- "Config",
- "Dictionary",
- "Favorite",
- "Filter",
- "Gallery",
- "Help",
- "Linguistic",
- "Module",
- "Palette",
- "Plugin",
- "Temp",
- "Template",
- "UIConfig",
- "UserConfig",
- "UserDictionary",
- "Work",
-};
- private static String[] propVals = null;
+ private static Property[] xPropertyInfoOfPathSettings = null;
+ private static String[] aPathSettingNames = null;
+ private static String[] availablePropNames = new String[]
+ {
+ "Addin",
+ "AutoCorrect",
+ "AutoText",
+ "Backup",
+ "Basic",
+ "Bitmap",
+ "Config",
+ "Dictionary",
+ "Favorite",
+ "Filter",
+ "Fingerprint",
+ "Gallery",
+ "Graphic",
+ "Help",
+ "Linguistic",
+ "Module",
+ "Palette",
+ "Plugin",
+ "Storage",
+ "Temp",
+ "Template",
+ "UIConfig",
+ "UserConfig",
+ "Work",
+ };
+ // every path name from availablePropNames exist in this characteristics
+ // name
+ // name_internal
+ // name_user
+ // name_writable
+ private static String[] availablePropNameExtensions = new String[]
+ {
+ "",
+ "_internal",
+ "_user",
+ "_writable"
+ };
+ private static String[] aPathSettingValues = null;
+ ArrayList<Property> aListOfWorkingProperty;
/**
* A function to tell the framework, which test functions are available.
* Right now, it's only 'checkComplexTemplateState'.
* @return All test methods.
*/
- public String[] getTestMethodNames() {
- return new String[]{"checkXFastPropertySet",
- "checkXMultiPropertySet",
- "checkXPropertySet"
- };
- }
-
+// public String[] getTestMethodNames() {
+// return new String[]{"checkXFastPropertySet",
+// "checkXMultiPropertySet",
+// "checkXPropertySet"
+// };
+// }
/**
* Initialize before the tests start: this has to be done only once.
- * This methods sets the 'oObj' and 'props' variables.
+ * This methods sets the 'aPathSettings' and 'xPropertyInfoOfPathSettings' variables.
*/
- public void before() {
- try {
- xMSF = (XMultiServiceFactory)param.getMSF();
-// oObj = xMSF.createInstance("com.sun.star.util.PathSettings");
- oObj = xMSF.createInstance("com.sun.star.comp.framework.PathSettings");
- System.out.println("Implementation: " + util.utils.getImplName(oObj));
- System.out.println("Service: ");
- util.dbg.getSuppServices(oObj);
- if (oObj == null) throw new com.sun.star.uno.Exception();
- XPropertySet xProp = (XPropertySet)
- UnoRuntime.queryInterface(XPropertySet.class, oObj);
-
- props = xProp.getPropertySetInfo().getProperties();
- propNames = new String[props.length];
- propVals = new String[props.length];
+ @Before
+ public void before()
+ {
+ try
+ {
+ xMSF = getMSF();
+// aPathSettings = xMSF.createInstance("com.sun.star.util.PathSettings");
+ aPathSettings = xMSF.createInstance("com.sun.star.comp.framework.PathSettings");
+ assertNotNull("Can't instantiate com.sun.star.util.PathSettings.", aPathSettings);
+// System.out.println("Implementation: " + util.utils.getImplName(aPathSettings));
+// System.out.println("Service: ");
+ util.dbg.getSuppServices(aPathSettings);
+ final XPropertySet xPropSet_of_PathSettings = UnoRuntime.queryInterface(XPropertySet.class, aPathSettings);
+
+ xPropertyInfoOfPathSettings = xPropSet_of_PathSettings.getPropertySetInfo().getProperties();
+ aPathSettingNames = new String[xPropertyInfoOfPathSettings.length];
+ aPathSettingValues = new String[xPropertyInfoOfPathSettings.length];
+
+ aListOfWorkingProperty = new ArrayList<Property>();
// get intitial values and create new ones
- log.println("\n---- All properties ----");
- for (int i = 1; i < props.length; i++) {
- propNames[i] = props[i].Name;
- Object o = xProp.getPropertyValue(propNames[i]);
- System.out.println("#### Object: " + o.getClass().getName() + " - " + o.toString());
- propVals[i] = AnyConverter.toString(o);
- System.out.println("#### String " + propVals[i]);
- log.println("Property Name: " + propNames[i]);
- log.println("Property Value: " + propVals[i]);
- }
- log.println("---- Finish showing properties ----\n");
- }
- catch(com.sun.star.uno.Exception e) {
- e.printStackTrace();
- log.println(e.getClass().getName());
- log.println("Message: " + e.getMessage());
- failed("Could not create an instance of the test object.");
- }
- catch(Exception e) {
- e.printStackTrace();
- failed("What exception?");
+ for (int i = 0; i < xPropertyInfoOfPathSettings.length; i++)
+ {
+ final String sName = xPropertyInfoOfPathSettings[i].Name;
+ // System.out.println(sName);
+ aPathSettingNames[i] = sName;
+ Object o = xPropSet_of_PathSettings.getPropertyValue(sName);
+
+ String sValue = convertToString(o);
+ aPathSettingValues[i] = sValue;
+ aListOfWorkingProperty.add(xPropertyInfoOfPathSettings[i]);
+ }
+ }
+ catch (com.sun.star.uno.Exception e)
+ {
+ System.out.println(e.getClass().getName());
+ System.out.println("Message: " + e.getMessage());
+ // fail("Could not create an instance of the test object.");
+ }
+ catch (Exception e)
+ {
+ fail("What exception?");
+ }
+ }
+
+ private String convertToString(Object o)
+ {
+ String sValue = "";
+ try
+ {
+ if (AnyConverter.isString(o))
+ {
+ sValue = AnyConverter.toString(o);
+ }
+ else if (AnyConverter.isArray(o))
+ {
+ Object oValueList = AnyConverter.toArray(o);
+ String[] aValueList = (String[]) oValueList;
+ String sValues = "";
+ for (int j = 0; j < aValueList.length; j++)
+ {
+ if (sValues.length() > 0)
+ {
+ sValues += ";";
+ }
+ sValues += aValueList[j];
+ }
+ sValue = sValues;
+ }
+ else
+ {
+ System.out.println("Can't convert Object to String");
+ }
+ }
+ catch (com.sun.star.uno.Exception e)
+ {
+ /* ignore */
}
+ return sValue;
}
/**
- * This tests the XFastPropertySet interface implementation.
+ * Simple existance test, if this fails, the Lists must update
*/
- public void checkXFastPropertySet()
+ @Test
+ public void checkInternalListConsistence()
{
- log.println("---- Testing the XFastPropertySet interface ----");
-
- // creating instances
- XFastPropertySet xFPS = (XFastPropertySet)
- UnoRuntime.queryInterface(XFastPropertySet.class, oObj);
-
- String name = null;
- // do for all properties
- for (int i = 0; i < props.length; i++) {
- try {
- Property property = props[i];
- name = property.Name;
- int handle = property.Handle;
-
- // get property name and initial value
- log.println("Test property with name: " + name);
- String val = (String)xFPS.getFastPropertyValue(handle);
- log.println("Property has initial value: '" + val + "'");
-
- // set to a new correct value
- String newVal = changeToCorrectValue(val);
- log.println("Try to change to correct value '" + newVal + "'");
- xFPS.setFastPropertyValue(handle, newVal);
+ // check if all Properties are in the internal test list
+ for (int i = 0; i < xPropertyInfoOfPathSettings.length; i++)
+ {
+ final String sName = xPropertyInfoOfPathSettings[i].Name;
+ boolean bOccur = checkIfNameExistsInList(sName, availablePropNames, availablePropNameExtensions);
+ assertTrue("TEST IS WRONG, Name:='" + sName + "' doesn't exist in internal Test list.", bOccur);
+ }
- // check the change
- String checkVal = (String)xFPS.getFastPropertyValue(handle);
- assure("Did not change value on property " + name + ".", checkVal.equals(newVal));
+ // check if all properties in the internal list also exist in real life
+ for (int i = 0; i < availablePropNames.length; i++)
+ {
+ final String aListName = availablePropNames[i];
+ for (int j = 0; j < availablePropNameExtensions.length; j++)
+ {
+ final String aSubListName = availablePropNameExtensions[j];
+ final String aName = aListName + aSubListName;
+ boolean bOccur = checkIfNameExistsInList(aName, aPathSettingNames, new String[]
+ {
+ ""
+ } /* list must not empty! */);
+ assertTrue("TEST IS WRONG, Name:='" + aName + "' from the internal test list do not occur in real life path settings.", bOccur);
+ }
+ }
+ }
- newVal = changeToIncorrectValue(val);
- log.println("Try to change to incorrect value '" + newVal + "'");
- try {
- xFPS.setFastPropertyValue(handle, newVal);
- }
- catch(com.sun.star.lang.IllegalArgumentException e) {
- log.println("Correctly thrown Exception caught.");
+ /**
+ * Simple O(n^n) check if a given String (_sNameMustOccur) exist in the given list(+SubList) values.
+ * @param _sNameMustOccur
+ * @param _aList
+ * @param _aSubList
+ * @return true, if name occur
+ */
+ private boolean checkIfNameExistsInList(String _sNameMustOccur, String[] _aList, String[] _aSubList)
+ {
+ for (int i = 0; i < _aList.length; i++)
+ {
+ final String aListName = _aList[i];
+ for (int j = 0; j < _aSubList.length; j++)
+ {
+ final String aSubListName = _aSubList[j];
+ final String aName = aListName + aSubListName;
+ if (aName.equals(_sNameMustOccur))
+ {
+ return true;
}
+ }
+ }
+ return false;
+ }
- // check if changed
- checkVal = (String)xFPS.getFastPropertyValue(handle);
- assure("Value did change on property " + name + " though it should not have.",
- !checkVal.equals(newVal));
-
- // set back to initial setting
- xFPS.setFastPropertyValue(handle, val);
-
- // check if changed
- checkVal = (String)xFPS.getFastPropertyValue(handle);
- assure("Did not change value back to original on property "
- + name, checkVal.equals(val));
- log.println("Test of property " + name + " finished\n");
+ private String getPropertyValueAsString(String _sName)
+ {
+ final XPropertySet xPropSet_of_PathSettings = UnoRuntime.queryInterface(XPropertySet.class, aPathSettings);
+ String sValue = "";
+ {
+ Object o;
+ try
+ {
+ o = xPropSet_of_PathSettings.getPropertyValue(_sName);
+ sValue = convertToString(o);
+ }
+ catch (UnknownPropertyException ex)
+ {
}
- catch(com.sun.star.uno.Exception e) {
-// e.printStackTrace();
- log.println(e.getClass().getName());
- log.println("Message: " + e.getMessage());
- failed("Unexpected exception on property " + name + ".");
- continue;
+ catch (WrappedTargetException ex)
+ {
}
}
- log.println("---- Test of XFastPropertySet finished ----\n");
+ return sValue;
}
-
- // ____________________
/**
- * This tests the XMultiPropertySet interface implementation.
+ * Shows the path settings
+ * @throws UnknownPropertyException
+ * @throws WrappedTargetException
*/
- public void checkXMultiPropertySet()
+ @Test
+ public void showPathSettings() throws UnknownPropertyException, WrappedTargetException
{
- log.println("---- Testing the XMultiPropertySet interface ----");
- XMultiPropertySet xMPS = (XMultiPropertySet)
- UnoRuntime.queryInterface(XMultiPropertySet.class, oObj);
-
- String[] correctVals = new String[props.length];
- String[] incorrectVals = new String[props.length];
-
- // get intitial values and create new ones
- for (int i = 0; i < props.length; i++) {
- correctVals[i] = changeToCorrectValue(propVals[i]);
- incorrectVals[i] = changeToIncorrectValue(propVals[i]);
- }
-
- try {
- // add a change listener
- MyChangeListener mListener = new MyChangeListener();
- xMPS.addPropertiesChangeListener(propNames, mListener);
-
- // first change props to correct values
- log.println("Change to correct values.");
- xMPS.setPropertyValues(propNames, correctVals);
- assure("Could not change to correct values with XMultiPropoertySet.",
- verifyPropertySet(xMPS,propNames,correctVals)>0);
-
- // second, change to incorrect values: expect an exception
- log.println("Try to change to incorrect values.");
- try {
- xMPS.setPropertyValues(propNames, incorrectVals);
- }
- catch(com.sun.star.lang.IllegalArgumentException r) {
- log.println("Correctly thrown Exception caught.");
- }
- assure("Did change to incorrect values with XMultiPropertySet," +
- " but should not have.",
- verifyPropertySet(xMPS,propNames,correctVals)>0);
-
- // third, change back to initial values
- log.println("Change back to initial values.");
- xMPS.setPropertyValues(propNames, propVals);
- assure("Could not change back to initial values with" +
- " XMultiPropertySet.",
- verifyPropertySet(xMPS,propNames,propVals)>0);
-
- // fire the event for the listener
- log.println("Fire event.");
- xMPS.firePropertiesChangeEvent(propNames, mListener);
- assure("Event was not fired on XMultiPropertySet.",
- mListener.changePropertiesEventFired());
- }
- catch(com.sun.star.uno.Exception e) {
-// e.printStackTrace();
- log.println(e.getClass().getName());
- log.println("Message: " + e.getMessage());
- failed("Unexpected exception on XMultiPropertySet.");
- }
-
- // test finished
- log.println("---- Test of XMultiPropertySet finished ----\n");
+ System.out.println("\n---- All properties ----");
+ final XPropertySet xPropSet_of_PathSettings = UnoRuntime.queryInterface(XPropertySet.class, aPathSettings);
+
+// for (int i = 0; i < xPropertyInfoOfPathSettings.length; i++)
+ for (int i = 0; i < aListOfWorkingProperty.size(); i++)
+ {
+ final String sName = aListOfWorkingProperty.get(i).Name;
+ // aPathSettingWorkingNames[i] = sName;
+// System.out.print("PathSettings: Name:=");
+ System.out.print(sName);
+ Object o = xPropSet_of_PathSettings.getPropertyValue(sName);
+
+ // System.out.println("#### Object: '" + o.getClass().getName() + "' - '" + o.toString() + "'");
+ try
+ {
+ final String sValue = AnyConverter.toString(o);
+ // aPathSettingValues[i] = sValue;
+ // System.out.println("#### String " + sValue);
+ // System.out.println("Property Name: " + sName);
+ // System.out.println("Property Value: " + sValue);
+// System.out.print(" ==> ");
+// System.out.print(sValue);
+ }
+ catch (com.sun.star.uno.Exception e)
+ {
+// System.out.print(" FAILED ");
+ }
+ System.out.println();
+ }
+ System.out.println("---- Finish showing properties ----\n");
}
+ private boolean checkPaths(Object _o, Object _o2)
+ {
+ String sLeftPath = "";
+ String sRightPath = "";
+ if (AnyConverter.isArray(_o))
+ {
+ try
+ {
+ Object oValues = AnyConverter.toArray(_o);
+ sLeftPath = convertToString(oValues);
+ }
+ catch (com.sun.star.lang.IllegalArgumentException e)
+ {
+ }
+ }
+ else if (AnyConverter.isString(_o))
+ {
+ try
+ {
+ sLeftPath = AnyConverter.toString(_o);
+ }
+ catch (com.sun.star.lang.IllegalArgumentException e)
+ {
+ }
+ }
+
+ if (AnyConverter.isArray(_o2))
+ {
+ try
+ {
+ Object oValues = AnyConverter.toArray(_o2);
+ sRightPath = convertToString(oValues);
+ }
+ catch (com.sun.star.lang.IllegalArgumentException e)
+ {
+ }
+ }
+ else if (AnyConverter.isString(_o2))
+ {
+ try
+ {
+ sRightPath = AnyConverter.toString(_o2);
+ }
+ catch (com.sun.star.lang.IllegalArgumentException e)
+ {
+ }
+ }
+ return checkPaths(sLeftPath, sRightPath);
+ }
+
/**
- * Verify if the values of xProp are the same as vals.
- * @param xProp A XMultiPropertySet.
- * @param propNames An array with property names.
- * @param vals An array with values of the properties
- * @return -1 if none are equal, 1 if all are equal, 0 if some were equal
- * and some not.
- * @throws com.sun.star.lang.IllegalArgumentException
+ * Check 2 given paths if the _aOtherPath exists in _aPath, _aPath could be a list separated by ';'
+ * @param _aPath
+ * @param _aOtherPath
+ * @return true, if _aOtherPath found
*/
- private int verifyPropertySet(XMultiPropertySet xProp,
- String[] propNames, String[] vals)
+ private boolean checkPaths(String _aPath, String _aOtherPath)
{
- int ret=0;
- if (vals.length != propNames.length) {
- log.println("Length of array parameters must be equal.");
- return ret;
- }
- for (int i = 0; i < vals.length; i++) {
- Object[] objs = xProp.getPropertyValues(new String[]{propNames[i]});
- String retVal = (String)objs[0];
- boolean nCheck = retVal.equals(vals[i]);
- if (!nCheck) {
- log.println("Property '" + propNames[i] +
- "' was supposed to have value:");
- log.println(vals[i]);
- log.println("but has value:");
- log.println(retVal);
- }
- // initialize
- if (i==0) {
- ret = nCheck?1:-1;
- continue;
- }
- // return 0 if equal state changes compared to initial value
- if ((nCheck && ret<0) || (!nCheck && ret>0)) {
- ret = 0;
- }
- }
- return ret;
+ if (_aOtherPath.contains(";"))
+ {
+ StringTokenizer aToken = new StringTokenizer(_aOtherPath, ";");
+ int nCount = 0;
+ int nFound = 0;
+ while (aToken.hasMoreElements())
+ {
+ String sPath = (String)aToken.nextElement();
+ nCount ++;
+ if (checkPaths(_aPath, sPath))
+ {
+ nFound++;
+ }
+ }
+ if (nFound == nCount)
+ {
+ return true;
+ }
+ }
+ else if(_aPath.contains(";"))
+ {
+ StringTokenizer aToken = new StringTokenizer(_aPath, ";");
+ while (aToken.hasMoreElements())
+ {
+ String sToken = (String)aToken.nextElement();
+ if (sToken.equals(_aOtherPath))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+ else if (_aPath.equals(_aOtherPath))
+ {
+ return true;
+ }
+ return false;
}
-
- // ____________________
/**
- * This tests the XPropertySet interface implementation.
+ * This tests the XFastPropertySet interface implementation.
*/
- public void checkXPropertySet()
+ @Test
+ public void checkXFastPropertySet()
+ {
+ System.out.println("---- Testing the XFastPropertySet interface ----");
+
+
+ // do for all properties
+ // xPropertyInfoOfPathSettings.length
+ for (int i = 0; i < aListOfWorkingProperty.size(); i++)
+ {
+ final Property property = aListOfWorkingProperty.get(i); // xPropertyInfoOfPathSettings[i];
+ String name = property.Name;
+ // get property name and initial value
+ System.out.println("Test property with name: " + name);
+ boolean bResult;
+ if (name.endsWith("_writable"))
+ {
+ bResult = checkStringProperty(property);
+ }
+ else if (name.endsWith("_user"))
+ {
+ bResult = checkStringListProperty(property);
+ }
+ else if (name.endsWith("_internal"))
+ {
+ bResult = checkStringListProperty(property);
+ }
+ else
+ {
+ // old path settings
+ bResult = checkStringProperty(property);
+ }
+ System.out.print(" Test of property " + name + " finished");
+ if (bResult)
+ {
+ System.out.println(" [ok]");
+ }
+ else
+ {
+ System.out.println(" [FAILED]");
+ }
+ System.out.println();
+ }
+ System.out.println("---- Test of XFastPropertySet finished ----\n");
+ }
+
+ private boolean checkStringListProperty(Property property)
{
- log.println("---- Testing the XPropertySet interface ----");
+ // creating instances
+ boolean bResult = true;
+ XFastPropertySet xFPS = UnoRuntime.queryInterface(XFastPropertySet.class, aPathSettings);
+
+ String name = property.Name;
+ int handle = property.Handle;
+
+ Object oValue;
+ try
+ {
+ oValue = xFPS.getFastPropertyValue(handle);
+ }
+ catch (UnknownPropertyException ex)
+ {
+ return false;
+ }
+ catch (WrappedTargetException ex)
+ {
+ return false;
+ }
- XPropertySet xPS = (XPropertySet)
- UnoRuntime.queryInterface(XPropertySet.class, oObj);
+ if (!AnyConverter.isArray(oValue))
+ {
+ System.out.println(" Internal error, type wrong. PathSetting property with name:" + name + " should be an array.");
+ return false;
+ }
- MyChangeListener mListener1 = new MyChangeListener();
- MyChangeListener mListener2 = new MyChangeListener();
+ String val;
+ try
+ {
+ Object oValues = AnyConverter.toArray(oValue);
- for (int i=0; i<props.length; i++) {
- // adding listeners
- String name = propNames[i];
- log.println("Testing property '" + name + "'");
- try {
- log.println("Add 2 Listeners.");
- xPS.addPropertyChangeListener(name, mListener1);
- xPS.addVetoableChangeListener(name, mListener1);
- xPS.addPropertyChangeListener(name, mListener2);
- xPS.addVetoableChangeListener(name, mListener2);
- // change the property
- log.println("Change value.");
- String changeVal = changeToCorrectValue(propVals[i]);
- xPS.setPropertyValue(name, changeVal);
- String newVal = (String)xPS.getPropertyValue(name);
+ final String[] aValues = (String[])oValues;
- assure("Value did not change on property " + name + ".",
- newVal.equals(changeVal));
+ // aNewValues contains a deep copy of aValues
+ String[] aNewValues = new String[aValues.length];
+ System.arraycopy(aValues, 0, aNewValues, 0, aValues.length);
+ if (aValues.length > 0)
+ {
+ val = aValues[0];
+ }
+ else
+ {
+ val = null;
+ aNewValues = new String[1]; // create a String list
+ }
+ System.out.println(" Property has initial value: '" + val + "'");
- assure("Listener 1 was not called.", checkListener(mListener1), true);
- assure("Listener 2 was not called.", checkListener(mListener2), true);
+ // set to a new correct value
+ String newVal = changeToCorrectValue(val);
+ assertFalse("newVal must not equal val.", newVal.equals(val));
- mListener1.resetListener();
- mListener2.resetListener();
+ System.out.println(" Try to change to a correct value '" + newVal + "'");
+ aNewValues[0] = newVal;
- log.println("Remove Listener 1.");
+ try
+ {
+ try
+ {
+ xFPS.setFastPropertyValue(handle, aNewValues);
+ }
+ catch (com.sun.star.lang.WrappedTargetException e)
+ {
+ System.out.println(" FAIL: setFastPropertyValue(handle:=" + handle + ", name:='" + name + "')" + e.getMessage());
+ bResult = false;
+ }
- xPS.removePropertyChangeListener(name, mListener1);
- xPS.removeVetoableChangeListener(name, mListener1);
+ // Property_internal can't change we will not arrive bejond this line
- // change the property
- log.println("Change value back.");
- xPS.setPropertyValue(name, propVals[i]);
- newVal = (String)xPS.getPropertyValue(name);
- assure("Value did not change on property " + name,
- newVal.equals(propVals[i]));
+ // check the change
+ Object oObj = xFPS.getFastPropertyValue(handle);
+ if (!checkPaths(oObj, aNewValues))
+ {
+ System.out.println(" FAIL: Did not change value on property " + name + ".");
+ bResult = false;
+ }
- assure("Listener was called, although it was removed on" +
- " property " + name + ".", !checkListener(mListener1), true);
- assure("Listener 2 was not called on property " + name + ".",
- checkListener(mListener2), true);
+ // set back to initial setting
+ System.out.println(" Try to check");
+ try
+ {
+ xFPS.setFastPropertyValue(handle, oValue);
+ }
+ catch (com.sun.star.beans.PropertyVetoException e)
+ {
+ // should not occur
+ System.out.println(" FAIL: PropertyVetoException caught: " + e.getMessage());
+ bResult = false;
+ }
+ }
+ catch (com.sun.star.beans.PropertyVetoException e)
+ {
+ if (!name.endsWith("_internal"))
+ {
+ // should not occur
+ System.out.println(" FAIL: PropertyVetoException caught: " + e.getMessage());
+ bResult = false;
+ }
+ else
+ {
+ System.out.println(" OK: PropertyVetoException caught: " + e.getMessage() + " it seems not allowed to change internal values.");
+ }
}
- catch(com.sun.star.uno.Exception e) {
- e.printStackTrace();
- log.println(e.getClass().getName());
- log.println("Message: " + e.getMessage());
- failed("Unexpcted exception on property " + name);
- continue;
+
+ // check if changed
+ Object checkVal3 = xFPS.getFastPropertyValue(handle);
+ if (!checkPaths(checkVal3, oValues))
+ {
+ System.out.println(" FAIL: Can't change value back to original on property " + name);
+ bResult = false;
}
- log.println("Finish testing property '" + propNames[i] + "'\n");
}
- log.println("---- Test of XPropertySet finished ----\n");
-
+ catch (com.sun.star.uno.Exception e)
+ {
+ System.out.println(" FAIL: getFastPropertyValue(handle:=" + handle + ", name:='" + name + "')" + e.getMessage());
+ bResult = false;
+ }
+ return bResult;
}
- private boolean checkListener(MyChangeListener ml) {
- return ml.changePropertyEventFired() ||
- ml.changePropertiesEventFired() ||
- ml.vetoableChangeEventFired();
+ private boolean checkStringProperty(Property property)
+ {
+ boolean bResult = true;
+ XFastPropertySet xFPS = UnoRuntime.queryInterface(XFastPropertySet.class, aPathSettings);
+ String name = property.Name;
+ int handle = property.Handle;
+ Object oValue;
+ try
+ {
+ oValue = xFPS.getFastPropertyValue(handle);
+ }
+ catch (UnknownPropertyException ex)
+ {
+ return false;
+ }
+ catch (WrappedTargetException ex)
+ {
+ return false;
+ }
+
+
+ try
+ {
+ String val = "";
+ val = AnyConverter.toString(oValue);
+ System.out.println(" Property has initial value: '" + val + "'");
+
+ // set to a new correct value
+ String newVal = changeToCorrectValue(val);
+ System.out.println(" Try to change to a correct value '" + newVal + "'");
+ xFPS.setFastPropertyValue(handle, newVal);
+
+ // check the change
+ String checkVal = (String) xFPS.getFastPropertyValue(handle);
+ if (!checkPaths(checkVal, newVal))
+ {
+ System.out.println(" FAIL: Did not change value on property " + name + ".");
+ bResult = false;
+ }
+ newVal = changeToIncorrectValue(val);
+ System.out.println(" Try to change to incorrect value '" + newVal + "'");
+ try
+ {
+ xFPS.setFastPropertyValue(handle, newVal);
+ }
+ catch (com.sun.star.lang.IllegalArgumentException e)
+ {
+ System.out.println(" Correctly thrown Exception caught.");
+ }
+
+ // check if changed
+ String checkVal2 = (String) xFPS.getFastPropertyValue(handle);
+ if (!checkPaths(checkVal2, checkVal))
+ {
+ System.out.println(" FAIL: Value did change on property " + name + " though it should not have.");
+ bResult = false;
+ }
+ else
+ {
+ System.out.println(" OK: Incorrect value was not set.");
+ }
+ // set back to initial setting
+ System.out.println(" Set back to initial value.");
+ try
+ {
+ xFPS.setFastPropertyValue(handle, val);
+ }
+ catch (com.sun.star.lang.IllegalArgumentException e)
+ {
+ System.out.println(" IllegalArgumentException caught: " + e.getMessage());
+ bResult = false;
+ }
+ // check if changed
+ String checkVal3 = (String) xFPS.getFastPropertyValue(handle);
+ if (!checkVal3.equals(val))
+ {
+ if (!checkPaths(checkVal3, val))
+ {
+ System.out.println(" FAIL: Can't change value back to original on property " + name);
+ System.out.println(" Value is: " + checkVal3);
+
+ bResult = false;
+ }
+ else
+ {
+ System.out.println(" OK: the pathsettings contains the original path.");
+ System.out.println(" Value is: " + checkVal3);
+ System.out.println(" Value should be: " + val);
+ }
+ }
+ else
+ {
+ System.out.println(" OK: Change value back to original on property " + name);
+ }
+ }
+ catch (com.sun.star.uno.Exception e)
+ {
+ System.out.println(" FAIL: getFastPropertyValue(handle:=" + handle + ", name:='" + name + "')" + e.getMessage());
+ bResult = false;
+ }
+ return bResult;
}
// ____________________
/**
+ * This tests the XMultiPropertySet interface implementation.
+ */
+
+ // The test checkXMultiPropertySet() has been marked as outdated!
+
+// @Test
+// public void checkXMultiPropertySet()
+// {
+// System.out.println("---- Testing the XMultiPropertySet interface ----");
+// XMultiPropertySet xMPS = UnoRuntime.queryInterface(XMultiPropertySet.class, aPathSettings);
+//
+// // xPropertyInfoOfPathSettings.length
+// String[] propertiesToTest = new String[1];
+// propertiesToTest[0] = availablePropNames[0];
+//
+// String[] correctVals = new String[propertiesToTest.length];
+// String[] incorrectVals = new String[propertiesToTest.length];
+//
+// String[] aPathSettingWorkingNames = null;
+// aPathSettingWorkingNames = new String[propertiesToTest.length];
+//
+// // get intitial values and create new ones
+// for (int i = 0; i < propertiesToTest.length; i++)
+// {
+// // Property aProp = aListOfWorkingProperty.get(i);
+// final String sName = propertiesToTest[i];
+// final String sValue = getPropertyValueAsString(sName);
+// aPathSettingWorkingNames[i] = sName;
+// correctVals[i] = changeToCorrectValue(sValue);
+// incorrectVals[i] = changeToIncorrectValue(sValue);
+// }
+//
+// try
+// {
+// // add a change listener
+// MyChangeListener mListener = new MyChangeListener();
+// xMPS.addPropertiesChangeListener(aPathSettingWorkingNames, mListener);
+//
+// // first change xPropertyInfoOfPathSettings to correct values
+// System.out.println("Change to correct values.");
+// xMPS.setPropertyValues(aPathSettingWorkingNames, correctVals);
+// assertTrue("Could not change to correct values with XMultiPropertySet.",
+// verifyPropertySet(xMPS, aPathSettingWorkingNames, correctVals) > 0);
+//
+// // second, change to incorrect values: expect an exception
+// System.out.println("Try to change to incorrect values.");
+// try
+// {
+// xMPS.setPropertyValues(aPathSettingWorkingNames, incorrectVals);
+// }
+// catch (com.sun.star.lang.IllegalArgumentException r)
+// {
+// System.out.println("Correctly thrown Exception caught.");
+// }
+// assertTrue("Did change to incorrect values with XMultiPropertySet,"
+// + " but should not have.",
+// verifyPropertySet(xMPS, aPathSettingWorkingNames, correctVals) > 0);
+//
+// // third, change back to initial values
+// System.out.println("Change back to initial values.");
+// xMPS.setPropertyValues(aPathSettingWorkingNames, aPathSettingValues);
+// assertTrue("Could not change back to initial values with"
+// + " XMultiPropertySet.",
+// verifyPropertySet(xMPS, aPathSettingWorkingNames, aPathSettingValues) > 0);
+//
+// // fire the event for the listener
+// System.out.println("Fire event.");
+// xMPS.firePropertiesChangeEvent(aPathSettingWorkingNames, mListener);
+// assertTrue("Event was not fired on XMultiPropertySet.",
+// mListener.changePropertiesEventFired());
+// }
+// catch (com.sun.star.uno.Exception e)
+// {
+//// e.printStackTrace();
+// System.out.println(e.getClass().getName());
+// System.out.println("Message: " + e.getMessage());
+// fail("Unexpected exception on XMultiPropertySet.");
+// }
+//
+// // test finished
+// System.out.println("---- Test of XMultiPropertySet finished ----\n");
+// }
+
+ /**
+ * Verify if the values of xPropSet_of_PathSettings are the same as vals.
+ * @param xPropSet_of_PathSettings A XMultiPropertySet.
+ * @param aPathSettingWorkingNames An array with property names.
+ * @param vals An array with values of the properties
+ * @return -1 if none are equal, 1 if all are equal, 0 if some were equal
+ * and some not.
+ * @throws com.sun.star.lang.IllegalArgumentException
+ */
+// private int verifyPropertySet(XMultiPropertySet xProp,
+// String[] propNames, String[] vals)
+// {
+// int ret = 0;
+// if (vals.length != propNames.length)
+// {
+// System.out.println("Length of array parameters must be equal.");
+// return ret;
+// }
+// for (int i = 0; i < vals.length; i++)
+// {
+// Object[] objs = xProp.getPropertyValues(new String[]
+// {
+// propNames[i]
+// });
+// String retVal = (String) objs[0];
+// boolean nCheck = retVal.equals(vals[i]);
+// if (!nCheck)
+// {
+// System.out.println("Property '" + propNames[i]
+// + "' was supposed to have value:");
+// System.out.println(vals[i]);
+// System.out.println("but has value:");
+// System.out.println(retVal);
+// }
+// // initialize
+// if (i == 0)
+// {
+// ret = nCheck ? 1 : -1;
+// continue;
+// }
+// // return 0 if equal state changes compared to initial value
+// if ((nCheck && ret < 0) || (!nCheck && ret > 0))
+// {
+// ret = 0;
+// }
+// }
+// return ret;
+// }
+
+ // ____________________
+ /**
+ * This tests the XPropertySet interface implementation.
+ */
+
+// The test checkXPropertySet() has been marked as outdated!
+
+
+// @Test
+// public void checkXPropertySet()
+// {
+// System.out.println("---- Testing the XPropertySet interface ----");
+//
+// XPropertySet xPS = UnoRuntime.queryInterface(XPropertySet.class, aPathSettings);
+//
+// MyChangeListener mListener1 = new MyChangeListener();
+// MyChangeListener mListener2 = new MyChangeListener();
+//
+// for (int i = 0; i < xPropertyInfoOfPathSettings.length; i++)
+// {
+// // adding listeners
+// String name = aPathSettingNames[i];
+// System.out.println("Testing property '" + name + "'");
+// try
+// {
+// System.out.println("Add 2 Listeners.");
+// xPS.addPropertyChangeListener(name, mListener1);
+// xPS.addVetoableChangeListener(name, mListener1);
+// xPS.addPropertyChangeListener(name, mListener2);
+// xPS.addVetoableChangeListener(name, mListener2);
+//
+// // change the property
+// System.out.println("Change value.");
+// String changeVal = changeToCorrectValue(aPathSettingValues[i]);
+// xPS.setPropertyValue(name, changeVal);
+// String newVal = (String) xPS.getPropertyValue(name);
+//
+// assertTrue("Value did not change on property " + name + ".",
+// newVal.equals(changeVal));
+//
+// assertTrue("Listener 1 was not called.", checkListener(mListener1));
+// assertTrue("Listener 2 was not called.", checkListener(mListener2));
+//
+// mListener1.resetListener();
+// mListener2.resetListener();
+//
+// System.out.println("Remove Listener 1.");
+//
+// xPS.removePropertyChangeListener(name, mListener1);
+// xPS.removeVetoableChangeListener(name, mListener1);
+//
+// // change the property
+// System.out.println("Change value back.");
+// xPS.setPropertyValue(name, aPathSettingValues[i]);
+// newVal = (String) xPS.getPropertyValue(name);
+// assertTrue("Value did not change on property " + name,
+// newVal.equals(aPathSettingValues[i]));
+//
+// assertTrue("Listener was called, although it was removed on"
+// + " property " + name + ".", !checkListener(mListener1));
+// assertTrue("Listener 2 was not called on property " + name + ".",
+// checkListener(mListener2));
+// }
+// catch (com.sun.star.uno.Exception e)
+// {
+// System.out.println(e.getClass().getName());
+// System.out.println("Message: " + e.getMessage());
+// fail("Unexpcted exception on property " + name);
+// }
+// System.out.println("Finish testing property '" + aPathSettingNames[i] + "'\n");
+// }
+// System.out.println("---- Test of XPropertySet finished ----\n");
+//
+// }
+
+// private boolean checkListener(MyChangeListener ml)
+// {
+// return ml.changePropertyEventFired()
+// || ml.changePropertiesEventFired()
+// || ml.vetoableChangeEventFired();
+// }
+
+ // ____________________
+ /**
* Change the given String to a correct path URL.
* @return The changed path URL.
*/
- private String changeToCorrectValue(String path) {
+ private String changeToCorrectValue(String path)
+ {
// the simplest possiblity
- if ( path == null || path.equals("") ) {
- return "file:///tmp";
+ if (path == null || path.equals(""))
+ {
+ String sTempDir = System.getProperty("java.io.tmpdir");
+ sTempDir = util.utils.getFullURL(sTempDir);
+ return sTempDir; // "file:///tmp";
}
- return path + "/tmp";
+ return graphical.FileHelper.appendPath(path, "tmp");
}
-
/**
* Change the given String to an incorrect path URL.
* @return The changed path URL.
*/
- private String changeToIncorrectValue(String path) {
- // the simplest possiblity
+ private String changeToIncorrectValue(String path)
+ {
+ // return an illegal path
return "fileblablabla";
}
-
/**
- * Listener implementation which sets a flag when
- * listener was called.
- */
+ * Listener implementation which sets a flag when
+ * listener was called.
+ */
public class MyChangeListener implements XPropertiesChangeListener,
- XPropertyChangeListener,
- XVetoableChangeListener {
-
- private boolean propChanged = false;
- private boolean propertiesChanged = false;
- private boolean disposeCalled = false;
- private boolean vetoableChanged = false;
-
- public void propertiesChange(
- com.sun.star.beans.PropertyChangeEvent[] e) {
- propertiesChanged = true;
- }
-
- public void vetoableChange(com.sun.star.beans.PropertyChangeEvent pE)
- throws com.sun.star.beans.PropertyVetoException {
- vetoableChanged = true;
- }
-
- public void propertyChange(com.sun.star.beans.PropertyChangeEvent pE) {
- propChanged = true;
- }
-
- public void disposing(com.sun.star.lang.EventObject eventObject) {
- disposeCalled = true;
- }
-
- public void resetListener() {
- propChanged = false;
- propertiesChanged = false;
- disposeCalled = false;
- vetoableChanged = false;
- }
-
- public boolean changePropertyEventFired() {
- return propChanged;
- }
- public boolean changePropertiesEventFired() {
- return propertiesChanged;
- }
- public boolean vetoableChangeEventFired() {
- return vetoableChanged;
- }
+ XPropertyChangeListener,
+ XVetoableChangeListener
+ {
- };
+ private boolean propChanged = false;
+ private boolean propertiesChanged = false;
+ private boolean disposeCalled = false;
+ private boolean vetoableChanged = false;
+
+ public void propertiesChange(
+ com.sun.star.beans.PropertyChangeEvent[] e)
+ {
+ propertiesChanged = true;
+ }
+
+ public void vetoableChange(com.sun.star.beans.PropertyChangeEvent pE)
+ throws com.sun.star.beans.PropertyVetoException
+ {
+ vetoableChanged = true;
+ }
+
+ public void propertyChange(com.sun.star.beans.PropertyChangeEvent pE)
+ {
+ propChanged = true;
+ }
+
+ public void disposing(com.sun.star.lang.EventObject eventObject)
+ {
+ disposeCalled = true;
+ }
+
+ public void resetListener()
+ {
+ propChanged = false;
+ propertiesChanged = false;
+ disposeCalled = false;
+ vetoableChanged = false;
+ }
+
+ public boolean changePropertyEventFired()
+ {
+ return propChanged;
+ }
+
+ public boolean changePropertiesEventFired()
+ {
+ return propertiesChanged;
+ }
+
+ public boolean vetoableChangeEventFired()
+ {
+ return vetoableChanged;
+ }
+ }
+
+ private XMultiServiceFactory getMSF()
+ {
+ final XMultiServiceFactory xMSF1 = UnoRuntime.queryInterface(XMultiServiceFactory.class, connection.getComponentContext().getServiceManager());
+ return xMSF1;
+ }
+
+ // setup and close connections
+ @BeforeClass
+ public static void setUpConnection() throws Exception
+ {
+ System.out.println("setUpConnection()");
+ connection.setUp();
+ }
+
+ @AfterClass
+ public static void tearDownConnection()
+ throws InterruptedException, com.sun.star.uno.Exception
+ {
+ System.out.println("tearDownConnection()");
+ connection.tearDown();
+ }
+ private static final OfficeConnection connection = new OfficeConnection();
}