xref: /trunk/test/testuno/source/fvt/uno/sc/formula/TestFormulaRoundTrip.java (revision 371410417827e07a8f8596550830c16c641bed7c)
1b045a72bSDamjan Jovanovic /**************************************************************
2b045a72bSDamjan Jovanovic  *
3b045a72bSDamjan Jovanovic  * Licensed to the Apache Software Foundation (ASF) under one
4b045a72bSDamjan Jovanovic  * or more contributor license agreements.  See the NOTICE file
5b045a72bSDamjan Jovanovic  * distributed with this work for additional information
6b045a72bSDamjan Jovanovic  * regarding copyright ownership.  The ASF licenses this file
7b045a72bSDamjan Jovanovic  * to you under the Apache License, Version 2.0 (the
8b045a72bSDamjan Jovanovic  * "License"); you may not use this file except in compliance
9b045a72bSDamjan Jovanovic  * with the License.  You may obtain a copy of the License at
10b045a72bSDamjan Jovanovic  *
11b045a72bSDamjan Jovanovic  *   http://www.apache.org/licenses/LICENSE-2.0
12b045a72bSDamjan Jovanovic  *
13b045a72bSDamjan Jovanovic  * Unless required by applicable law or agreed to in writing,
14b045a72bSDamjan Jovanovic  * software distributed under the License is distributed on an
15b045a72bSDamjan Jovanovic  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16b045a72bSDamjan Jovanovic  * KIND, either express or implied.  See the License for the
17b045a72bSDamjan Jovanovic  * specific language governing permissions and limitations
18b045a72bSDamjan Jovanovic  * under the License.
19b045a72bSDamjan Jovanovic  *
20b045a72bSDamjan Jovanovic  *************************************************************/
21b045a72bSDamjan Jovanovic 
22b045a72bSDamjan Jovanovic 
23b045a72bSDamjan Jovanovic package fvt.uno.sc.formula;
24b045a72bSDamjan Jovanovic 
25b045a72bSDamjan Jovanovic import static org.junit.Assert.assertEquals;
26b045a72bSDamjan Jovanovic 
27b045a72bSDamjan Jovanovic import java.util.Arrays;
28b045a72bSDamjan Jovanovic import java.util.Collection;
29b045a72bSDamjan Jovanovic 
30b045a72bSDamjan Jovanovic import org.junit.After;
31b045a72bSDamjan Jovanovic import org.junit.Before;
32b045a72bSDamjan Jovanovic import org.junit.Test;
33b045a72bSDamjan Jovanovic import org.junit.runner.RunWith;
34b045a72bSDamjan Jovanovic import org.junit.runners.Parameterized;
35b045a72bSDamjan Jovanovic import org.junit.runners.Parameterized.Parameters;
36b045a72bSDamjan Jovanovic 
37b045a72bSDamjan Jovanovic import org.openoffice.test.common.Testspace;
38b045a72bSDamjan Jovanovic import org.openoffice.test.uno.UnoApp;
39b045a72bSDamjan Jovanovic 
40b045a72bSDamjan Jovanovic import testlib.uno.SCUtil;
41b045a72bSDamjan Jovanovic import static testlib.uno.TestUtil.*;
42b045a72bSDamjan Jovanovic 
43b045a72bSDamjan Jovanovic import com.sun.star.beans.PropertyValue;
44b045a72bSDamjan Jovanovic import com.sun.star.uno.UnoRuntime;
45b045a72bSDamjan Jovanovic import com.sun.star.frame.XStorable;
46b045a72bSDamjan Jovanovic import com.sun.star.lang.XComponent;
47b045a72bSDamjan Jovanovic import com.sun.star.sheet.XSpreadsheet;
48b045a72bSDamjan Jovanovic import com.sun.star.sheet.XSpreadsheetDocument;
49b045a72bSDamjan Jovanovic import com.sun.star.sheet.XSpreadsheets;
50b045a72bSDamjan Jovanovic import com.sun.star.table.XCell;
51b045a72bSDamjan Jovanovic 
52b045a72bSDamjan Jovanovic public class TestFormulaRoundTrip {
53b045a72bSDamjan Jovanovic     private UnoApp unoApp = new UnoApp();
54b045a72bSDamjan Jovanovic 
55b045a72bSDamjan Jovanovic     private XSpreadsheetDocument scDocument = null;
56b045a72bSDamjan Jovanovic     private XComponent scComponent = null;
57b045a72bSDamjan Jovanovic 
58b045a72bSDamjan Jovanovic     @Before
setUp()59b045a72bSDamjan Jovanovic     public void setUp() throws Exception {
60b045a72bSDamjan Jovanovic         unoApp.start();
61b045a72bSDamjan Jovanovic         scComponent = unoApp.newDocument("scalc");
62b045a72bSDamjan Jovanovic         scDocument = SCUtil.getSCDocument(scComponent);
63b045a72bSDamjan Jovanovic     }
64b045a72bSDamjan Jovanovic 
65b045a72bSDamjan Jovanovic     @After
tearDown()66b045a72bSDamjan Jovanovic     public void tearDown() throws Exception {
67b045a72bSDamjan Jovanovic         unoApp.closeDocument(scComponent);
68b045a72bSDamjan Jovanovic         unoApp.close();
69b045a72bSDamjan Jovanovic     }
70b045a72bSDamjan Jovanovic 
generateTestDocument(XSpreadsheetDocument scDocument)71*37141041SDamjan Jovanovic     private XSpreadsheet generateTestDocument(XSpreadsheetDocument scDocument) throws Exception {
72b045a72bSDamjan Jovanovic         XSpreadsheet sheet = SCUtil.getCurrentSheet(scDocument);
73b045a72bSDamjan Jovanovic         SCUtil.setTextToCell(sheet, 0, 0, "Hello world");
74b045a72bSDamjan Jovanovic         SCUtil.setFormulaToCell(sheet, 0, 1, "=A1");
75*37141041SDamjan Jovanovic         return sheet;
76*37141041SDamjan Jovanovic     }
77*37141041SDamjan Jovanovic 
78*37141041SDamjan Jovanovic     @Test
testMSExcel2003XMLFormulaRoundTrip()79*37141041SDamjan Jovanovic     public void testMSExcel2003XMLFormulaRoundTrip() throws Exception {
80*37141041SDamjan Jovanovic         XSpreadsheet sheet = generateTestDocument(scDocument);
81b045a72bSDamjan Jovanovic         String formulaValue = SCUtil.getTextFromCell(sheet, 0, 1);
82b045a72bSDamjan Jovanovic         assertEquals("Hello world", formulaValue);
83*37141041SDamjan Jovanovic         String path = "output/sc/temp.xml";
84*37141041SDamjan Jovanovic         saveFormatTo("MS Excel 2003 XML", Testspace.getUrl(path));
85*37141041SDamjan Jovanovic         unoApp.closeDocument(scComponent);
86b045a72bSDamjan Jovanovic 
87*37141041SDamjan Jovanovic         scDocument = (XSpreadsheetDocument) UnoRuntime.queryInterface(
88*37141041SDamjan Jovanovic             XSpreadsheetDocument.class, unoApp.loadDocument(Testspace.getPath(path)));
89*37141041SDamjan Jovanovic         sheet = SCUtil.getCurrentSheet(scDocument);
90*37141041SDamjan Jovanovic         String formulaValue2 = SCUtil.getTextFromCell(sheet, 0, 1);
91*37141041SDamjan Jovanovic         assertEquals("Hello world", formulaValue2);
92*37141041SDamjan Jovanovic         String formula2 = SCUtil.getFormulaFromCell(sheet, 0, 1);
93*37141041SDamjan Jovanovic         assertEquals("=A1", formula2);
94*37141041SDamjan Jovanovic     }
95*37141041SDamjan Jovanovic 
96*37141041SDamjan Jovanovic     @Test
testStarOfficeXMLFormulaRoundTrip()97*37141041SDamjan Jovanovic     public void testStarOfficeXMLFormulaRoundTrip() throws Exception {
98*37141041SDamjan Jovanovic         XSpreadsheet sheet = generateTestDocument(scDocument);
99*37141041SDamjan Jovanovic         String formulaValue = SCUtil.getTextFromCell(sheet, 0, 1);
100*37141041SDamjan Jovanovic         assertEquals("Hello world", formulaValue);
101*37141041SDamjan Jovanovic         String path = "output/sc/temp.sxc";
102*37141041SDamjan Jovanovic         saveFormatTo("StarOffice XML (Calc)", Testspace.getUrl(path));
103*37141041SDamjan Jovanovic         unoApp.closeDocument(scComponent);
104*37141041SDamjan Jovanovic 
105*37141041SDamjan Jovanovic         scDocument = (XSpreadsheetDocument) UnoRuntime.queryInterface(
106*37141041SDamjan Jovanovic             XSpreadsheetDocument.class, unoApp.loadDocument(Testspace.getPath(path)));
107*37141041SDamjan Jovanovic         sheet = SCUtil.getCurrentSheet(scDocument);
108*37141041SDamjan Jovanovic         String formulaValue2 = SCUtil.getTextFromCell(sheet, 0, 1);
109*37141041SDamjan Jovanovic         assertEquals("Hello world", formulaValue2);
110*37141041SDamjan Jovanovic         String formula2 = SCUtil.getFormulaFromCell(sheet, 0, 1);
111*37141041SDamjan Jovanovic         assertEquals("=A1", formula2);
112*37141041SDamjan Jovanovic     }
113*37141041SDamjan Jovanovic 
saveFormatTo(String filterName, String storeUrl)114*37141041SDamjan Jovanovic     private void saveFormatTo(String filterName, String storeUrl) throws Exception {
115b045a72bSDamjan Jovanovic         PropertyValue[] storeProps = new PropertyValue[2];
116b045a72bSDamjan Jovanovic         storeProps[0] = new PropertyValue();
117b045a72bSDamjan Jovanovic         storeProps[0].Name = "FilterName";
118*37141041SDamjan Jovanovic         storeProps[0].Value = filterName;
119b045a72bSDamjan Jovanovic         storeProps[1] = new PropertyValue();
120b045a72bSDamjan Jovanovic         storeProps[1].Name = "Overwrite";
121b045a72bSDamjan Jovanovic         storeProps[1].Value = new Boolean(true);
122b045a72bSDamjan Jovanovic         XStorable scStorable =
123b045a72bSDamjan Jovanovic             (XStorable) UnoRuntime.queryInterface(XStorable.class, scComponent);
124b045a72bSDamjan Jovanovic         scStorable.storeAsURL(storeUrl, storeProps);
125b045a72bSDamjan Jovanovic     }
126b045a72bSDamjan Jovanovic }
127