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