Line 0
Link Here
|
|
|
1 |
/************************************************************** |
2 |
* |
3 |
* Licensed to the Apache Software Foundation (ASF) under one |
4 |
* or more contributor license agreements. See the NOTICE file |
5 |
* distributed with this work for additional information |
6 |
* regarding copyright ownership. The ASF licenses this file |
7 |
* to you under the Apache License, Version 2.0 (the |
8 |
* "License"); you may not use this file except in compliance |
9 |
* with the License. You may obtain a copy of the License at |
10 |
* |
11 |
* http://www.apache.org/licenses/LICENSE-2.0 |
12 |
* |
13 |
* Unless required by applicable law or agreed to in writing, |
14 |
* software distributed under the License is distributed on an |
15 |
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
16 |
* KIND, either express or implied. See the License for the |
17 |
* specific language governing permissions and limitations |
18 |
* under the License. |
19 |
* |
20 |
*************************************************************/ |
21 |
|
22 |
package testcase.uno.sc.chart; |
23 |
|
24 |
import static org.junit.Assert.assertArrayEquals; |
25 |
|
26 |
import java.util.Arrays; |
27 |
import java.util.Collection; |
28 |
|
29 |
import org.junit.After; |
30 |
import org.junit.AfterClass; |
31 |
import org.junit.Before; |
32 |
import org.junit.BeforeClass; |
33 |
import org.junit.Test; |
34 |
import org.junit.runner.RunWith; |
35 |
import org.junit.runners.Parameterized; |
36 |
import org.junit.runners.Parameterized.Parameters; |
37 |
import org.openoffice.test.uno.UnoApp; |
38 |
|
39 |
import testlib.uno.SCUtil; |
40 |
|
41 |
import com.sun.star.awt.Rectangle; |
42 |
import com.sun.star.chart.XChartDocument; |
43 |
import com.sun.star.chart.XDiagram; |
44 |
import com.sun.star.lang.XComponent; |
45 |
import com.sun.star.sheet.XSpreadsheet; |
46 |
import com.sun.star.sheet.XSpreadsheetDocument; |
47 |
import com.sun.star.table.CellRangeAddress; |
48 |
|
49 |
/** |
50 |
* Check Grids in chart can be applied and saved |
51 |
* |
52 |
*/ |
53 |
@RunWith(value = Parameterized.class) |
54 |
public class ChartGrid { |
55 |
|
56 |
private Boolean[] majorGrids; |
57 |
private Boolean[] minorGrids; |
58 |
private String inputType; |
59 |
private double[][] numberData; |
60 |
private String fileType; |
61 |
|
62 |
private static final UnoApp unoApp = new UnoApp(); |
63 |
|
64 |
XComponent scComponent = null; |
65 |
XSpreadsheetDocument scDocument = null; |
66 |
|
67 |
@Parameters |
68 |
public static Collection<Object[]> data() throws Exception { |
69 |
double[][] numberData1 = { |
70 |
{10, 20, 30, 40}, |
71 |
{20, 40.3, 50, 80}, |
72 |
{40, 20, 30, 10}, |
73 |
{10, -10, 0, -30} |
74 |
}; |
75 |
Boolean[][] gridsList = { |
76 |
{false, false, false}, //[0] no grid |
77 |
{true, false, false}, // [1] X |
78 |
{false, true, false}, // [2] Y |
79 |
{true, true, false}, // [3] X & Y |
80 |
{true, true, true}, // [4] X & Y & Z |
81 |
{false, false, true}, // [5] Z |
82 |
{false, true, true}, // [6] Y & Z |
83 |
{true, false, true} // [7] X & Z |
84 |
}; |
85 |
|
86 |
return Arrays.asList(new Object[][] { |
87 |
{gridsList[0], null, "com.sun.star.chart.BarDiagram", numberData1, "ods"}, |
88 |
{gridsList[2], gridsList[3], "com.sun.star.chart.BarDiagram", numberData1, "ods"}, |
89 |
{gridsList[2], gridsList[4], "com.sun.star.chart.BarDiagram", numberData1, "ods"}, |
90 |
{gridsList[6], gridsList[7], "com.sun.star.chart.BarDiagram", numberData1, "ods"}, |
91 |
{gridsList[1], gridsList[5], "com.sun.star.chart.BarDiagram", numberData1, "ods"}, |
92 |
{gridsList[4], gridsList[4], "com.sun.star.chart.BarDiagram", numberData1, "ods"}, |
93 |
|
94 |
{gridsList[0], null, "com.sun.star.chart.BarDiagram", numberData1, "xls"}, |
95 |
{gridsList[2], gridsList[3], "com.sun.star.chart.BarDiagram", numberData1, "xls"} |
96 |
// {null, gridsList[4], "com.sun.star.chart.BarDiagram", numberData1, "xls"}, |
97 |
// {gridsList[6], gridsList[7], "com.sun.star.chart.BarDiagram", numberData1, "xls"}, |
98 |
// {gridsList[1], gridsList[5], "com.sun.star.chart.BarDiagram", numberData1, "xls"}, |
99 |
// {gridsList[4], gridsList[4], "com.sun.star.chart.BarDiagram", numberData1, "xls"} |
100 |
|
101 |
}); |
102 |
} |
103 |
|
104 |
public ChartGrid(Boolean[] majorGrids, Boolean[] minorGrids, String inputType, double[][] numberData, String fileType) { |
105 |
this.majorGrids = majorGrids; |
106 |
this.minorGrids = minorGrids; |
107 |
this.inputType = inputType; |
108 |
this.numberData = numberData; |
109 |
this.fileType = fileType; |
110 |
} |
111 |
|
112 |
@Before |
113 |
public void setUp() throws Exception { |
114 |
scComponent = unoApp.newDocument("scalc"); |
115 |
scDocument = SCUtil.getSCDocument(scComponent); |
116 |
} |
117 |
|
118 |
@After |
119 |
public void tearDown() throws Exception { |
120 |
unoApp.closeDocument(scComponent); |
121 |
|
122 |
} |
123 |
|
124 |
@BeforeClass |
125 |
public static void setUpConnection() throws Exception { |
126 |
unoApp.start(); |
127 |
} |
128 |
|
129 |
@AfterClass |
130 |
public static void tearDownConnection() throws InterruptedException, Exception { |
131 |
unoApp.close(); |
132 |
SCUtil.clearTempDir(); |
133 |
} |
134 |
|
135 |
/** |
136 |
* Enable different types of grids in chart. |
137 |
* 1. Create a spreadsheet file. |
138 |
* 2. Input number in a cell range and create a 2D chart. |
139 |
* 3. Enable grids of X/Y axis in chart. |
140 |
* 4. Save file as ODF/MSBinary format. |
141 |
* 5. Close and reopen file. -> Check the grid setting. |
142 |
* @throws Exception |
143 |
*/ |
144 |
@Test |
145 |
public void testCreateXYGrid() throws Exception { |
146 |
String fileName = "testCreateXYGrid"; |
147 |
String chartName = "testChart"; |
148 |
String cellRangeName = "A1:D4"; |
149 |
Boolean[][] expected = { |
150 |
{false, true, false}, |
151 |
{false, false, false} |
152 |
}; |
153 |
Boolean[][] results = { |
154 |
{false, false, false}, |
155 |
{false, false, false} |
156 |
}; |
157 |
|
158 |
if (inputType.equals("com.sun.star.chart.StockDiagram")) { |
159 |
cellRangeName = "A1:C4"; |
160 |
} |
161 |
if (fileType.equalsIgnoreCase("xls")) { |
162 |
chartName = "Object 1"; |
163 |
} |
164 |
|
165 |
XSpreadsheet sheet = SCUtil.getCurrentSheet(scDocument); |
166 |
|
167 |
SCUtil.setValueToCellRange(sheet, 0, 0, numberData); |
168 |
|
169 |
CellRangeAddress[] cellAddress = new CellRangeAddress[1]; |
170 |
cellAddress[0] = SCUtil.getChartDataRangeByName(sheet, cellRangeName); |
171 |
Rectangle rectangle = new Rectangle(1000, 1000, 15000, 9500); |
172 |
XChartDocument xChartDocument = null; |
173 |
xChartDocument = SCUtil.createChart(sheet, rectangle, cellAddress, chartName); |
174 |
SCUtil.setChartType(xChartDocument, inputType); |
175 |
XDiagram xDiagram = xChartDocument.getDiagram(); |
176 |
|
177 |
if (majorGrids != null) { |
178 |
SCUtil.setProperties(xDiagram, "HasXAxisGrid", majorGrids[0]); |
179 |
SCUtil.setProperties(xDiagram, "HasYAxisGrid", majorGrids[1]); |
180 |
expected[0][0] = majorGrids[0]; |
181 |
expected[0][1] = majorGrids[1]; |
182 |
} |
183 |
if (minorGrids != null) { |
184 |
SCUtil.setProperties(xDiagram, "HasXAxisHelpGrid", minorGrids[0]); |
185 |
SCUtil.setProperties(xDiagram, "HasYAxisHelpGrid", minorGrids[1]); |
186 |
expected[1][0] = minorGrids[0]; |
187 |
expected[1][1] = minorGrids[1]; |
188 |
} |
189 |
|
190 |
SCUtil.saveFileAs(scComponent, fileName, fileType); |
191 |
scDocument = SCUtil.reloadFile(unoApp, scDocument, fileName + "." + fileType); |
192 |
sheet = SCUtil.getCurrentSheet(scDocument); |
193 |
|
194 |
xChartDocument = SCUtil.getChartByName(sheet, chartName); |
195 |
xDiagram = xChartDocument.getDiagram(); |
196 |
results[0][0] = (Boolean) SCUtil.getProperties(xDiagram, "HasXAxisGrid"); |
197 |
results[0][1] = (Boolean) SCUtil.getProperties(xDiagram, "HasYAxisGrid"); |
198 |
results[1][0] = (Boolean) SCUtil.getProperties(xDiagram, "HasXAxisHelpGrid"); |
199 |
results[1][1] = (Boolean) SCUtil.getProperties(xDiagram, "HasYAxisHelpGrid"); |
200 |
|
201 |
SCUtil.closeFile(scDocument); |
202 |
|
203 |
assertArrayEquals("Incorrect chart grids got in ." + fileType + " file.", expected, results); |
204 |
|
205 |
} |
206 |
|
207 |
/** |
208 |
* Enable different types of grids in chart. |
209 |
* 1. Create a spreadsheet file. |
210 |
* 2. Input number in a cell range and create a 3D chart. |
211 |
* 3. Enable grids of X/Y/Z axes in chart. |
212 |
* 4. Save file as ODF/MSBinary format. |
213 |
* 5. Close and reopen file. -> Check the grid setting. |
214 |
* @throws Exception |
215 |
*/ |
216 |
@Test |
217 |
public void testCreateXYZGrid() throws Exception { |
218 |
String fileName = "testCreateXYZGrid"; |
219 |
String chartName = "testChart"; |
220 |
String cellRangeName = "A1:D4"; |
221 |
Boolean[][] expected = { |
222 |
{false, true, false}, |
223 |
{false, false, false} |
224 |
}; |
225 |
Boolean[][] results = { |
226 |
{false, false, false}, |
227 |
{false, false, false} |
228 |
}; |
229 |
|
230 |
if (inputType.equals("com.sun.star.chart.StockDiagram")) { |
231 |
cellRangeName = "A1:C4"; |
232 |
} |
233 |
if (fileType.equalsIgnoreCase("xls")) { |
234 |
chartName = "Object 1"; |
235 |
} |
236 |
|
237 |
XSpreadsheet sheet = SCUtil.getCurrentSheet(scDocument); |
238 |
|
239 |
SCUtil.setValueToCellRange(sheet, 0, 0, numberData); |
240 |
|
241 |
CellRangeAddress[] cellAddress = new CellRangeAddress[1]; |
242 |
cellAddress[0] = SCUtil.getChartDataRangeByName(sheet, cellRangeName); |
243 |
Rectangle rectangle = new Rectangle(1000, 1000, 15000, 9500); |
244 |
XChartDocument xChartDocument = null; |
245 |
xChartDocument = SCUtil.createChart(sheet, rectangle, cellAddress, chartName); |
246 |
SCUtil.setChartType(xChartDocument, inputType); |
247 |
SCUtil.setProperties(xChartDocument.getDiagram(), "Dim3D", true); |
248 |
XDiagram xDiagram = xChartDocument.getDiagram(); |
249 |
|
250 |
if (majorGrids != null) { |
251 |
SCUtil.setProperties(xDiagram, "HasXAxisGrid", majorGrids[0]); |
252 |
SCUtil.setProperties(xDiagram, "HasYAxisGrid", majorGrids[1]); |
253 |
SCUtil.setProperties(xDiagram, "HasZAxisGrid", majorGrids[2]); |
254 |
expected[0][0] = majorGrids[0]; |
255 |
expected[0][1] = majorGrids[1]; |
256 |
expected[0][2] = majorGrids[2]; |
257 |
} |
258 |
if (minorGrids != null) { |
259 |
SCUtil.setProperties(xDiagram, "HasXAxisHelpGrid", minorGrids[0]); |
260 |
SCUtil.setProperties(xDiagram, "HasYAxisHelpGrid", minorGrids[1]); |
261 |
SCUtil.setProperties(xDiagram, "HasZAxisHelpGrid", minorGrids[2]); |
262 |
expected[1][0] = minorGrids[0]; |
263 |
expected[1][1] = minorGrids[1]; |
264 |
expected[1][2] = minorGrids[2]; |
265 |
} |
266 |
|
267 |
SCUtil.saveFileAs(scComponent, fileName, fileType); |
268 |
scDocument = SCUtil.reloadFile(unoApp, scDocument, fileName + "." + fileType); |
269 |
sheet = SCUtil.getCurrentSheet(scDocument); |
270 |
|
271 |
xChartDocument = SCUtil.getChartByName(sheet, chartName); |
272 |
xDiagram = xChartDocument.getDiagram(); |
273 |
results[0][0] = (Boolean) SCUtil.getProperties(xDiagram, "HasXAxisGrid"); |
274 |
results[0][1] = (Boolean) SCUtil.getProperties(xDiagram, "HasYAxisGrid"); |
275 |
results[0][2] = (Boolean) SCUtil.getProperties(xDiagram, "HasZAxisGrid"); |
276 |
results[1][0] = (Boolean) SCUtil.getProperties(xDiagram, "HasXAxisHelpGrid"); |
277 |
results[1][1] = (Boolean) SCUtil.getProperties(xDiagram, "HasYAxisHelpGrid"); |
278 |
results[1][2] = (Boolean) SCUtil.getProperties(xDiagram, "HasZAxisHelpGrid"); |
279 |
|
280 |
SCUtil.closeFile(scDocument); |
281 |
|
282 |
assertArrayEquals("Incorrect chart grids got in ." + fileType + " file.", expected, results); |
283 |
|
284 |
} |
285 |
|
286 |
} |