001 package nl.cwi.sen1.visplugin.table; 002 003 import java.io.BufferedReader; 004 import java.io.File; 005 import java.io.FileReader; 006 import java.io.IOException; 007 008 import junit.framework.TestCase; 009 import nl.cwi.sen1.relationstores.Factory; 010 import nl.cwi.sen1.relationstores.types.RStore; 011 import nl.cwi.sen1.relationstores.types.RTuple; 012 import nl.cwi.sen1.visplugin.VisualizationFactorySingleton; 013 014 /** 015 * Test class for the TableVisualizationWindow. 016 * 017 * @author Arend van Beelen 018 * @date 13-03-2007 019 */ 020 public class TableVisualizationWindowTest extends TestCase { 021 022 private static String m_testFilename = "test_export_from_window.rstore"; 023 024 private Factory m_factory; 025 private RTuple m_testRTuple; 026 027 private TableVisualizationWindow m_window; 028 029 /** 030 * Set-up code for the unit tests. 031 * 032 * @author Arend van Beelen 033 * @date 13-03-2007 034 */ 035 public void setUp() { 036 // clean up any previous occurences of the test file 037 (new File(m_testFilename)).delete(); 038 039 m_factory = VisualizationFactorySingleton.getFactoryInstance(); 040 041 String relStrStr = "rtuple(\"STRING_TABLE\"," + "relation([str,str])," 042 + "set([" 043 + "tuple([str(\"Row 1\"),str(\"abc\")])," 044 + "tuple([str(\"Row 2\"),str(\"bcd\")])," 045 + "tuple([str(\"Row 3\"),str(\"abd\")])" 046 + "]))"; 047 m_testRTuple = m_factory.RTupleFromString(relStrStr); 048 049 m_window = new TableVisualizationWindow(); 050 } 051 052 /** 053 * Tests the exportToRStore() method. 054 * Cannot be tested due to the studioComponent in exportToRstore. 055 * 056 * @author Arend van Beelen 057 * @date 13-03-2007 058 */ 059 public void testExportToRStore() { 060 m_window.render(m_testRTuple); 061 062 m_window.exportToRStore(m_testFilename); 063 064 String contents = readFile(m_testFilename); 065 066 RStore rStore = m_factory.RStoreFromString(contents); 067 assertEquals(m_testRTuple, rStore.getRtuples().getRTupleAt(0)); 068 } 069 070 /** 071 * Reads an entire file and returns the contents as a string. 072 * 073 * @param filename Filename of the file to read. 074 * @return A string containing the file contents. 075 * 076 * @author Anton Gerdessen 077 * @author Arend van Beelen 078 * @date 13-03-2007 079 */ 080 private String readFile(String filename) { 081 StringBuilder stringBuilder = new StringBuilder(); 082 BufferedReader in = null; 083 try { 084 in = new BufferedReader(new FileReader(filename)); 085 String line; 086 while ((line = in.readLine()) != null) { 087 stringBuilder.append(line); 088 } 089 090 } catch (IOException exception) { 091 System.err.println("Unable to read from file with name: "+filename); 092 }finally{ 093 if(in != null){ 094 try{ 095 in.close(); 096 }catch(IOException ioex){ 097 System.err.println("A fatal error occured: Unable to close reader."); 098 } 099 } 100 } 101 102 return stringBuilder.toString(); 103 } 104 }