| /* ==================================================================== |
| 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.extractor; |
| |
| |
| import static org.junit.jupiter.api.Assertions.assertEquals; |
| |
| import java.util.List; |
| |
| import org.apache.poi.POIDataSamples; |
| import org.apache.poi.util.StringUtil; |
| import org.junit.jupiter.api.BeforeEach; |
| import org.junit.jupiter.api.Test; |
| |
| /** |
| * Tests that the QuickButCruddyTextExtractor works correctly |
| */ |
| public final class TestCruddyExtractor { |
| private static final POIDataSamples slTests = POIDataSamples.getSlideShowInstance(); |
| |
| // Extractor primed on the test data |
| private QuickButCruddyTextExtractor te; |
| |
| // All the text to be found in the file |
| String[] allTheText = new String[] { |
| "This is a test title", |
| "This is a test subtitle\nThis is on page 1", |
| "Click to edit Master title style", |
| "Click to edit Master text styles\nSecond level\nThird level\nFourth level\nFifth level", |
| "*", |
| "*", |
| "*", |
| "*", |
| "*", |
| "Click to edit Master text styles\nSecond level\nThird level\nFourth level\nFifth level", |
| "*", |
| "*", |
| "These are the notes for page 1", |
| "This is a test title", |
| "This is a test subtitle\nThis is on page 1", |
| "This is the title on page 2", |
| "This is page two\nIt has several blocks of text\nNone of them have formattingT", |
| "These are the notes on page two, again lacking formatting", |
| "This is a test title", |
| "This is a test subtitle\nThis is on page 1", |
| "This is the title on page 2", |
| "This is page two\nIt has several blocks of text\nNone of them have formatting", |
| }; |
| |
| @BeforeEach |
| void setup() throws Exception { |
| te = new QuickButCruddyTextExtractor(slTests.openResourceAsStream("basic_test_ppt_file.ppt")); |
| } |
| |
| @Test |
| void testReadAsVector() { |
| // Extract the text from the file as a vector |
| List<String> foundTextV = te.getTextAsVector(); |
| |
| // Ensure they match |
| assertEquals(allTheText.length,foundTextV.size()); |
| for(int i=0; i<allTheText.length; i++) { |
| String foundText = foundTextV.get(i); |
| assertEquals(allTheText[i],foundText); |
| } |
| } |
| |
| @Test |
| void testReadAsString() { |
| // Extract the text as a String |
| String foundText = te.getTextAsString(); |
| |
| // Turn the string array into a single string |
| String expectText = StringUtil.join(allTheText, "\n") + "\n"; |
| |
| // Ensure they match |
| assertEquals(expectText,foundText); |
| } |
| } |