spec/ccsv_spec.rb in ccsv-1.0.1 vs spec/ccsv_spec.rb in ccsv-1.0.4

- old
+ new

@@ -1,28 +1,18 @@ require 'bundler' Bundler.require(:default, :test) -gem 'minitest' -#require 'minitest/benchmark' +require 'minitest/spec' require 'minitest/autorun' -#require 'minitest/spec' require 'ccsv' -#require 'csv' TEST_CSV="/tmp/test.csv" +DEF_SIZE=20000 -module CSVScan - def self.foreach(file, &block) - open(file) do |f| - scan(f, &block) - end - end -end - -def create_csv(delimiter=',') +def create_csv(delimiter=',',limit=DEF_SIZE) open(TEST_CSV,"w") do |f| - 1.upto(100000) do |n| + 1.upto(limit) do |n| f.puts [n,2*n,3+n].join(delimiter) end end end @@ -30,17 +20,21 @@ describe Ccsv do before do @csv=[] end + after do + begin; FileUtils.rm TEST_CSV; rescue; end + end + it 'reads csv with default delimiter' do create_csv Ccsv.foreach(TEST_CSV) do |v| @csv << v end @csv[15000].must_equal(['15001','30002','15004']) - @csv.size.must_equal(100000) + @csv.size.must_equal(DEF_SIZE) end it 'reads csv with tab delimiter' do create_csv("\t") Ccsv.foreach(TEST_CSV,"\t") do |v| @@ -61,74 +55,15 @@ proc { Ccsv.foreach('/non-existent-file') do |x| end }.must_raise(RuntimeError) end -# bench_performance_linear 'just read', 0.9 do |n| -# create_csv(',',n) -# Ccsv.foreach(TEST_CSV) -# end -end - -#describe 'my benchmarks' do -#end - -__END__ -require 'test/unit' -require 'ccsv' -require 'benchmark' - -# Yeah, I know. -begin - require 'csv' - require 'rubygems' - require 'lightcsv' - require 'csvscan' - - module CSVScan - def self.foreach(file, &block) - open(file) do |f| - scan(f, &block) - end - end - end - -rescue LoadError -end - -class TestCcsv < Test::Unit::TestCase - - def setup - @dir = "#{File.dirname(__FILE__)}/../" - end - - def test_should_raise - assert_raises(RuntimeError) do - Ccsv.foreach('fdssfd') do - end - end - end - - def test_accuracy - ccsv = [] - file = @dir + "data_small.csv" - Ccsv.foreach(file) do |values| - ccsv << values.dup - end - csv = [] - CSV.foreach(file) do |values| - csv << values - end - assert_equal csv, ccsv - end - - def test_speed - Benchmark.bm(5) do |x| - [Ccsv, CSV].each do |klass| # CSVScan, LightCsv, - x.report(klass.name) do - klass.foreach(@dir + "data.csv") do |values| end - end - end - end - end + it 'filters csv' do + create_csv + Ccsv.foreach(TEST_CSV,',',0,[3000..4000]) do |v| + @csv << v + end + @csv[0].must_equal(['3001','6002','3004']) + @csv.size.must_equal(999) + end end