diff options
Diffstat (limited to 'qadevOOo/tests/java/ifc/text/_XAutoTextGroup.java')
-rw-r--r-- | qadevOOo/tests/java/ifc/text/_XAutoTextGroup.java | 299 |
1 files changed, 299 insertions, 0 deletions
diff --git a/qadevOOo/tests/java/ifc/text/_XAutoTextGroup.java b/qadevOOo/tests/java/ifc/text/_XAutoTextGroup.java new file mode 100644 index 000000000..9a67c4301 --- /dev/null +++ b/qadevOOo/tests/java/ifc/text/_XAutoTextGroup.java @@ -0,0 +1,299 @@ +/* + * 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.text; + +import lib.MultiMethodTest; +import lib.Status; +import lib.StatusException; +import util.ValueComparer; + +import com.sun.star.text.XAutoTextGroup; +import com.sun.star.text.XTextRange; + +/** + * Testing <code>com.sun.star.text.XAutoTextGroup</code> + * interface methods : + * <ul> + * <li><code> getTitles()</code></li> + * <li><code> renameByName()</code></li> + * <li><code> insertNewByName()</code></li> + * <li><code> removeByName()</code></li> + * </ul> <p> + * This test needs the following object relations : + * <ul> + * <li> <code>'TextRange'</code> (of type <code>XTextRange</code>): + * the range for which an entry is added. </li> + * <ul> <p> + * Test is multithread compliant. <p> + * @see com.sun.star.text.XAutoTextGroup + */ +public class _XAutoTextGroup extends MultiMethodTest { + + public XAutoTextGroup oObj = null; + + /** + * Unique number among different interface threads. + */ + protected static int uniq = 0 ; + + /** + * Unique string for AutoTextEntry names among different + * threads. + */ + protected String str = null ; + + /** + * Prefix for unique string. + * @see #str + */ + protected static final String pref = "XAutoTextGroup" ; + protected XTextRange oRange = null; + + /** + * Constructs a unique string for current interface thread + * for naming purposes. All old entries which names are + * started with prefix used for entry names, are deleted + * from the group (they can remain after previous unsuccessful + * test runs). The relation is obtained. + * + * @throws StatusException if the relation is not found. + */ + @Override + public void before() { + str = pref + uniq++ ; + String[] names = oObj.getElementNames() ; + for (int i = 0; i < names.length; i++) { + log.println(" " + names[i]); + if (names[i].toUpperCase().indexOf(pref.toUpperCase()) > 0) { + try { + log.println(" ... removing ..."); + oObj.removeByName(names[i]) ; + } catch (com.sun.star.container.NoSuchElementException e) { + log.println("Element '" + names[i] + "' not found."); + } + } + } + + oRange = (XTextRange) tEnv.getObjRelation("TextRange"); + if (oRange == null) { + throw new StatusException(Status.failed("No relation found")) ; + } + } + + /** + * Test calls the method. <p> + * Has <b> OK </b> status if the method returns not + * <code>null</code> value. + */ + public void _getTitles() { + + String[] titles = oObj.getTitles(); + tRes.tested("getTitles()",titles != null); + } + + /** + * Firsts inserts a new <code>AutoTextEntry</code> using a range + * from relation, entry titles are checked before and after + * insertion, second tries to add an entry with the same name. <p> + * + * Has <b>OK</b> status if in the first case titles are changed, + * and in the second case <code>ElementExistException</code> is + * thrown. + */ + public void _insertNewByName() { + + boolean result = false; + + try { + String[] before = oObj.getTitles(); + oObj.insertNewByName(str, "For " + str,oRange); + String[] after = oObj.getTitles(); + result = !util.ValueComparer.equalValue(before, after); + } + catch (com.sun.star.container.ElementExistException ex) { + log.println("Exception occurred while testing insertNewByName"); + ex.printStackTrace(log); + result = false; + } + + try { + oObj.insertNewByName(str, "For " + str, oRange); + log.println( + "com::sun::star::container::ElementExistsException wasn't thrown"); + oObj.removeByName(str); + result &= false; + } catch (com.sun.star.container.ElementExistException ex) { + result &= true; + } catch (com.sun.star.container.NoSuchElementException ex) { + log.println("Wrong exception was thrown :"); + ex.printStackTrace(log); + result &= false; + } + + tRes.tested("insertNewByName()",result); + + } + + /** + * Removes <code>AutoTextEntry</code> added before and checks + * titles of the group before and after removing. <p> + * Has <b> OK </b> status if titles are not equal before and after + * removing and no exceptions were thrown. <p> + * The following method tests are to be completed successfully before : + * <ul> + * <li> <code> insertNewByName() </code> : the entry is + * inserted here. </li> + * </ul> + */ + public void _removeByName() { + requiredMethod("insertNewByName()") ; + + try { + String[] before = oObj.getTitles(); + oObj.removeByName(str); + String[] after = oObj.getTitles(); + tRes.tested("removeByName()", + !ValueComparer.equalValue(before,after)); + } + catch (com.sun.star.container.NoSuchElementException ex) { + log.println("Exception occurred while testing removeByName"); + ex.printStackTrace(log); + tRes.tested("removeByName()",false); + } + } + + /** + * Three cases are tested here : + * <ol> + * <li> Trying to rename an entry to a name, which already + * exists in the group. <code>ElementExistException</code> + * must be thrown. </li> + * <li> Trying to rename an element with non-existing name. + * <code>IllegalArgumentException</code> must be thrown.</li> + * <li> The normal situation : no exceptions must be thrown + * and element with a new name must arise. </li> + * </ol> + * + * Has <b>OK</b> status if all three cases were completed successfully. + */ + public void _renameByName() { + boolean result = false; + + try { + oObj.getTitles(); + oObj.getElementNames(); + oObj.insertNewByName(str,"For " + str,oRange); + oObj.insertNewByName(str + "dup","For " + str,oRange); + oObj.getTitles(); + oObj.getElementNames(); + result = true; + } catch (com.sun.star.container.ElementExistException e) { + log.println("Unexpected exception occurred :") ; + e.printStackTrace(log); + } finally { + if (!result) { + try { + oObj.removeByName(str); + } catch (com.sun.star.container.NoSuchElementException e) {} + try { + oObj.removeByName(str + "dup"); + } catch (com.sun.star.container.NoSuchElementException e) {} + tRes.tested("renameByName()", false); + } + } + + + try { + oObj.renameByName(str, str + "dup", "For "+str); + log.println( + "com::sun::star::container::ElementExistsException wasn't thrown"); + result = false; + } catch (com.sun.star.container.ElementExistException e) { + result = true; + } catch (com.sun.star.io.IOException e) { + log.println("Wrong exception was thrown :"); + e.printStackTrace(log); + result = false; + } catch (com.sun.star.lang.IllegalArgumentException e) { + log.println("Wrong exception was thrown :"); + e.printStackTrace(log); + result = false; + } finally { + try { + oObj.removeByName(str); + } catch (com.sun.star.container.NoSuchElementException e) {} + try { + oObj.removeByName(str + "dup"); + } catch (com.sun.star.container.NoSuchElementException e) {} + } + + try { + oObj.renameByName("~"+str,str,str); + log.println( + "com::sun::star::lang::IllegalArgumentException wasn't thrown"); + result &= false; + } catch (com.sun.star.lang.IllegalArgumentException ex) { + result &= true; + } catch (com.sun.star.container.ElementExistException e) { + log.println("Unexpected exception :") ; + e.printStackTrace(log) ; + result = false ; + } catch (com.sun.star.io.IOException e) { + log.println("Unexpected exception :") ; + e.printStackTrace(log) ; + result = false ; + } finally { + try { + oObj.removeByName(str); + } catch (com.sun.star.container.NoSuchElementException e) {} + } + + try { + oObj.insertNewByName(str, "For " + str, oRange); + + oObj.renameByName(str,str+"a",str+"b"); + result &= oObj.hasByName(str + "a"); + } catch (com.sun.star.container.ElementExistException ex) { + log.println("Exception occurred while testing renameByName"); + ex.printStackTrace(log); + result &=false; + } catch (com.sun.star.lang.IllegalArgumentException ex) { + log.println("Exception occurred while testing renameByName"); + ex.printStackTrace(log); + result &=false; + } catch (com.sun.star.io.IOException ex) { + log.println("Exception occurred while testing renameByName"); + ex.printStackTrace(log); + result &=false; + } finally { + try { + oObj.removeByName(str); + } catch (com.sun.star.container.NoSuchElementException e) {} + try { + oObj.removeByName(str + "a"); + } catch (com.sun.star.container.NoSuchElementException e) {} + } + + tRes.tested("renameByName()",result); + + } + +} // finish class _XAutoTextGroup + + |