01: /* ====================================================================
02: Licensed to the Apache Software Foundation (ASF) under one or more
03: contributor license agreements. See the NOTICE file distributed with
04: this work for additional information regarding copyright ownership.
05: The ASF licenses this file to You under the Apache License, Version 2.0
06: (the "License"); you may not use this file except in compliance with
07: the License. You may obtain a copy of the License at
08:
09: http://www.apache.org/licenses/LICENSE-2.0
10:
11: Unless required by applicable law or agreed to in writing, software
12: distributed under the License is distributed on an "AS IS" BASIS,
13: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: See the License for the specific language governing permissions and
15: limitations under the License.
16: ==================================================================== */
17: package org.apache.poi.hssf.model;
18:
19: import junit.framework.TestCase;
20: import org.apache.poi.ddf.EscherDggRecord;
21: import org.apache.poi.ddf.EscherDgRecord;
22:
23: public class TestDrawingManager extends TestCase {
24: public void testFindFreeSPIDBlock() throws Exception {
25: EscherDggRecord dgg = new EscherDggRecord();
26: DrawingManager dm = new DrawingManager(dgg);
27: dgg.setShapeIdMax(1024);
28: assertEquals(2048, dm.findFreeSPIDBlock());
29: dgg.setShapeIdMax(1025);
30: assertEquals(2048, dm.findFreeSPIDBlock());
31: dgg.setShapeIdMax(2047);
32: assertEquals(2048, dm.findFreeSPIDBlock());
33: }
34:
35: public void testFindNewDrawingGroupId() throws Exception {
36: EscherDggRecord dgg = new EscherDggRecord();
37: dgg.setDrawingsSaved(1);
38: dgg
39: .setFileIdClusters(new EscherDggRecord.FileIdCluster[] { new EscherDggRecord.FileIdCluster(
40: 2, 10) });
41: DrawingManager dm = new DrawingManager(dgg);
42: assertEquals(1, dm.findNewDrawingGroupId());
43: dgg.setFileIdClusters(new EscherDggRecord.FileIdCluster[] {
44: new EscherDggRecord.FileIdCluster(1, 10),
45: new EscherDggRecord.FileIdCluster(2, 10) });
46: assertEquals(3, dm.findNewDrawingGroupId());
47: }
48:
49: public void testDrawingGroupExists() throws Exception {
50: EscherDggRecord dgg = new EscherDggRecord();
51: dgg.setDrawingsSaved(1);
52: dgg
53: .setFileIdClusters(new EscherDggRecord.FileIdCluster[] { new EscherDggRecord.FileIdCluster(
54: 2, 10) });
55: DrawingManager dm = new DrawingManager(dgg);
56: assertFalse(dm.drawingGroupExists((short) 1));
57: assertTrue(dm.drawingGroupExists((short) 2));
58: assertFalse(dm.drawingGroupExists((short) 3));
59: }
60:
61: public void testCreateDgRecord() throws Exception {
62: EscherDggRecord dgg = new EscherDggRecord();
63: dgg.setDrawingsSaved(0);
64: dgg.setFileIdClusters(new EscherDggRecord.FileIdCluster[] {});
65: DrawingManager dm = new DrawingManager(dgg);
66:
67: EscherDgRecord dgRecord = dm.createDgRecord();
68: assertEquals(-1, dgRecord.getLastMSOSPID());
69: assertEquals(0, dgRecord.getNumShapes());
70: assertEquals(1, dm.getDgg().getDrawingsSaved());
71: assertEquals(1, dm.getDgg().getFileIdClusters().length);
72: assertEquals(1, dm.getDgg().getFileIdClusters()[0]
73: .getDrawingGroupId());
74: assertEquals(0, dm.getDgg().getFileIdClusters()[0]
75: .getNumShapeIdsUsed());
76: }
77:
78: public void testAllocateShapeId() throws Exception {
79: EscherDggRecord dgg = new EscherDggRecord();
80: dgg.setDrawingsSaved(0);
81: dgg.setFileIdClusters(new EscherDggRecord.FileIdCluster[] {});
82: DrawingManager dm = new DrawingManager(dgg);
83:
84: EscherDgRecord dg = dm.createDgRecord();
85: int shapeId = dm.allocateShapeId(dg.getDrawingGroupId());
86: assertEquals(1024, shapeId);
87: assertEquals(1025, dgg.getShapeIdMax());
88: assertEquals(1, dgg.getDrawingsSaved());
89: assertEquals(1, dgg.getFileIdClusters()[0].getDrawingGroupId());
90: assertEquals(1, dgg.getFileIdClusters()[0].getNumShapeIdsUsed());
91: assertEquals(1024, dg.getLastMSOSPID());
92: assertEquals(1, dg.getNumShapes());
93: }
94:
95: }
|