add unit test for HSSFWorkbook.getSelectedTabs
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1748899 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
acac716a64
commit
d8d821b1f2
@ -34,11 +34,13 @@ import java.util.Arrays;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Hashtable;
|
import java.util.Hashtable;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.NoSuchElementException;
|
import java.util.NoSuchElementException;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import org.apache.commons.codec.digest.DigestUtils;
|
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
|
* Selects multiple sheets as a group. This is distinct from
|
||||||
* the 'active' sheet (which is the sheet with focus).
|
* the 'active' sheet (which is the sheet with focus).
|
||||||
|
* Unselects sheets that are not in <code>indexes</code>.
|
||||||
*
|
*
|
||||||
* @param indexes
|
* @param indexes
|
||||||
*/
|
*/
|
||||||
public void setSelectedTabs(int[] indexes) {
|
public void setSelectedTabs(int[] indexes) {
|
||||||
|
Collection<Integer> list = new ArrayList<Integer>(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 <code>indexes</code>.
|
||||||
|
*
|
||||||
|
* @param indexes
|
||||||
|
*/
|
||||||
|
public void setSelectedTabs(Collection<Integer> indexes) {
|
||||||
|
|
||||||
for (int index : indexes) {
|
for (int index : indexes) {
|
||||||
validateSheetIndex(index);
|
validateSheetIndex(index);
|
||||||
}
|
}
|
||||||
|
// ignore duplicates
|
||||||
|
Set<Integer> set = new HashSet<Integer>(indexes);
|
||||||
int nSheets = _sheets.size();
|
int nSheets = _sheets.size();
|
||||||
for (int i=0; i<nSheets; i++) {
|
for (int i=0; i<nSheets; i++) {
|
||||||
boolean bSelect = false;
|
boolean bSelect = set.contains(i);
|
||||||
for (int index : indexes) {
|
getSheetAt(i).setSelected(bSelect);
|
||||||
if (index == i) {
|
|
||||||
bSelect = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
getSheetAt(i).setSelected(bSelect);
|
|
||||||
}
|
}
|
||||||
workbook.getWindowOne().setNumSelectedTabs((short)indexes.length);
|
// this is true only if all values in set were valid sheet indexes (between 0 and nSheets-1, inclusive)
|
||||||
|
short nSelected = (short) set.size();
|
||||||
|
workbook.getWindowOne().setNumSelectedTabs(nSelected);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -33,6 +33,10 @@ import java.io.FileNotFoundException;
|
|||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.poi.POIDataSamples;
|
import org.apache.poi.POIDataSamples;
|
||||||
@ -211,49 +215,69 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook {
|
|||||||
wb.close();
|
wb.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static List<Integer> arrayToList(int[] array) {
|
||||||
|
List<Integer> list = new ArrayList<Integer>(array.length);
|
||||||
|
for ( Integer element : array ) {
|
||||||
|
list.add(element);
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void assertCollectionsEquals(Collection<Integer> expected, Collection<Integer> actual) {
|
||||||
|
assertEquals("size", expected.size(), actual.size());
|
||||||
|
for (int e : expected) {
|
||||||
|
assertTrue(actual.contains(e));
|
||||||
|
}
|
||||||
|
for (int a : actual) {
|
||||||
|
assertTrue(expected.contains(a));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void selectMultiple() throws IOException {
|
public void selectMultiple() throws IOException {
|
||||||
HSSFWorkbook wb=new HSSFWorkbook();
|
HSSFWorkbook wb = new HSSFWorkbook();
|
||||||
|
HSSFSheet sheet0 = wb.createSheet("Sheet0");
|
||||||
HSSFSheet sheet1 = wb.createSheet("Sheet1");
|
HSSFSheet sheet1 = wb.createSheet("Sheet1");
|
||||||
HSSFSheet sheet2 = wb.createSheet("Sheet2");
|
HSSFSheet sheet2 = wb.createSheet("Sheet2");
|
||||||
HSSFSheet sheet3 = wb.createSheet("Sheet3");
|
HSSFSheet sheet3 = wb.createSheet("Sheet3");
|
||||||
HSSFSheet sheet4 = wb.createSheet("Sheet4");
|
HSSFSheet sheet4 = wb.createSheet("Sheet4");
|
||||||
HSSFSheet sheet5 = wb.createSheet("Sheet5");
|
HSSFSheet sheet5 = wb.createSheet("Sheet5");
|
||||||
HSSFSheet sheet6 = wb.createSheet("Sheet6");
|
|
||||||
|
|
||||||
wb.setSelectedTabs(new int[] { 0, 2, 3});
|
|
||||||
|
|
||||||
|
List<Integer> 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(true, sheet3.isSelected());
|
||||||
|
assertEquals(false, sheet4.isSelected());
|
||||||
|
assertEquals(false, sheet5.isSelected());
|
||||||
|
|
||||||
|
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(true, sheet1.isSelected());
|
||||||
assertEquals(false, sheet2.isSelected());
|
assertEquals(false, sheet2.isSelected());
|
||||||
assertEquals(true, sheet3.isSelected());
|
assertEquals(true, sheet3.isSelected());
|
||||||
assertEquals(true, sheet4.isSelected());
|
assertEquals(false, sheet4.isSelected());
|
||||||
assertEquals(false, sheet5.isSelected());
|
assertEquals(true, sheet5.isSelected());
|
||||||
assertEquals(false, sheet6.isSelected());
|
|
||||||
|
|
||||||
wb.setSelectedTabs(new int[] { 1, 3, 5});
|
assertEquals(true, sheet0.isActive());
|
||||||
|
|
||||||
assertEquals(false, sheet1.isSelected());
|
|
||||||
assertEquals(true, sheet2.isSelected());
|
|
||||||
assertEquals(false, sheet3.isSelected());
|
|
||||||
assertEquals(true, sheet4.isSelected());
|
|
||||||
assertEquals(false, sheet5.isSelected());
|
|
||||||
assertEquals(true, sheet6.isSelected());
|
|
||||||
|
|
||||||
assertEquals(true, sheet1.isActive());
|
|
||||||
assertEquals(false, sheet2.isActive());
|
assertEquals(false, sheet2.isActive());
|
||||||
|
|
||||||
|
|
||||||
assertEquals(true, sheet1.isActive());
|
|
||||||
assertEquals(false, sheet3.isActive());
|
|
||||||
wb.setActiveSheet(2);
|
wb.setActiveSheet(2);
|
||||||
assertEquals(false, sheet1.isActive());
|
assertEquals(false, sheet0.isActive());
|
||||||
assertEquals(true, sheet3.isActive());
|
assertEquals(true, sheet2.isActive());
|
||||||
|
|
||||||
/*{ // helpful if viewing this workbook in excel:
|
/*{ // 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"));
|
sheet1.createRow(0).createCell(0).setCellValue(new HSSFRichTextString("Sheet1"));
|
||||||
sheet2.createRow(0).createCell(0).setCellValue(new HSSFRichTextString("Sheet2"));
|
sheet2.createRow(0).createCell(0).setCellValue(new HSSFRichTextString("Sheet2"));
|
||||||
sheet3.createRow(0).createCell(0).setCellValue(new HSSFRichTextString("Sheet3"));
|
sheet3.createRow(0).createCell(0).setCellValue(new HSSFRichTextString("Sheet3"));
|
||||||
sheet4.createRow(0).createCell(0).setCellValue(new HSSFRichTextString("Sheet4"));
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
File fOut = TempFile.createTempFile("sheetMultiSelect", ".xls");
|
File fOut = TempFile.createTempFile("sheetMultiSelect", ".xls");
|
||||||
|
Loading…
Reference in New Issue
Block a user