From: Javen O'Neal Date: Sat, 18 Jun 2016 02:37:24 +0000 (+0000) Subject: add unit test for HSSFWorkbook.getSelectedTabs X-Git-Tag: REL_3_15_BETA2~60 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=752eda425d9f36eb4f2fc98fd7bd96e00292c553;p=poi.git add unit test for HSSFWorkbook.getSelectedTabs git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1748899 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java index e25c7b9e70..4b041ef17a 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java @@ -34,11 +34,13 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.Hashtable; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.NoSuchElementException; +import java.util.Set; import java.util.regex.Pattern; import org.apache.commons.codec.digest.DigestUtils; @@ -542,27 +544,40 @@ public final class HSSFWorkbook extends POIDocument implements org.apache.poi.ss /** * Selects multiple sheets as a group. This is distinct from * the 'active' sheet (which is the sheet with focus). + * Unselects sheets that are not in indexes. * * @param indexes */ public void setSelectedTabs(int[] indexes) { + Collection list = new ArrayList(indexes.length); + for (int index : indexes) { + list.add(index); + } + setSelectedTabs(list); + } + + /** + * Selects multiple sheets as a group. This is distinct from + * the 'active' sheet (which is the sheet with focus). + * Unselects sheets that are not in indexes. + * + * @param indexes + */ + public void setSelectedTabs(Collection indexes) { for (int index : indexes) { validateSheetIndex(index); } + // ignore duplicates + Set set = new HashSet(indexes); int nSheets = _sheets.size(); for (int i=0; i arrayToList(int[] array) { + List list = new ArrayList(array.length); + for ( Integer element : array ) { + list.add(element); + } + return list; + } + + private static void assertCollectionsEquals(Collection expected, Collection actual) { + assertEquals("size", expected.size(), actual.size()); + for (int e : expected) { + assertTrue(actual.contains(e)); + } + for (int a : actual) { + assertTrue(expected.contains(a)); + } + } @Test public void selectMultiple() throws IOException { - HSSFWorkbook wb=new HSSFWorkbook(); + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet sheet0 = wb.createSheet("Sheet0"); HSSFSheet sheet1 = wb.createSheet("Sheet1"); HSSFSheet sheet2 = wb.createSheet("Sheet2"); HSSFSheet sheet3 = wb.createSheet("Sheet3"); HSSFSheet sheet4 = wb.createSheet("Sheet4"); HSSFSheet sheet5 = wb.createSheet("Sheet5"); - HSSFSheet sheet6 = wb.createSheet("Sheet6"); - - wb.setSelectedTabs(new int[] { 0, 2, 3}); - assertEquals(true, sheet1.isSelected()); - assertEquals(false, sheet2.isSelected()); - assertEquals(true, sheet3.isSelected()); - assertEquals(true, sheet4.isSelected()); - assertEquals(false, sheet5.isSelected()); - assertEquals(false, sheet6.isSelected()); - - wb.setSelectedTabs(new int[] { 1, 3, 5}); + + List selected = arrayToList(new int[] { 0, 2, 3 }); + wb.setSelectedTabs(selected); + assertCollectionsEquals(selected, wb.getSelectedTabs()); + assertEquals(true, sheet0.isSelected()); assertEquals(false, sheet1.isSelected()); assertEquals(true, sheet2.isSelected()); - assertEquals(false, sheet3.isSelected()); - assertEquals(true, sheet4.isSelected()); + assertEquals(true, sheet3.isSelected()); + assertEquals(false, sheet4.isSelected()); assertEquals(false, sheet5.isSelected()); - assertEquals(true, sheet6.isSelected()); - assertEquals(true, sheet1.isActive()); - assertEquals(false, sheet2.isActive()); + selected = arrayToList(new int[] { 1, 3, 5 }); + wb.setSelectedTabs(selected); + // previous selection should be cleared + assertCollectionsEquals(selected, wb.getSelectedTabs()); + assertEquals(false, sheet0.isSelected()); + assertEquals(true, sheet1.isSelected()); + assertEquals(false, sheet2.isSelected()); + assertEquals(true, sheet3.isSelected()); + assertEquals(false, sheet4.isSelected()); + assertEquals(true, sheet5.isSelected()); - assertEquals(true, sheet1.isActive()); - assertEquals(false, sheet3.isActive()); + assertEquals(true, sheet0.isActive()); + assertEquals(false, sheet2.isActive()); wb.setActiveSheet(2); - assertEquals(false, sheet1.isActive()); - assertEquals(true, sheet3.isActive()); + assertEquals(false, sheet0.isActive()); + assertEquals(true, sheet2.isActive()); /*{ // helpful if viewing this workbook in excel: + sheet0.createRow(0).createCell(0).setCellValue(new HSSFRichTextString("Sheet0")); sheet1.createRow(0).createCell(0).setCellValue(new HSSFRichTextString("Sheet1")); sheet2.createRow(0).createCell(0).setCellValue(new HSSFRichTextString("Sheet2")); sheet3.createRow(0).createCell(0).setCellValue(new HSSFRichTextString("Sheet3")); - sheet4.createRow(0).createCell(0).setCellValue(new HSSFRichTextString("Sheet4")); try { File fOut = TempFile.createTempFile("sheetMultiSelect", ".xls");