001    package nl.cwi.sen1.visplugin.csvexport;
002    
003    import junit.framework.TestCase;
004    import nl.cwi.sen1.visplugin.VisualizationFactorySingleton;
005    import nl.cwi.sen1.visplugin.VisualizationPluginWindow;
006    import aterm.ATerm;
007    import aterm.pure.PureFactory;
008    
009    /**
010     * Test class for the TableVisualization Plugin.
011     * @author  Srinivasan Tharmarajah
012     * @author  Wasim Alsaqaf
013     * @author  Antoine Savelkoul
014     * @date    07-03-2007
015     */
016    public class CsvExportControllerTest extends TestCase {
017    
018            private CsvExportController m_tableVisualizationController;
019            private PureFactory m_factory;
020            
021            /**
022             * Fixture setup.
023             * @author  Antoine Savelkoul
024             * @author  Chris Woolderink
025             * @date    14-03-2007
026             */
027            protected void setUp() throws Exception {
028                    super.setUp();
029                            
030                    m_factory = VisualizationFactorySingleton.getPureFactoryInstance();
031            m_tableVisualizationController = new CsvExportController();
032            m_tableVisualizationController.initPluginController(m_factory);
033            }
034    
035        /**
036         * Tests if the TableVisualizationController has been created succesfully
037         * @author  Antoine Savelkoul
038             * @author  Chris Woolderink
039             * @date    14-03-2007
040         */
041        public void testTableVisualizationController() {
042            assertNotNull(m_tableVisualizationController);
043        }        
044    
045        /**
046         * Tests if a visualization window can be created.
047         * @author  Antoine Savelkoul
048             * @author  Chris Woolderink
049         * @date    07-03-2007
050         */
051        public void testCreateWindow() {
052            // Create the window
053            VisualizationPluginWindow visualizationPluginWindow;
054            visualizationPluginWindow = m_tableVisualizationController.createWindow();
055    
056            // Test if the window has been created
057            assertNotNull(visualizationPluginWindow);
058    
059            // Test if the window is of the right type
060            assertEquals(CsvExportVisualizationWindow.class, visualizationPluginWindow.getClass());
061        }
062    
063        /**
064         * Tests if the right plugin name is given when requested.
065         * @author Antoine Savelkoul
066         * @date   07-03-2007
067         */
068        public void testGetPluginName() {
069            assertEquals( m_tableVisualizationController.getPluginName(), "CSV Export Visualization Plugin" );
070        }
071    
072        /**
073         * Tests if there will no list of supported types will be given when asked. This because
074         * the isTypeSupported method will be used instead.
075         * @author Antoine Savelkoul
076         * @date   14-03-2007
077         */
078            public void testGetSupportedTypes() {
079            ATerm[] atermList = m_tableVisualizationController.getSupportedTypes();
080            assertTrue(atermList.length == 0);
081            }
082    
083        /**
084         * Test for the supported types.
085         * @author  Anton Lycklama
086         * @author  Bas Basten
087         * @date    9-3-2007
088         */
089        public void testIsTypeSupported() {
090            ATerm resultTrue = m_factory.make("snd-value(vp-type-supported(<bool>))", new Boolean(true));
091            ATerm resultFalse = m_factory.make("snd-value(vp-type-supported(<bool>))", new Boolean(false));
092            
093            // Should succeed
094            assertEquals(m_tableVisualizationController.vpIsTypeSupported(makeATerm("relation([str])")), resultTrue);               
095            assertEquals(m_tableVisualizationController.vpIsTypeSupported(makeATerm("relation([int])")), resultTrue);
096            assertEquals(m_tableVisualizationController.vpIsTypeSupported(makeATerm("relation([loc])")), resultTrue);
097            assertEquals(m_tableVisualizationController.vpIsTypeSupported(makeATerm("relation([str,str])")), resultTrue);           
098            assertEquals(m_tableVisualizationController.vpIsTypeSupported(makeATerm("relation([str,int])")), resultTrue);
099            assertEquals(m_tableVisualizationController.vpIsTypeSupported(makeATerm("relation([loc,int])")), resultTrue);
100            assertEquals(m_tableVisualizationController.vpIsTypeSupported(makeATerm("relation([str,str,str])")), resultTrue);
101            assertEquals(m_tableVisualizationController.vpIsTypeSupported(makeATerm("relation([str,int,str])")), resultTrue);
102            assertEquals(m_tableVisualizationController.vpIsTypeSupported(makeATerm("relation([int,str,loc])")), resultTrue);
103            assertEquals(m_tableVisualizationController.vpIsTypeSupported(makeATerm("set(int)")), resultTrue);
104            assertEquals(m_tableVisualizationController.vpIsTypeSupported(makeATerm("bag(int)")), resultTrue);
105    
106            // Should fail
107            assertEquals(m_tableVisualizationController.vpIsTypeSupported(makeATerm("str")), resultFalse);
108            assertEquals(m_tableVisualizationController.vpIsTypeSupported(makeATerm("loc")), resultFalse);
109            assertEquals(m_tableVisualizationController.vpIsTypeSupported(makeATerm("int")), resultFalse);
110            assertEquals(m_tableVisualizationController.vpIsTypeSupported(makeATerm("bool")), resultFalse);
111            assertEquals(m_tableVisualizationController.vpIsTypeSupported(makeATerm("relation([str,relation([str])])")), resultFalse);
112            assertEquals(m_tableVisualizationController.vpIsTypeSupported(makeATerm("set(relation([int,str]))")), resultFalse);
113        }
114    
115        /**
116         * Creates an ATerm 
117         * @param type the type of ATerm to be created
118         * @return the created ATerm
119         */
120        private ATerm makeATerm(String type) {
121            return m_factory.make(type);
122        }    
123    }
124    
125