/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.components.excel.common; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.File; import org.junit.Before; import org.junit.Test; /** * Test class for accessing specific addresses in Excel files. * * @author Markus Kunde * @author Oliver Seebach * */ public class ExcelAddressTest { private static final int S256 = 256; private static final int S65536 = 65536; private static final String A5 = "A5"; private static final String A1 = "A1"; private static final String TABELLE1 = "Tabelle1"; private static final String I_TABELLE = "I_Tabelle"; private static final String TABELLE1_5_10 = "Tabelle1!5:10"; private static final String TABELLE1_5_5 = "Tabelle1!5:5"; private static final String TABELLE1_A_D = "Tabelle1!$A:$D"; private static final String TABELLE1_A_A = "Tabelle1!A:A"; private static final String TABELLE1_A1_D5 = "Tabelle1!A1:D5"; private static final String TABELLE1_A1 = "Tabelle1!A1"; private static final String WRONGADDRESS = "Taelle2!A10:E15"; private static final String WRONGADDRESS2 = "Tabelle1!A1:"; private static final String EXCEPTION_ADDRESS_MSG = "Wrong address not recognized."; private static final String EXTERNAL_TEST_NOTEXCELFILE = "externalFiles/Feedback_Tixi.txt"; private static final String EXTERNAL_TEST_EXCELFILE = "externalFiles/ExcelTester_Address.xls"; private ExcelAddress valid1; private ExcelAddress valid2; private ExcelAddress valid3; private ExcelAddress valid4; private ExcelAddress valid5; private ExcelAddress valid6; private ExcelAddress valid7; /** * setUp(). */ @Before public void setUp() { try { valid1 = new ExcelAddress(new File(EXTERNAL_TEST_EXCELFILE), TABELLE1_A1); valid2 = new ExcelAddress(new File(EXTERNAL_TEST_EXCELFILE), TABELLE1_A1_D5); valid3 = new ExcelAddress(new File(EXTERNAL_TEST_EXCELFILE), TABELLE1_A_A); valid4 = new ExcelAddress(new File(EXTERNAL_TEST_EXCELFILE), TABELLE1_A_D); valid5 = new ExcelAddress(new File(EXTERNAL_TEST_EXCELFILE), TABELLE1_5_5); valid6 = new ExcelAddress(new File(EXTERNAL_TEST_EXCELFILE), TABELLE1_5_10); valid7 = new ExcelAddress(new File(EXTERNAL_TEST_EXCELFILE), I_TABELLE); } catch (ExcelException e) { fail("Failed to set up Excel addresses"); } } /** * testAddressFileString. * */ @Test public void testAddressFileString() { try { ExcelAddress addr = new ExcelAddress(new File(EXTERNAL_TEST_EXCELFILE), TABELLE1_A1); addr = new ExcelAddress(new File(EXTERNAL_TEST_EXCELFILE), TABELLE1_A1_D5); addr = new ExcelAddress(new File(EXTERNAL_TEST_EXCELFILE), TABELLE1_A_A); addr = new ExcelAddress(new File(EXTERNAL_TEST_EXCELFILE), TABELLE1_A_D); addr = new ExcelAddress(new File(EXTERNAL_TEST_EXCELFILE), TABELLE1_5_5); addr = new ExcelAddress(new File(EXTERNAL_TEST_EXCELFILE), TABELLE1_5_10); addr = new ExcelAddress(new File(EXTERNAL_TEST_EXCELFILE), I_TABELLE); assertTrue(addr != null); } catch (ExcelException e) { fail("Failed to get Excel addresses"); } } /** * testWrongAddressFileString. * */ @Test(expected = ExcelException.class) public void testWrongAddressFileString() { ExcelAddress addr = new ExcelAddress(new File(EXTERNAL_TEST_EXCELFILE), WRONGADDRESS); assertTrue(addr != null); } /** * testWrongAddress2FileString. * */ @Test(expected = ExcelException.class) public void testWrongAddress2FileString() { ExcelAddress addr = new ExcelAddress(new File(EXTERNAL_TEST_EXCELFILE), WRONGADDRESS2); assertTrue(addr != null); } /** * testAddressExpander. * */ @Test public void testAddressExpander() { ExcelAddress validTemp = new ExcelAddress(new File(EXTERNAL_TEST_EXCELFILE), "Tabelle1!C5"); ExcelAddress validTemp2 = new ExcelAddress(new File(EXTERNAL_TEST_EXCELFILE), "Tabelle1!C5:F10"); ExcelAddress test1 = ExcelAddress.getExcelAddressForTableRange(new File(EXTERNAL_TEST_EXCELFILE), valid1, 5, 3); assertEquals("Tabelle1!A1:C5", test1.getFullAddress()); assertEquals(valid1.getWorkSheetName(), test1.getWorkSheetName()); assertEquals(valid1.getFirstCell(), test1.getFirstCell()); assertEquals("C5", test1.getLastCell()); assertEquals(5, test1.getNumberOfRows()); assertEquals(3, test1.getNumberOfColumns()); assertEquals(valid1.getBeginningRowNumber(), test1.getBeginningRowNumber()); assertEquals(valid1.getBeginningColumnNumber(), test1.getBeginningColumnNumber()); assertEquals(null, test1.getUserDefinedName()); ExcelAddress test2 = ExcelAddress.getExcelAddressForTableRange(new File(EXTERNAL_TEST_EXCELFILE), valid2, 8, 9); assertEquals("Tabelle1!A1:I8", test2.getFullAddress()); assertEquals(valid2.getWorkSheetName(), test2.getWorkSheetName()); assertEquals(valid2.getFirstCell(), test2.getFirstCell()); assertEquals("I8", test2.getLastCell()); assertEquals(8, test2.getNumberOfRows()); assertEquals(9, test2.getNumberOfColumns()); assertEquals(valid2.getBeginningRowNumber(), test2.getBeginningRowNumber()); assertEquals(valid2.getBeginningColumnNumber(), test2.getBeginningColumnNumber()); assertEquals(null, test2.getUserDefinedName()); ExcelAddress test3 = ExcelAddress.getExcelAddressForTableRange(new File(EXTERNAL_TEST_EXCELFILE), valid2, 2, 3); assertEquals("Tabelle1!A1:C2", test3.getFullAddress()); assertEquals(valid2.getWorkSheetName(), test3.getWorkSheetName()); assertEquals(valid2.getFirstCell(), test3.getFirstCell()); assertEquals("C2", test3.getLastCell()); assertEquals(2, test3.getNumberOfRows()); assertEquals(3, test3.getNumberOfColumns()); assertEquals(valid2.getBeginningRowNumber(), test3.getBeginningRowNumber()); assertEquals(valid2.getBeginningColumnNumber(), test3.getBeginningColumnNumber()); assertEquals(null, test3.getUserDefinedName()); ExcelAddress test4 = ExcelAddress.getExcelAddressForTableRange(new File(EXTERNAL_TEST_EXCELFILE), validTemp, 5, 3); assertEquals("Tabelle1!C5:E9", test4.getFullAddress()); assertEquals(validTemp.getWorkSheetName(), test4.getWorkSheetName()); assertEquals(validTemp.getFirstCell(), test4.getFirstCell()); assertEquals("E9", test4.getLastCell()); assertEquals(5, test4.getNumberOfRows()); assertEquals(3, test4.getNumberOfColumns()); assertEquals(validTemp.getBeginningRowNumber(), test4.getBeginningRowNumber()); assertEquals(validTemp.getBeginningColumnNumber(), test4.getBeginningColumnNumber()); assertEquals(null, test4.getUserDefinedName()); ExcelAddress test5 = ExcelAddress.getExcelAddressForTableRange(new File(EXTERNAL_TEST_EXCELFILE), validTemp2, 8, 9); assertEquals("Tabelle1!C5:K12", test5.getFullAddress()); assertEquals(validTemp2.getWorkSheetName(), test5.getWorkSheetName()); assertEquals(validTemp2.getFirstCell(), test5.getFirstCell()); assertEquals("K12", test5.getLastCell()); assertEquals(8, test5.getNumberOfRows()); assertEquals(9, test5.getNumberOfColumns()); assertEquals(validTemp2.getBeginningRowNumber(), test5.getBeginningRowNumber()); assertEquals(validTemp2.getBeginningColumnNumber(), test5.getBeginningColumnNumber()); assertEquals(null, test5.getUserDefinedName()); ExcelAddress test6 = ExcelAddress.getExcelAddressForTableRange(new File(EXTERNAL_TEST_EXCELFILE), validTemp2, 2, 3); assertEquals("Tabelle1!C5:E6", test6.getFullAddress()); assertEquals(validTemp2.getWorkSheetName(), test6.getWorkSheetName()); assertEquals(validTemp2.getFirstCell(), test6.getFirstCell()); assertEquals("E6", test6.getLastCell()); assertEquals(2, test6.getNumberOfRows()); assertEquals(3, test6.getNumberOfColumns()); assertEquals(validTemp2.getBeginningRowNumber(), test6.getBeginningRowNumber()); assertEquals(validTemp2.getBeginningColumnNumber(), test6.getBeginningColumnNumber()); assertEquals(null, test6.getUserDefinedName()); } /** * testAddressFileStringWrongAddress. * */ @Test public void testAddressFileStringWrongAddress() { try { new ExcelAddress(new File(EXTERNAL_TEST_EXCELFILE), "Tabelle1!A1s:D"); fail(EXCEPTION_ADDRESS_MSG); } catch (ExcelException e) { assertTrue(true); } try { new ExcelAddress(new File(EXTERNAL_TEST_EXCELFILE), "Tabelle1!A"); fail(EXCEPTION_ADDRESS_MSG); } catch (ExcelException e) { assertTrue(true); } try { new ExcelAddress(new File(EXTERNAL_TEST_EXCELFILE), "Tabelle1!5"); fail(EXCEPTION_ADDRESS_MSG); } catch (ExcelException e) { assertTrue(true); } try { new ExcelAddress(new File(EXTERNAL_TEST_EXCELFILE), "A1:B5"); fail(EXCEPTION_ADDRESS_MSG); } catch (ExcelException e) { assertTrue(true); } } /** * testAddressFileStringException1. * */ @Test public void testAddressFileStringException1() { try { new ExcelAddress(new File(EXTERNAL_TEST_NOTEXCELFILE), TABELLE1_A1_D5); fail("Wrong file not recognized."); } catch (ExcelException e) { if (e.getCause() instanceof IllegalArgumentException) { assertTrue(true); } else { fail("Unexpected cause for ExcelException. Found " + e.getCause().getClass() + " but expected IllegalArgumentException."); } } } /** * testGetFullAddress. * */ @Test public void testGetFullAddress() { assertEquals(TABELLE1_A1, valid1.getFullAddress()); assertEquals(TABELLE1_A1_D5, valid2.getFullAddress()); assertEquals("Tabelle1!A1:A65536", valid3.getFullAddress()); assertEquals("Tabelle1!A1:D65536", valid4.getFullAddress()); assertEquals("Tabelle1!A5:IV5", valid5.getFullAddress()); assertEquals("Tabelle1!A5:IV10", valid6.getFullAddress()); assertEquals(TABELLE1_A1_D5, valid7.getFullAddress()); } /** * testGetUserDefinedName. * */ @Test public void testGetUserDefinedName() { assertEquals(null, valid1.getUserDefinedName()); assertEquals(null, valid2.getUserDefinedName()); assertEquals(null, valid3.getUserDefinedName()); assertEquals(null, valid4.getUserDefinedName()); assertEquals(null, valid5.getUserDefinedName()); assertEquals(null, valid6.getUserDefinedName()); assertEquals(I_TABELLE, valid7.getUserDefinedName()); } /** * testGetWorkSheetName. * */ @Test public void testGetWorkSheetName() { assertEquals(TABELLE1, valid1.getWorkSheetName()); assertEquals(TABELLE1, valid2.getWorkSheetName()); assertEquals(TABELLE1, valid3.getWorkSheetName()); assertEquals(TABELLE1, valid4.getWorkSheetName()); assertEquals(TABELLE1, valid5.getWorkSheetName()); assertEquals(TABELLE1, valid6.getWorkSheetName()); assertEquals(TABELLE1, valid7.getWorkSheetName()); } /** * testGetFirstCell. * */ @Test public void testGetFirstCell() { assertEquals(A1, valid1.getFirstCell()); assertEquals(A1, valid2.getFirstCell()); assertEquals(A1, valid3.getFirstCell()); assertEquals(A1, valid4.getFirstCell()); assertEquals(A5, valid5.getFirstCell()); assertEquals(A5, valid6.getFirstCell()); assertEquals(A1, valid7.getFirstCell()); } /** * testGetLastCell. * */ @Test public void testGetLastCell() { assertEquals(A1, valid1.getLastCell()); assertEquals("D5", valid2.getLastCell()); assertEquals("A65536", valid3.getLastCell()); assertEquals("D65536", valid4.getLastCell()); assertEquals("IV5", valid5.getLastCell()); assertEquals("IV10", valid6.getLastCell()); assertEquals("D5", valid7.getLastCell()); } /** * testGetNumberOfRows. * */ @Test public void testGetNumberOfRows() { assertEquals(1, valid1.getNumberOfRows()); assertEquals(5, valid2.getNumberOfRows()); assertEquals(S65536, valid3.getNumberOfRows()); assertEquals(S65536, valid4.getNumberOfRows()); assertEquals(1, valid5.getNumberOfRows()); assertEquals(6, valid6.getNumberOfRows()); assertEquals(5, valid7.getNumberOfRows()); } /** * testGetNumberOfColumns. * */ @Test public void testGetNumberOfColumns() { assertEquals(1, valid1.getNumberOfColumns()); assertEquals(4, valid2.getNumberOfColumns()); assertEquals(1, valid3.getNumberOfColumns()); assertEquals(4, valid4.getNumberOfColumns()); assertEquals(S256, valid5.getNumberOfColumns()); assertEquals(S256, valid6.getNumberOfColumns()); assertEquals(4, valid7.getNumberOfColumns()); } /** * testGetBeginningRowNumber. * */ @Test public void testGetBeginningRowNumber() { assertEquals(1, valid1.getBeginningRowNumber()); assertEquals(1, valid2.getBeginningRowNumber()); assertEquals(1, valid3.getBeginningRowNumber()); assertEquals(1, valid4.getBeginningRowNumber()); assertEquals(5, valid5.getBeginningRowNumber()); assertEquals(5, valid6.getBeginningRowNumber()); assertEquals(1, valid7.getBeginningRowNumber()); } /** * testGetBeginningColumnNumber. * */ @Test public void testGetBeginningColumnNumber() { assertEquals(1, valid1.getBeginningColumnNumber()); assertEquals(1, valid2.getBeginningColumnNumber()); assertEquals(1, valid3.getBeginningColumnNumber()); assertEquals(1, valid4.getBeginningColumnNumber()); assertEquals(1, valid5.getBeginningColumnNumber()); assertEquals(1, valid6.getBeginningColumnNumber()); assertEquals(1, valid7.getBeginningColumnNumber()); } }