123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- /* ====================================================================
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- ==================================================================== */
- package org.apache.poi.xssf.usermodel;
-
- import static org.junit.Assert.*;
-
- import org.apache.poi.ss.formula.DataValidationEvaluator;
- import org.apache.poi.ss.usermodel.DataValidationConstraint;
- import org.apache.poi.ss.usermodel.DataValidationConstraint.ValidationType;
- import org.apache.poi.xssf.XSSFTestDataSamples;
- import org.apache.poi.ss.usermodel.DataValidationConstraint.OperatorType;
- import org.apache.poi.ss.util.CellReference;
- import org.junit.Test;
-
- import java.util.Collections;
- import java.util.stream.Collectors;
- import java.util.stream.IntStream;
-
- public class TestXSSFDataValidationConstraint {
- static final int listType = ValidationType.LIST;
- static final int ignoredType = OperatorType.IGNORED;
-
- // See bug 59719
- @Test
- public void listLiteralsQuotesAreStripped_formulaConstructor() {
- // literal list, using formula constructor
- String literal = "\"one, two, three\"";
- String[] expected = new String[] { "one", "two", "three" };
- DataValidationConstraint constraint = new XSSFDataValidationConstraint(listType, ignoredType, literal, null);
- assertArrayEquals(expected, constraint.getExplicitListValues());
- // Excel and DataValidationConstraint parser ignore (strip) whitespace; quotes should still be intact
- // FIXME: whitespace wasn't stripped
- assertEquals(literal, constraint.getFormula1());
- }
-
- @Test
- public void listLiteralsQuotesAreStripped_arrayConstructor() {
- // literal list, using array constructor
- String literal = "\"one, two, three\"";
- String[] expected = new String[] { "one", "two", "three" };
- DataValidationConstraint constraint = new XSSFDataValidationConstraint(expected);
- assertArrayEquals(expected, constraint.getExplicitListValues());
- // Excel and DataValidationConstraint parser ignore (strip) whitespace; quotes should still be intact
- assertEquals(literal.replace(" ", ""), constraint.getFormula1());
- }
-
- @Test
- public void listLiteralsGreaterThan255CharactersThrows() {
- String[] literal = IntStream.range(0, 129).mapToObj(i -> "a").toArray(String[]::new);
- assertThrows(IllegalArgumentException.class, () -> new XSSFDataValidationConstraint(literal));
- }
-
- @Test
- public void dataValidationListLiteralTooLongFromFile() {
- XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("DataValidationListTooLong.xlsx");
- XSSFFormulaEvaluator fEval = wb.getCreationHelper().createFormulaEvaluator();
- DataValidationEvaluator dvEval = new DataValidationEvaluator(wb, fEval);
- assertThrows(IllegalArgumentException.class, () -> dvEval.getValidationValuesForCell(new CellReference("Sheet0!A1")));
- }
-
- @Test
- public void rangeReference() {
- // (unnamed range) reference list
- String reference = "A1:A5";
- DataValidationConstraint constraint = new XSSFDataValidationConstraint(listType, ignoredType, reference, null);
- assertNull(constraint.getExplicitListValues());
- assertEquals("A1:A5", constraint.getFormula1());
- }
-
- @Test
- public void namedRangeReference() {
- // named range list
- String namedRange = "MyNamedRange";
- DataValidationConstraint constraint = new XSSFDataValidationConstraint(listType, ignoredType, namedRange, null);
- assertNull(constraint.getExplicitListValues());
- assertEquals("MyNamedRange", constraint.getFormula1());
- }
-
- }
|