1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski package fvt.uno.sc.cell; 24*b1cdbd2cSJim Jagielski 25*b1cdbd2cSJim Jagielski import static org.junit.Assert.assertEquals; 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski import java.util.Arrays; 28*b1cdbd2cSJim Jagielski import java.util.Collection; 29*b1cdbd2cSJim Jagielski 30*b1cdbd2cSJim Jagielski import org.junit.After; 31*b1cdbd2cSJim Jagielski import org.junit.AfterClass; 32*b1cdbd2cSJim Jagielski import org.junit.Before; 33*b1cdbd2cSJim Jagielski import org.junit.BeforeClass; 34*b1cdbd2cSJim Jagielski import org.junit.Test; 35*b1cdbd2cSJim Jagielski import org.junit.runner.RunWith; 36*b1cdbd2cSJim Jagielski import org.junit.runners.Parameterized; 37*b1cdbd2cSJim Jagielski import org.junit.runners.Parameterized.Parameters; 38*b1cdbd2cSJim Jagielski import org.openoffice.test.uno.UnoApp; 39*b1cdbd2cSJim Jagielski 40*b1cdbd2cSJim Jagielski 41*b1cdbd2cSJim Jagielski import testlib.uno.SCUtil; 42*b1cdbd2cSJim Jagielski import testlib.uno.TestUtil; 43*b1cdbd2cSJim Jagielski import testlib.uno.CellInfo; 44*b1cdbd2cSJim Jagielski 45*b1cdbd2cSJim Jagielski import com.sun.star.lang.XComponent; 46*b1cdbd2cSJim Jagielski import com.sun.star.sheet.XSpreadsheet; 47*b1cdbd2cSJim Jagielski import com.sun.star.sheet.XSpreadsheetDocument; 48*b1cdbd2cSJim Jagielski import com.sun.star.table.CellHoriJustify; 49*b1cdbd2cSJim Jagielski import com.sun.star.table.CellVertJustify; 50*b1cdbd2cSJim Jagielski import com.sun.star.table.XCell; 51*b1cdbd2cSJim Jagielski import com.sun.star.uno.Enum; 52*b1cdbd2cSJim Jagielski 53*b1cdbd2cSJim Jagielski /** 54*b1cdbd2cSJim Jagielski * Check the cell alignment setting can be applied and saved 55*b1cdbd2cSJim Jagielski * 56*b1cdbd2cSJim Jagielski */ 57*b1cdbd2cSJim Jagielski @RunWith(value = Parameterized.class) 58*b1cdbd2cSJim Jagielski public class CellAlignment { 59*b1cdbd2cSJim Jagielski 60*b1cdbd2cSJim Jagielski private Enum expected; 61*b1cdbd2cSJim Jagielski private String inputType; 62*b1cdbd2cSJim Jagielski private Enum inputValue; 63*b1cdbd2cSJim Jagielski private String fileType; 64*b1cdbd2cSJim Jagielski 65*b1cdbd2cSJim Jagielski private static final UnoApp unoApp = new UnoApp(); 66*b1cdbd2cSJim Jagielski 67*b1cdbd2cSJim Jagielski XComponent scComponent = null; 68*b1cdbd2cSJim Jagielski XSpreadsheetDocument scDocument = null; 69*b1cdbd2cSJim Jagielski 70*b1cdbd2cSJim Jagielski @Parameters data()71*b1cdbd2cSJim Jagielski public static Collection<Object[]> data() { 72*b1cdbd2cSJim Jagielski return Arrays.asList(new Object[][] { 73*b1cdbd2cSJim Jagielski {CellHoriJustify.STANDARD, "HoriJustify", CellHoriJustify.STANDARD, "ods"}, 74*b1cdbd2cSJim Jagielski {CellHoriJustify.LEFT, "HoriJustify", CellHoriJustify.LEFT, "ods"}, 75*b1cdbd2cSJim Jagielski {CellHoriJustify.CENTER, "HoriJustify", CellHoriJustify.CENTER, "ods"}, 76*b1cdbd2cSJim Jagielski {CellHoriJustify.RIGHT, "HoriJustify", CellHoriJustify.RIGHT, "ods"}, 77*b1cdbd2cSJim Jagielski {CellHoriJustify.BLOCK, "HoriJustify", CellHoriJustify.BLOCK, "ods"}, 78*b1cdbd2cSJim Jagielski {CellHoriJustify.REPEAT, "HoriJustify", CellHoriJustify.REPEAT, "ods"}, 79*b1cdbd2cSJim Jagielski {CellVertJustify.STANDARD, "VertJustify", CellVertJustify.STANDARD, "ods"}, 80*b1cdbd2cSJim Jagielski {CellVertJustify.TOP, "VertJustify", CellVertJustify.TOP, "ods"}, 81*b1cdbd2cSJim Jagielski {CellVertJustify.CENTER, "VertJustify", CellVertJustify.CENTER, "ods"}, 82*b1cdbd2cSJim Jagielski {CellVertJustify.BOTTOM, "VertJustify", CellVertJustify.BOTTOM, "ods"}, 83*b1cdbd2cSJim Jagielski 84*b1cdbd2cSJim Jagielski {CellHoriJustify.STANDARD, "HoriJustify", CellHoriJustify.STANDARD, "xls"}, 85*b1cdbd2cSJim Jagielski {CellHoriJustify.LEFT, "HoriJustify", CellHoriJustify.LEFT, "xls"}, 86*b1cdbd2cSJim Jagielski {CellHoriJustify.CENTER, "HoriJustify", CellHoriJustify.CENTER, "xls"}, 87*b1cdbd2cSJim Jagielski {CellHoriJustify.RIGHT, "HoriJustify", CellHoriJustify.RIGHT, "xls"}, 88*b1cdbd2cSJim Jagielski {CellHoriJustify.BLOCK, "HoriJustify", CellHoriJustify.BLOCK, "xls"}, 89*b1cdbd2cSJim Jagielski {CellHoriJustify.REPEAT, "HoriJustify", CellHoriJustify.REPEAT, "xls"}, 90*b1cdbd2cSJim Jagielski {CellVertJustify.STANDARD, "VertJustify", CellVertJustify.STANDARD, "xls"}, 91*b1cdbd2cSJim Jagielski {CellVertJustify.TOP, "VertJustify", CellVertJustify.TOP, "xls"}, 92*b1cdbd2cSJim Jagielski {CellVertJustify.CENTER, "VertJustify", CellVertJustify.CENTER, "xls"}//, 93*b1cdbd2cSJim Jagielski // {CellVertJustify.BOTTOM, "VertJustify", CellVertJustify.BOTTOM, "xls"} Bug 120670 94*b1cdbd2cSJim Jagielski }); 95*b1cdbd2cSJim Jagielski } 96*b1cdbd2cSJim Jagielski CellAlignment(Enum expected, String inputType, Enum inputValue, String fileType)97*b1cdbd2cSJim Jagielski public CellAlignment(Enum expected, String inputType, Enum inputValue, String fileType) { 98*b1cdbd2cSJim Jagielski this.expected = expected; 99*b1cdbd2cSJim Jagielski this.inputType = inputType; 100*b1cdbd2cSJim Jagielski this.inputValue = inputValue; 101*b1cdbd2cSJim Jagielski this.fileType = fileType; 102*b1cdbd2cSJim Jagielski } 103*b1cdbd2cSJim Jagielski 104*b1cdbd2cSJim Jagielski @Before setUp()105*b1cdbd2cSJim Jagielski public void setUp() throws Exception { 106*b1cdbd2cSJim Jagielski scComponent = unoApp.newDocument("scalc"); 107*b1cdbd2cSJim Jagielski scDocument = SCUtil.getSCDocument(scComponent); 108*b1cdbd2cSJim Jagielski } 109*b1cdbd2cSJim Jagielski 110*b1cdbd2cSJim Jagielski @After tearDown()111*b1cdbd2cSJim Jagielski public void tearDown() throws Exception { 112*b1cdbd2cSJim Jagielski unoApp.closeDocument(scComponent); 113*b1cdbd2cSJim Jagielski 114*b1cdbd2cSJim Jagielski } 115*b1cdbd2cSJim Jagielski 116*b1cdbd2cSJim Jagielski @BeforeClass setUpConnection()117*b1cdbd2cSJim Jagielski public static void setUpConnection() throws Exception { 118*b1cdbd2cSJim Jagielski unoApp.start(); 119*b1cdbd2cSJim Jagielski } 120*b1cdbd2cSJim Jagielski 121*b1cdbd2cSJim Jagielski @AfterClass tearDownConnection()122*b1cdbd2cSJim Jagielski public static void tearDownConnection() throws InterruptedException, Exception { 123*b1cdbd2cSJim Jagielski unoApp.close(); 124*b1cdbd2cSJim Jagielski SCUtil.clearTempDir(); 125*b1cdbd2cSJim Jagielski } 126*b1cdbd2cSJim Jagielski 127*b1cdbd2cSJim Jagielski /** 128*b1cdbd2cSJim Jagielski * Check the cell alignment setting can be applied and saved 129*b1cdbd2cSJim Jagielski * 1. Create a spreadsheet file. 130*b1cdbd2cSJim Jagielski * 2. Input number, text, formula into many cell. 131*b1cdbd2cSJim Jagielski * 3. Set cell alignment. 132*b1cdbd2cSJim Jagielski * 4. Save file as ODF/MSBinary format. 133*b1cdbd2cSJim Jagielski * 5. Close and reopen file. -> Check the alignment setting. 134*b1cdbd2cSJim Jagielski * @throws Exception 135*b1cdbd2cSJim Jagielski */ 136*b1cdbd2cSJim Jagielski @Test testCellAlignment()137*b1cdbd2cSJim Jagielski public void testCellAlignment() throws Exception { 138*b1cdbd2cSJim Jagielski String fileName = "testCellAlignment"; 139*b1cdbd2cSJim Jagielski CellInfo cInfo = TestUtil.randCell(20, 50); 140*b1cdbd2cSJim Jagielski 141*b1cdbd2cSJim Jagielski int cellNum = 5; 142*b1cdbd2cSJim Jagielski XCell[] cells = new XCell[cellNum]; 143*b1cdbd2cSJim Jagielski Enum[] results = new Enum[cellNum]; 144*b1cdbd2cSJim Jagielski 145*b1cdbd2cSJim Jagielski XSpreadsheet sheet = SCUtil.getCurrentSheet(scDocument); 146*b1cdbd2cSJim Jagielski 147*b1cdbd2cSJim Jagielski //cellNum must be greater than 4 148*b1cdbd2cSJim Jagielski if (cellNum < 5) { 149*b1cdbd2cSJim Jagielski cellNum = 5; 150*b1cdbd2cSJim Jagielski } 151*b1cdbd2cSJim Jagielski for (int i = 0; i < cellNum; i++) { 152*b1cdbd2cSJim Jagielski cells[i] = sheet.getCellByPosition(cInfo.getCol(), cInfo.getRow() + i); 153*b1cdbd2cSJim Jagielski } 154*b1cdbd2cSJim Jagielski 155*b1cdbd2cSJim Jagielski cells[0].setValue(13.42); 156*b1cdbd2cSJim Jagielski SCUtil. setTextToCell(cells[1], "alignment"); 157*b1cdbd2cSJim Jagielski cells[2].setFormula("=SUM(A100:B100)"); 158*b1cdbd2cSJim Jagielski cells[3].setValue(-0.2343123); 159*b1cdbd2cSJim Jagielski 160*b1cdbd2cSJim Jagielski for (int i = 0; i < cellNum; i++) { 161*b1cdbd2cSJim Jagielski SCUtil.setCellProperties(cells[i], inputType, inputValue); 162*b1cdbd2cSJim Jagielski } 163*b1cdbd2cSJim Jagielski 164*b1cdbd2cSJim Jagielski SCUtil.saveFileAs(scComponent, fileName, fileType); 165*b1cdbd2cSJim Jagielski 166*b1cdbd2cSJim Jagielski scDocument = SCUtil.reloadFile(unoApp, scDocument, fileName+"." + fileType); 167*b1cdbd2cSJim Jagielski sheet = SCUtil.getCurrentSheet(scDocument); 168*b1cdbd2cSJim Jagielski for (int i = 0; i < cellNum; i++) { 169*b1cdbd2cSJim Jagielski cells[i] = sheet.getCellByPosition(cInfo.getCol(), cInfo.getRow() + i); 170*b1cdbd2cSJim Jagielski results[i] = (Enum) SCUtil.getCellProperties(cells[i], inputType); 171*b1cdbd2cSJim Jagielski } 172*b1cdbd2cSJim Jagielski SCUtil.closeFile(scDocument); 173*b1cdbd2cSJim Jagielski 174*b1cdbd2cSJim Jagielski for (int i = 0; i < cellNum; i++ ) { 175*b1cdbd2cSJim Jagielski 176*b1cdbd2cSJim Jagielski assertEquals("Incorrect cell alignment(" + inputType + ") value got in ." + fileType + " file.", expected, results[i]); 177*b1cdbd2cSJim Jagielski 178*b1cdbd2cSJim Jagielski } 179*b1cdbd2cSJim Jagielski 180*b1cdbd2cSJim Jagielski } 181*b1cdbd2cSJim Jagielski 182*b1cdbd2cSJim Jagielski } 183