001    package nl.cwi.sen1.visplugin.screenshotmaker;
002    
003    import java.awt.Color;
004    import java.io.File;
005    
006    import javax.swing.JLabel;
007    import javax.swing.JPanel;
008    
009    
010    import junit.framework.TestCase;
011    
012    /**
013     * Test the screenshot function with different extensions.
014     *
015     * @author R. Bergen
016     * @author S. Tharmarajah
017     * @date 09-03-2007
018     */
019    public class ScreenshotMakerTest extends TestCase{
020    
021        protected void setUp() throws Exception {
022            super.setUp();
023        }
024    
025        /**
026         * Test the screenshot function with different extensions.
027         *
028         * @author R. Bergen
029         * @author S. Tharmarajah
030         * @date 09-03-2007
031         */
032        public void testExportScreenShot() {
033            //Create a test JPanel which can be saved
034            JPanel testPanel = new JPanel();
035            testPanel.setSize(100,100);
036            testPanel.add(new JLabel("TEST"));
037            testPanel.setBackground(Color.CYAN);
038    
039            //Testcases for supported file extensions
040            assertTrue(exportAs(testPanel, "testFile", "jpg"));
041            assertTrue(exportAs(testPanel, "testFile", "png"));
042    
043            //Testcase for unsupported file extension
044            assertFalse(exportAs(testPanel, "testFile", "bogus"));
045        }
046    
047        /**
048         * Test the screenshot function with different extensions.
049         *
050         * @param testPanel The Jpanel which should be saved
051         * @param exportDestination The destination of the exported image
052         * @param fileExtension The extension of the exported image
053         *
054         * @author R. Bergen
055         * @author S. Tharmarajah
056         * @date 09-03-2007
057         */
058        private boolean exportAs(JPanel testPanel, String exportDestination, String fileExtension) {
059            ScreenshotMaker.saveScreenshot(testPanel, exportDestination, fileExtension);
060            ScreenshotMaker.saveScreenshot(testPanel, exportDestination, fileExtension);
061            /*
062             * Check if a screenshot is saved using the
063             * given extension when a bogus extension is given
064             */
065            File file = new File(exportDestination + "." +fileExtension);
066            boolean exists = file.exists();
067    
068            if(exists)
069                file.delete();
070    
071            /*
072             * Check if a screenshot is saved using the
073             * default extension when a bogus extension is given
074             *
075             * The reason there is an extra test is that the screenshotmaker
076             * automatically gives a file with a bogus extension a default extension
077             */
078            File fileWithDefaultExtension = new File(exportDestination + "." +ScreenshotMaker.DEFAULT_EXTENSION);
079            boolean fileWithDefaultExtensionExists = fileWithDefaultExtension.exists();
080    
081            if(fileWithDefaultExtensionExists)
082                fileWithDefaultExtension.delete();
083    
084            return exists;
085        }
086    }