123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- /*
- * ====================================================================
- * 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.hslf.usermodel;
-
- import static org.junit.Assert.*;
-
- import java.util.List;
-
- import org.apache.poi.POIDataSamples;
- import org.apache.poi.hslf.model.textproperties.TextPFException9;
- import org.apache.poi.hslf.model.textproperties.TextPropCollection;
- import org.apache.poi.hslf.record.*;
- import org.junit.Test;
-
-
- /**
- * Test that checks numbered list functionality.
- * if a paragraph has autonumber ()
- * @see <a href="http://social.msdn.microsoft.com/Forums/mr-IN/os_binaryfile/thread/650888db-fabd-4b95-88dc-f0455f6e2d28">
- * PPT: Missing TextAutoNumberScheme structure providing the style of the number bullets</a>
- *
- * @author Alex Nikiforov [mailto:anikif@gmail.com]
- */
- public final class TestNumberedList3 {
- private static POIDataSamples _slTests = POIDataSamples.getSlideShowInstance();
-
- @Test
- public void testNumberedList() throws Exception {
- HSLFSlideShow ppt = new HSLFSlideShow(_slTests.openResourceAsStream("numbers3.ppt"));
- assertTrue("No Exceptions while reading file", true);
-
- final List<HSLFSlide> slides = ppt.getSlides();
- assertEquals(1, slides.size());
- final HSLFSlide slide = slides.get(0);
- checkSlide(slide);
- }
- private void checkSlide(final HSLFSlide s) {
- final StyleTextProp9Atom[] numberedListArray = s.getNumberedListInfo();
- assertNotNull(numberedListArray);
- assertEquals(1, numberedListArray.length);
- final StyleTextProp9Atom numberedListInfoForTextBox = numberedListArray[0];
- assertNotNull(numberedListInfoForTextBox);
- final TextPFException9[] autoNumbersOfTextBox0 = numberedListInfoForTextBox.getAutoNumberTypes();
- assertEquals(Short.valueOf((short)1), autoNumbersOfTextBox0[0].getfBulletHasAutoNumber());
- assertEquals(Short.valueOf((short)1), autoNumbersOfTextBox0[0].getAutoNumberStartNumber());//Default value = 1 will be used
- assertTrue(TextAutoNumberSchemeEnum.ANM_ArabicPeriod == autoNumbersOfTextBox0[0].getAutoNumberScheme());
-
- final List<List<HSLFTextParagraph>> textParass = s.getTextParagraphs();
- assertEquals(3, textParass.size());
- assertEquals("Bulleted list\rMore bullets\rNo bullets here", HSLFTextParagraph.getRawText(textParass.get(0)));
- assertEquals("Numbered list between two bulleted lists\rSecond numbered list item", HSLFTextParagraph.getRawText(textParass.get(1)));
- assertEquals("Second bulleted list \u2013 should appear after numbered list\rMore bullets", HSLFTextParagraph.getRawText(textParass.get(2)));
- assertEquals(3, textParass.get(0).size());
- assertEquals(2, textParass.get(1).size());
- assertEquals(2, textParass.get(2).size());
- assertNull(textParass.get(0).get(0).getStyleTextProp9Atom());
- assertNotNull(textParass.get(1).get(0).getStyleTextProp9Atom());
- assertNull(textParass.get(2).get(0).getStyleTextProp9Atom());
- final TextPFException9[] autoNumbers = textParass.get(1).get(0).getStyleTextProp9Atom().getAutoNumberTypes();
- assertEquals(1, autoNumbers.length);
- assertEquals(Short.valueOf((short)1), autoNumbers[0].getfBulletHasAutoNumber());
- assertEquals(Short.valueOf((short)1), autoNumbers[0].getAutoNumberStartNumber());//Default value = 1 will be used
- assertTrue(TextAutoNumberSchemeEnum.ANM_ArabicPeriod == autoNumbersOfTextBox0[0].getAutoNumberScheme());
-
- int chCovered = 0;
- for (HSLFTextParagraph htp : textParass.get(1)) {
- for (HSLFTextRun htr : htp.getTextRuns()) {
- TextPropCollection textProp = htr.getCharacterStyle();
- chCovered += textProp.getCharactersCovered();
- }
- }
- assertEquals(67, chCovered);
-
- assertTrue(textParass.get(0).get(0).isBullet());
-
- final EscherTextboxWrapper[] styleAtoms = s.getTextboxWrappers();
- assertEquals(textParass.size(), styleAtoms.length);
- checkSingleRunWrapper(43, styleAtoms[0]);
- checkSingleRunWrapper(67, styleAtoms[1]);
- }
- private void checkSingleRunWrapper(final int exceptedLength, final EscherTextboxWrapper wrapper) {
- final StyleTextPropAtom styleTextPropAtom = wrapper.getStyleTextPropAtom();
- final List<TextPropCollection> textProps = styleTextPropAtom.getCharacterStyles();
- assertEquals(1, textProps.size());
- assertEquals(exceptedLength, textProps.get(0).getCharactersCovered());
- }
- }
|