summaryrefslogtreecommitdiff
path: root/qadevOOo/tests/java/ifc/sheet/_XRecentFunctions.java
blob: d9dbf71323d01823c004b86bb3793c7dff5b8690 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
/*
 * 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.sheet;

import java.util.Random;

import lib.MultiMethodTest;
import lib.Status;
import lib.StatusException;

import com.sun.star.beans.PropertyValue;
import com.sun.star.container.XNameAccess;
import com.sun.star.sheet.XRecentFunctions;

/**
* Testing <code>com.sun.star.sheet.XRecentFunctions</code>
* interface methods :
* <ul>
*  <li><code> getRecentFunctionIds()</code></li>
*  <li><code> setRecentFunctionIds()</code></li>
*  <li><code> getMaxRecentFunctions()</code></li>
* </ul> <p>
* This test needs the following object relations :
* <ul>
*  <li> <code>'FUNCTIONLIST'</code> (of type <code>XNameAccess</code>):
*   to have the set of available functions </li>
* <ul> <p>
* @see com.sun.star.sheet.XRecentFunctions
*/
public class _XRecentFunctions extends MultiMethodTest {

    public XRecentFunctions oObj = null;
    int iMaxNumber = 0;

    /**
    * Test calls the method, checks returned value and stores it. <p>
    * Has <b> OK </b> status if returned value isn't equal to zero. <p>
    */
    public void _getMaxRecentFunctions() {

        iMaxNumber = oObj.getMaxRecentFunctions();
        log.println("Maximum recent functions : " + iMaxNumber);

        tRes.tested("getMaxRecentFunctions()", iMaxNumber != 0);
    }

    /**
    * Test calls the method and checks returned value. <p>
    * Has <b> OK </b> status if returned value isn't null, if length of returned
    * array is equal or less to the maximum number of functions and obtained
    * array doesn't contain equal functions. <p>
    * The following method tests are to be completed successfully before :
    * <ul>
    *  <li> <code> getMaxRecentFunctions() </code> : to have the maximum number
    *  of recent functions </li>
    * </ul>
    */
    public void _getRecentFunctionIds() {
        requiredMethod("getMaxRecentFunctions()");

        boolean bResult = true;
        int[] IDs = null;
        int iNumber = 0;

        IDs = oObj.getRecentFunctionIds();
        iNumber = IDs.length;
        bResult &= (iNumber <= iMaxNumber);
        log.println("Now there are " + iNumber + " recent functions");
        bResult &= (IDs != null);
        if (bResult) {
            for (int i = 0; i < iNumber - 1; i++)
                for (int j = i + 1; j < iNumber; j++) {
                    bResult &= (IDs[i] != IDs[j]);
                }
        }

        tRes.tested("getRecentFunctionIds()", bResult);
    }

    /**
    * Test gets the set of available functions, sets empty list of recent
    * functions, sets list of maximum size. <p>
    * Has <b> OK </b> status if length of recent function list is equal to zero
    * after list was set to empty, if length of list is equal to maximum size
    * after list was set to its maximum size and no exception were thrown. <p>
    * The following method tests are to be completed successfully before :
    * <ul>
    *  <li> <code> getMaxRecentFunctions() </code> : to have the maximum number
    *  of recent functions </li>
    * </ul>
    */
    public void _setRecentFunctionIds() {
        requiredMethod("getMaxRecentFunctions()");

        boolean bResult = true;
        int[] IDs = new int[0];
        XNameAccess functionList = null;

        log.println("First, get the set of available functions.");
        functionList = (XNameAccess)tEnv.getObjRelation("FUNCTIONLIST");
        if (functionList == null) throw new StatusException(Status.failed
            ("Relation 'FUNCTIONLIST' not found"));

        log.println("Now trying to set empty list.");
        oObj.setRecentFunctionIds(IDs);
        bResult &= (oObj.getRecentFunctionIds().length == 0);

        log.println("Now trying to set list of maximum size.");
        String[] names = functionList.getElementNames();
        Random rnd = new Random();

        IDs = new int[iMaxNumber];
        int startIdx = rnd.nextInt(names.length - iMaxNumber - 1) + 1;

        try {
            for (int i = startIdx; i < startIdx + iMaxNumber; i++) {
                PropertyValue[] propVals = (PropertyValue[])
                    functionList.getByName(names[i]);
                for (int j = 0; j < propVals.length; j++) {
                    String propName = propVals[j].Name;
                    if (propName.equals("Id")) {
                        IDs[i - startIdx] =
                            ((Integer)propVals[j].Value).intValue();
                        break;
                    }
                }
            }
        } catch(com.sun.star.lang.WrappedTargetException e) {
            e.printStackTrace(log);
            bResult = false;
        } catch(com.sun.star.container.NoSuchElementException e) {
            e.printStackTrace(log);
            bResult = false;
        }

        oObj.setRecentFunctionIds(IDs);
        bResult &= (oObj.getRecentFunctionIds().length == iMaxNumber);

        tRes.tested("setRecentFunctionIds()", bResult);
    }

}