<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -7,8 +7,8 @@ module TableExport
     rows = find( :all,
                  :select =&gt; fields.join( ',' ),
                  :order  =&gt; fields.include?( 'id' ) ? 'id' : fields[ 0 ] )
-    rows.each { |r| data &lt;&lt; fields.collect{ |f| r[ f ].to_s } }
-    case format
+    rows.each { |r| data &lt;&lt; fields.collect{ |f| r[ f ] } }
+    case format.to_s
     when RailsdbConfig::ExportFormat.csv.to_s
       delimiter = ','
       exporter = DsvExporter.new( delimiter )
@@ -22,12 +22,12 @@ module TableExport
     end
     exporter.export_as_text( data )
   end
-  
+
   def export_table_filename(ext, include_time = false)
     time = Time.now.to_i
-    &quot;#{ s_fn(database.name) }_#{ s_fn(name) }#{ ('_' + time.to_s) if include_time}.#{ ext }&quot;
+    &quot;#{ s_fn(database.name) }_#{ s_fn(name) }#{ ('_' + time.to_s) if include_time}#{('.' +  ext) if ext }&quot;
   end
-  
+
   def s_fn(filename)
     filename.gsub(/[^\w\.\-]/, '_')
   end</diff>
      <filename>lib/export/table_export.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,14 +4,14 @@ require File.dirname( __FILE__ ) + '/../test_helper'
 class DatabaseTest &lt; ActiveSupport::TestCase
 
   self.use_transactional_fixtures = false
-  
+
   fixtures :databases,
            :drivers
 
   def setup
     @db_sqlite = databases( :sqlite3 )
   end
-  
+
   def test_invalid
     db = Database.new
     assert !db.valid?
@@ -39,28 +39,98 @@ class DatabaseTest &lt; ActiveSupport::TestCase
     db = databases( :oracle )
     assert db.valid?
   end
-  
+
   def test_has_table
     tables = @db_sqlite.tables
     tables.each { |t| assert @db_sqlite.has_table?(t.name) }
   end
-  
+
   def test_has_no_existing_table
     assert !@db_sqlite.has_table?('x_not_existing_table_x')
   end
-  
+
   def test_get_table
-    tables = @db_sqlite.tables
-    tables.each do |t|
+    @db_sqlite.tables.each do |t|
       table = @db_sqlite.get_table(t.name)
       assert_equal t.name, table.name
       assert_equal t.driver, table.driver
       assert_equal t.database, table.database
     end
   end
-  
+
   def test_get_no_existing_table
     assert_nil @db_sqlite.get_table('x_not_existing_table_x')
   end
- 
+
+  def test_sanitize_filenames
+    table = @db_sqlite.get_table('drivers')
+    weird_filenames.each do |fn|
+      assert_equal(fn[0], @db_sqlite.s_fn(fn[1]))
+      assert_equal(fn[0], table.s_fn(fn[1]))
+    end
+  end
+
+  def test_export_table_filename
+    @db_sqlite.tables.each do |t|
+      table = @db_sqlite.get_table(t.name)
+      tab_name = table.name
+      db_name = table.database.name
+      extensions.each do |ext|
+        assert_equal(&quot;#{db_name}_#{tab_name}#{ext[0]}&quot;,
+          table.export_table_filename(ext[1], false))
+        assert_match(/#{db_name}_#{tab_name}_\d{10}#{ext[0]}/,
+          table.export_table_filename(ext[1], true))
+      end
+    end
+  end
+
+  def test_table_csv_export_rows
+    table = @db_sqlite.get_table('drivers')
+    assert_equal driver_export.collect { |e| &quot;#{ e[0] },#{ e[1] }&quot; }.join( $/ ),
+      table.export_rows(header.flatten, RailsdbConfig::ExportFormat.csv)
+  end
+
+  def test_table_tsv_export_rows
+    table = @db_sqlite.get_table('drivers')
+    assert_equal driver_export.collect { |e| &quot;#{ e[0] }\t#{ e[1] }&quot; }.join( $/ ),
+      table.export_rows(header.flatten, RailsdbConfig::ExportFormat.tsv)
+  end
+
+  def test_table_yaml_export_rows
+    table = @db_sqlite.get_table('drivers')
+    assert_equal driver_data.collect { |e| e.to_yaml }.to_s,
+      table.export_rows(header.flatten, RailsdbConfig::ExportFormat.yaml)
+  end
+
+  private
+
+  def weird_filenames
+    [ ['_a_','|a|'], ['a_a','a/a'], ['__a__','??a??'],
+      ['____________','|\?*&lt;&quot;:&gt;+[]/'], ['_abc___cba_','#abc?/|cba&amp;'],
+      ['xyz.uoy','xyz.uoy'], ['.tyz.uoy.','.tyz.uoy.'], ['-.-','-.-'] ]
+  end
+
+  def extensions
+    [ ['.csv','csv'], ['.a','a'], ['.',''], ['',nil] ]
+  end
+
+  def export_formats
+    [ RailsdbConfig::ExportFormat.csv, RailsdbConfig::ExportFormat.tsv,
+      RailsdbConfig::ExportFormat.yaml.to_s ]
+  end
+
+  def driver_export
+    header + driver_data
+  end
+
+  def driver_data
+    [[ drivers( :sqlite3    ).id, drivers( :sqlite3    ).name ],
+      [ drivers( :mysql      ).id, drivers( :mysql      ).name ],
+      [ drivers( :postgresql ).id, drivers( :postgresql ).name ],
+      [ drivers( :oracle     ).id, drivers( :oracle     ).name ] ]
+  end
+
+  def header
+    [%w( id name )]
+  end
 end</diff>
      <filename>test/unit/database_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>a05c8bf1ac10be14a9baa25853dfd203064041d5</id>
    </parent>
  </parents>
  <author>
    <name>Jacek Panachida</name>
    <email>jacek.panachida@gmail.com</email>
  </author>
  <url>http://github.com/gdonald/railsdb/commit/55a791a9378e5fa8d4ec0817e3b0f9ad4c1113d9</url>
  <id>55a791a9378e5fa8d4ec0817e3b0f9ad4c1113d9</id>
  <committed-date>2008-06-30T12:28:34-07:00</committed-date>
  <authored-date>2008-06-30T12:28:34-07:00</authored-date>
  <message>Add table export tests.</message>
  <tree>db434133174d380ab8b41f1438b9f1733c0f9c64</tree>
  <committer>
    <name>Jacek Panachida</name>
    <email>jacek.panachida@gmail.com</email>
  </committer>
</commit>
