From: Nick Burch Date: Wed, 19 Apr 2006 15:43:06 +0000 (+0000) Subject: Test to ensure that when we add slides, we can write them back out and everything... X-Git-Tag: REL_3_0_ALPHA3~118 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=f64c6c3ceadd80a693fed9b04f58d41d3bb05a7f;p=poi.git Test to ensure that when we add slides, we can write them back out and everything behaves git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@395280 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestAddingSlides.java b/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestAddingSlides.java new file mode 100644 index 0000000000..8ebd67922b --- /dev/null +++ b/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestAddingSlides.java @@ -0,0 +1,191 @@ + +/* ==================================================================== + Copyright 2002-2004 Apache Software Foundation + + Licensed 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 java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; + +import junit.framework.TestCase; +import org.apache.poi.hslf.*; +import org.apache.poi.hslf.model.*; + +/** + * Tests that SlideShow adds additional sheets properly + * + * @author Nick Burch (nick at torchbox dot com) + */ +public class TestAddingSlides extends TestCase { + // An empty SlideShow + private HSLFSlideShow hss_empty; + private SlideShow ss_empty; + + // A SlideShow with one slide + private HSLFSlideShow hss_one; + private SlideShow ss_one; + + // A SlideShow with two slides + private HSLFSlideShow hss_two; + private SlideShow ss_two; + + /** + * Create/open the slideshows + */ + public void setUp() throws Exception { + hss_empty = new HSLFSlideShow(); + ss_empty = new SlideShow(hss_empty); + + String dirname = System.getProperty("HSLF.testdata.path"); + + String filename = dirname + "/Single_Coloured_Page.ppt"; + hss_one = new HSLFSlideShow(filename); + ss_one = new SlideShow(hss_one); + + filename = dirname + "/basic_test_ppt_file.ppt"; + hss_two = new HSLFSlideShow(filename); + ss_two = new SlideShow(hss_two); + } + + /** + * Test adding a slide to an empty slideshow + */ + public void testAddSlideToEmpty() throws Exception { + // Doesn't have any slides + assertEquals(0, ss_empty.getSlides().length); + + // Add one + Slide slide = ss_empty.createSlide(); + assertEquals(1, ss_empty.getSlides().length); + assertEquals(256, slide._getSheetNumber()); + assertEquals(3, slide._getSheetRefId()); + assertEquals(1, slide.getSlideNumber()); + + // Write out, and read back in + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + hss_empty.write(baos); + ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); + + HSLFSlideShow hss_read = new HSLFSlideShow(bais); + SlideShow ss_read = new SlideShow(hss_read); + + // Check it now has a slide + assertEquals(1, ss_read.getSlides().length); + + // And check it's as expected + slide = ss_read.getSlides()[0]; + assertEquals(256, slide._getSheetNumber()); + assertEquals(3, slide._getSheetRefId()); + assertEquals(1, slide.getSlideNumber()); + } + + /** + * Test adding a slide to an existing slideshow + */ + public void testAddSlideToExisting() throws Exception { + // Has one slide + assertEquals(1, ss_one.getSlides().length); + Slide s1 = ss_one.getSlides()[0]; + + // Check slide 1 is as expected + assertEquals(256, s1._getSheetNumber()); + assertEquals(3, s1._getSheetRefId()); + assertEquals(1, s1.getSlideNumber()); + + // Add a second one + Slide s2 = ss_one.createSlide(); + assertEquals(2, ss_one.getSlides().length); + assertEquals(257, s2._getSheetNumber()); + assertEquals(4, s2._getSheetRefId()); + assertEquals(2, s2.getSlideNumber()); + + // Write out, and read back in + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + hss_one.write(baos); + ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); + + HSLFSlideShow hss_read = new HSLFSlideShow(bais); + SlideShow ss_read = new SlideShow(hss_read); + + // Check it now has two slides + assertEquals(2, ss_read.getSlides().length); + + // And check it's as expected + s1 = ss_read.getSlides()[0]; + s2 = ss_read.getSlides()[1]; + assertEquals(256, s1._getSheetNumber()); + assertEquals(3, s1._getSheetRefId()); + assertEquals(1, s1.getSlideNumber()); + assertEquals(257, s2._getSheetNumber()); + assertEquals(4, s2._getSheetRefId()); + assertEquals(2, s2.getSlideNumber()); + } + + /** + * Test adding a slide to an existing slideshow, + * with two slides already + */ + public void testAddSlideToExisting2() throws Exception { + // Has two slides + assertEquals(2, ss_two.getSlides().length); + Slide s1 = ss_two.getSlides()[0]; + Slide s2 = ss_two.getSlides()[1]; + + // Check slide 1 is as expected + assertEquals(256, s1._getSheetNumber()); + assertEquals(4, s1._getSheetRefId()); // master has notes + assertEquals(1, s1.getSlideNumber()); + // Check slide 2 is as expected + assertEquals(257, s2._getSheetNumber()); + assertEquals(6, s2._getSheetRefId()); // master and 1 have notes + assertEquals(2, s2.getSlideNumber()); + + // Add a third one + Slide s3 = ss_two.createSlide(); + assertEquals(3, ss_two.getSlides().length); + assertEquals(258, s3._getSheetNumber()); + assertEquals(8, s3._getSheetRefId()); // lots of notes before us + assertEquals(3, s3.getSlideNumber()); + + // Write out, and read back in + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + hss_two.write(baos); + ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); + + HSLFSlideShow hss_read = new HSLFSlideShow(bais); + SlideShow ss_read = new SlideShow(hss_read); + + // Check it now has three slides + assertEquals(3, ss_read.getSlides().length); + + // And check it's as expected + s1 = ss_read.getSlides()[0]; + s2 = ss_read.getSlides()[1]; + s3 = ss_read.getSlides()[2]; + assertEquals(256, s1._getSheetNumber()); + assertEquals(4, s1._getSheetRefId()); + assertEquals(1, s1.getSlideNumber()); + assertEquals(257, s2._getSheetNumber()); + assertEquals(6, s2._getSheetRefId()); + assertEquals(2, s2.getSlideNumber()); + assertEquals(258, s3._getSheetNumber()); + assertEquals(8, s3._getSheetRefId()); + assertEquals(3, s3.getSlideNumber()); + } +}