test/test_xls.rb in statsample-0.8.2 vs test/test_xls.rb in statsample-0.9.0

- old
+ new

@@ -1,35 +1,53 @@ require(File.dirname(__FILE__)+'/test_helpers.rb') class StatsampleExcelTestCase < MiniTest::Unit::TestCase - def setup - @ds=Statsample::Excel.read(File.dirname(__FILE__)+"/test_xls.xls") + context "Excel reader" do + setup do + @ds=Statsample::Excel.read(File.dirname(__FILE__)+"/test_xls.xls") + end + should "set the number of cases" do + assert_equal(6,@ds.cases) + end + should "set correct field names" do + assert_equal(%w{id name age city a1},@ds.fields) + end + should "set a dataset equal to expected" do + id=[1,2,3,4,5,6].to_vector(:scale) + name=["Alex","Claude","Peter","Franz","George","Fernand"].to_vector(:nominal) + age=[20,23,25,nil,5.5,nil].to_vector(:scale) + city=["New York","London","London","Paris","Tome",nil].to_vector(:nominal) + a1=["a,b","b,c","a",nil,"a,b,c",nil].to_vector(:nominal) + ds_exp=Statsample::Dataset.new({'id'=>id,'name'=>name,'age'=>age,'city'=>city,'a1'=>a1}, %w{id name age city a1}) + ds_exp.fields.each{|f| + assert_equal(ds_exp[f],@ds[f]) + } + assert_equal(ds_exp,@ds) + end + should "set to nil empty cells" do + assert_equal(nil,@ds['age'][5]) + end end - def test_read - assert_equal(6,@ds.cases) - assert_equal(%w{id name age city a1},@ds.fields) - id=[1,2,3,4,5,6].to_vector(:scale) - name=["Alex","Claude","Peter","Franz","George","Fernand"].to_vector(:nominal) - age=[20,23,25,nil,5.5,nil].to_vector(:scale) - city=["New York","London","London","Paris","Tome",nil].to_vector(:nominal) - a1=["a,b","b,c","a",nil,"a,b,c",nil].to_vector(:nominal) - ds_exp=Statsample::Dataset.new({'id'=>id,'name'=>name,'age'=>age,'city'=>city,'a1'=>a1}, %w{id name age city a1}) - ds_exp.fields.each{|f| - assert_equal(ds_exp[f],@ds[f]) - } - assert_equal(ds_exp,@ds) - - end - def test_nil - assert_equal(nil,@ds['age'][5]) - end - def test_write - tempfile=Tempfile.new("test_write.xls") - Statsample::Excel.write(@ds,tempfile.path) - ds2=Statsample::Excel.read(tempfile.path) - i=0 - ds2.each_array do |row| - assert_equal(@ds.case_as_array(i),row) - i+=1 + context "Excel writer" do + setup do + a=100.times.map{rand(100)}.to_scale + b=(["b"]*100).to_vector + @ds={'b'=>b, 'a'=>a}.to_dataset(%w{b a}) + tempfile=Tempfile.new("test_write.xls") + Statsample::Excel.write(@ds,tempfile.path) + @ds2=Statsample::Excel.read(tempfile.path) + end + should "return same fields as original" do + assert_equal(@ds.fields ,@ds2.fields) + end + should "return same number of cases as original" do + assert_equal(@ds.cases, @ds2.cases) + end + should "return same cases as original" do + i=0 + @ds2.each_array do |row| + assert_equal(@ds.case_as_array(i),row) + i+=1 + end end end end