EMMA Coverage Report (generated Sun Apr 20 22:38:01 CEST 2008)
[all classes][net.sf.jomic.comic]

COVERAGE SUMMARY FOR SOURCE FILE [ComicViewTest.java]

nameclass, %method, %block, %line, %
ComicViewTest.java100% (1/1)100% (11/11)94%  (411/439)98%  (102.9/105)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ComicViewTest100% (1/1)100% (11/11)94%  (411/439)98%  (102.9/105)
testCreate (): void 100% (1/1)71%  (25/35)91%  (8.2/9)
setUp (): void 100% (1/1)74%  (14/19)95%  (4.7/5)
<static initializer> 100% (1/1)80%  (12/15)80%  (0.8/1)
testCopyToClipboard (): void 100% (1/1)96%  (88/92)99%  (19.8/20)
testGetPageText (): void 100% (1/1)96%  (148/154)98%  (32.4/33)
ComicViewTest (): void 100% (1/1)100% (3/3)100% (1/1)
tearDown (): void 100% (1/1)100% (8/8)100% (4/4)
testGetPageText (ComicView, boolean, boolean, boolean): void 100% (1/1)100% (46/46)100% (14/14)
testPageMode (boolean): void 100% (1/1)100% (59/59)100% (15/15)
testSinglePageMode (): void 100% (1/1)100% (4/4)100% (2/2)
testTwoPageMode (): void 100% (1/1)100% (4/4)100% (2/2)

1// Jomic - a viewer for comic book archives.
2// Copyright (C) 2004-2008 Thomas Aglassinger
3//
4// This program is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8//
9// This program is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with this program.  If not, see <http://www.gnu.org/licenses/>.
16package net.sf.jomic.comic;
17 
18import java.awt.Dimension;
19import java.awt.Image;
20import java.awt.Toolkit;
21import java.awt.datatransfer.Clipboard;
22import java.awt.datatransfer.DataFlavor;
23import java.awt.datatransfer.Transferable;
24import java.awt.datatransfer.UnsupportedFlavorException;
25import java.awt.image.RenderedImage;
26import java.io.IOException;
27 
28import javax.swing.JScrollPane;
29import javax.swing.TransferHandler;
30 
31import junit.extensions.abbot.ComponentTestFixture;
32import net.sf.jomic.jaiunit.Tools;
33import net.sf.jomic.tools.TestTools;
34import net.sf.wraplog.Logger;
35 
36/**
37 *  TestCase for ComicView.
38 *
39 * @author    Thomas Aglassinger
40 */
41public class ComicViewTest extends ComponentTestFixture
42{
43    private static Logger logger;
44    private TestTools testTools;
45 
46    protected void setUp()
47        throws Exception {
48        super.setUp();
49        testTools = TestTools.instance();
50        testTools.setupCache();
51        logger = Logger.getLogger(ComicViewTest.class);
52    }
53 
54    public void testCopyToClipboard()
55        throws IOException, InterruptedException, UnsupportedFlavorException {
56        ComicModel model = new ComicModel(testTools.getTestFile(TestTools.SINGLE_PAGE_COMIC));
57 
58        try {
59            ComicView view = new ComicView();
60 
61            try {
62                view.setModel(model, null);
63                showFrame(view);
64 
65                ComicViewTransferHandler handler = new ComicViewTransferHandler();
66                Clipboard systemClipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
67 
68                handler.exportToClipboard(view, systemClipboard, TransferHandler.COPY);
69 
70                Transferable transferable = systemClipboard.getContents(null);
71 
72                if (logger.isDebugEnabled()) {
73                    logger.debug("transferable = " + transferable);
74                }
75                Image image = (Image) transferable.getTransferData(DataFlavor.imageFlavor);
76 
77                assertNotNull("image", image);
78                assert image instanceof RenderedImage;
79                Tools jaiTools = Tools.instance();
80 
81                jaiTools.imagesAreEqual(view.getRenderedImage(), (RenderedImage) image);
82            } finally {
83                view.dispose();
84            }
85        } finally {
86            model.dispose();
87        }
88    }
89 
90    public void testCreate()
91        throws Exception {
92        ComicModel model = new ComicModel(testTools.getTestComicFile());
93 
94        try {
95            ComicView view = new ComicView();
96 
97            try {
98                view.setTwoPageMode(false);
99                view.setModel(model, null);
100            } finally {
101                view.dispose();
102            }
103        } finally {
104            model.dispose();
105        }
106    }
107 
108    public void testGetPageText()
109        throws IOException, InterruptedException {
110        ComicModel model = new ComicModel(testTools.getTestComicFile());
111 
112        try {
113            boolean doublePageTested = false;
114            boolean twoImagesTested = false;
115            boolean singlePageAndImageTested = false;
116            ComicView view = new ComicView();
117 
118            view.setTwoPageMode(false);
119            view.setModel(model, null);
120            logger.info("start");
121            while (!(view.isLast() && doublePageTested && singlePageAndImageTested && twoImagesTested)) {
122                int currentSheetIndex = view.getCurrentSheetIndex();
123                ComicSheet sheet = view.getSheet(currentSheetIndex);
124                boolean isLandscapeImage = view.getComicImage(sheet.getLeftImageIndex()).isDoublePage();
125                boolean hasTwoImages = sheet.hasRightImage();
126 
127                logger.info("sheet=" + currentSheetIndex + ", isLandscape=" + isLandscapeImage
128                        + ", hasTwoImages=" + hasTwoImages);
129                if (isLandscapeImage) {
130                    if (!doublePageTested) {
131                        testGetPageText(view, false, false, true);
132                        doublePageTested = true;
133                    }
134                } else if (hasTwoImages) {
135                    if (!twoImagesTested) {
136                        testGetPageText(view, true, false, false);
137                        twoImagesTested = true;
138                    }
139                } else {
140                    if (!singlePageAndImageTested) {
141                        testGetPageText(view, true, true, true);
142                        singlePageAndImageTested = true;
143                    }
144                }
145                view.setTwoPageMode(true);
146                view.goNext();
147                logger.info("isLast=" + view.isLast() + ", dpT=" + doublePageTested
148                        + ", spT=" + singlePageAndImageTested + ", tiT=" + twoImagesTested);
149            }
150 
151            assertTrue(doublePageTested && singlePageAndImageTested && twoImagesTested);
152        } finally {
153            model.dispose();
154        }
155    }
156 
157    public void testSinglePageMode()
158        throws Exception {
159        testPageMode(false);
160    }
161 
162    public void testTwoPageMode()
163        throws Exception {
164        testPageMode(true);
165    }
166 
167    protected void tearDown()
168        throws Exception {
169        testTools = null;
170        logger = null;
171        super.tearDown();
172    }
173 
174    private void testGetPageText(ComicView view,
175            boolean noTwoPageEqualsIndependantOfRightFromLeft,
176            boolean twoPageEqualsIndependantOfRightFromLeft,
177            boolean twoPageEqualsSinglePage) {
178        view.setTwoPageMode(false);
179        view.setSwapLeftAndRightImage(false);
180 
181        String singleModeText = view.getPageText();
182 
183        view.setSwapLeftAndRightImage(true);
184 
185        String singleModeFromRightToLeftText = view.getPageText();
186 
187        assertEquals(noTwoPageEqualsIndependantOfRightFromLeft,
188                singleModeText.equals(singleModeFromRightToLeftText));
189        view.setTwoPageMode(true);
190        view.setSwapLeftAndRightImage(false);
191 
192        String doubleModeText = view.getPageText();
193 
194        assertEquals(twoPageEqualsSinglePage, singleModeText.equals(doubleModeText));
195        view.setSwapLeftAndRightImage(true);
196 
197        String doubleModeFromRightToLeftText = view.getPageText();
198 
199        assertEquals(twoPageEqualsIndependantOfRightFromLeft,
200                doubleModeText.equals(doubleModeFromRightToLeftText));
201    }
202 
203    private void testPageMode(boolean mode)
204        throws Exception {
205        ComicModel model = new ComicModel(testTools.getTestComicFile());
206        ComicView view = new ComicView();
207 
208        try {
209            JScrollPane scrollPane = new JScrollPane(view);
210 
211            showFrame(scrollPane, new Dimension(TestTools.FRAME_WIDTH, TestTools.FRAME_HEIGHT));
212            view.setTwoPageMode(mode);
213            view.setModel(model, null);
214            while (!view.isLast()) {
215                view.goNext();
216                testTools.waitSomeTime();
217            }
218            while (!view.isFirst()) {
219                view.goPrevious();
220                testTools.waitSomeTime();
221            }
222        } finally {
223            model.dispose();
224        }
225    }
226}

[all classes][net.sf.jomic.comic]
EMMA 2.0.4217 (C) Vladimir Roubtsov