test/tc/csv_columns.rb in rio-0.4.2 vs test/tc/csv_columns.rb in rio-0.5.1

- old
+ new

@@ -17,21 +17,223 @@ end def setup() super @src = rio(?") @dst_name = 'dst.csv' - @records,@strings,@lines,@string = create_test_csv_data(@src,1, 8, false) + @records,@strings,@lines,@string = create_test_csv_data(@src,3, 8,',',$/, true) + if $USE_FASTER_CSV + opts = {:headers => true, :return_headers => true} + @rows = [] + ::CSV.parse(@string, opts) do |row| + @rows << row + end + end end + def col_recs(r,cola) + ans = [] + r.each do |rec| + row = [] + cola.each do |col| + row << rec[col] + end + ans << row.flatten + end + ans + end def test_basic rio('src1.csv') < @src - r = @records[0] - assert_equal([[r[1],r[2],r[5]]],rio('src1.csv').csv.columns(1,2,5).to_a) - assert_equal([r[3...6]],rio('src1.csv').csv.columns(3...6).to_a) - assert_equal([[r[3],r[5]]],rio('src1.csv').csv.columns(3...6).skipcolumns(4).to_a) - assert_equal([[r[0],r[7]]],rio('src1.csv').csv.skipcolumns(1..6).to_a) - assert_equal([[]],rio('src1.csv').csv.skipcolumns.to_a) - assert_equal([r],rio('src1.csv').csv.to_a) + r = @records + assert_equal(col_recs(r,[1,2,5]),rio('src1.csv').csv.columns(1,2,5).to_a) + assert_equal(col_recs(r,(3...6).to_a),rio('src1.csv').csv.columns(3...6).to_a) + assert_equal(col_recs(r,[3,5]),rio('src1.csv').csv.columns(3...6).skipcolumns(4).to_a) + assert_equal(col_recs(r,[0,7]),rio('src1.csv').csv.skipcolumns(1..6).to_a) + assert_equal([[],[],[],[]],rio('src1.csv').csv.skipcolumns.to_a) + assert_equal(r,rio('src1.csv').csv.columns.to_a) end + + def test_neg_recs + + rio('src1.csv') < @src + r = @records + assert_equal(col_recs(r,[7]),rio('src1.csv').csv.columns(-1).to_a) + assert_equal(col_recs(r,[6]),rio('src1.csv').csv.columns(-2).to_a) + assert_equal(col_recs(r,[0..7]),rio('src1.csv').csv.columns(0..-1).to_a) + assert_equal(col_recs(r,[0..6]),rio('src1.csv').csv.columns(0..-2).to_a) + assert_equal(col_recs(r,[0...7]),rio('src1.csv').csv.columns(0...-1).to_a) + assert_equal(col_recs(r,[0...6]),rio('src1.csv').csv.columns(0...-2).to_a) + + assert_equal(col_recs(r,[3..7]),rio('src1.csv').csv.columns(-5..-1).to_a) + assert_equal(col_recs(r,[3..6]),rio('src1.csv').csv.columns(-5..-2).to_a) + assert_equal(col_recs(r,[3...7]),rio('src1.csv').csv.columns(-5...-1).to_a) + assert_equal(col_recs(r,[3...6]),rio('src1.csv').csv.columns(-5...-2).to_a) + + assert_equal(col_recs(r,[3..6]),rio('src1.csv').csv.columns(-5..6).to_a) + assert_equal(col_recs(r,[3..7]),rio('src1.csv').csv.columns(-5..7).to_a) + assert_equal(col_recs(r,[3..7]),rio('src1.csv').csv.columns(-5..8).to_a) + assert_equal(col_recs(r,[3..7]),rio('src1.csv').csv.columns(-5..9).to_a) + + assert_equal(col_recs(r,[3...6]),rio('src1.csv').csv.columns(-5...6).to_a) + assert_equal(col_recs(r,[3...7]),rio('src1.csv').csv.columns(-5...7).to_a) + assert_equal(col_recs(r,[3...8]),rio('src1.csv').csv.columns(-5...8).to_a) + assert_equal(col_recs(r,[3...8]),rio('src1.csv').csv.columns(-5...9).to_a) + + assert_equal(col_recs(r,[7..6]),rio('src1.csv').csv.columns(-1..6).to_a) + assert_equal(col_recs(r,[7..7]),rio('src1.csv').csv.columns(-1..7).to_a) + assert_equal(col_recs(r,[7..8]),rio('src1.csv').csv.columns(-1..8).to_a) + assert_equal(col_recs(r,[7..9]),rio('src1.csv').csv.columns(-1..9).to_a) + + assert_equal(col_recs(r,[7...6]),rio('src1.csv').csv.columns(-1...6).to_a) + assert_equal(col_recs(r,[7...7]),rio('src1.csv').csv.columns(-1...7).to_a) + assert_equal(col_recs(r,[7...8]),rio('src1.csv').csv.columns(-1...8).to_a) + assert_equal(col_recs(r,[7...9]),rio('src1.csv').csv.columns(-1...9).to_a) + + assert_equal(col_recs(r,[7..2]),rio('src1.csv').csv.columns(-1..-6).to_a) + assert_equal(col_recs(r,[7..1]),rio('src1.csv').csv.columns(-1..-7).to_a) + assert_equal(col_recs(r,[7..0]),rio('src1.csv').csv.columns(-1..-8).to_a) + assert_equal(col_recs(r,[]),rio('src1.csv').csv.columns(-1..-9).to_a) + + end + + def col_lines(r,cola) + ans = [] + col_recs(r,cola).each do |recs| + ans << ::CSV::generate_line(recs) + end + ans + end + + def test_lines + if $USE_FASTER_CSV + rio('src1.csv') < @src + r = @records + assert_equal(col_lines(r,[1,2,5]),rio('src1.csv').csv.columns(1,2,5).lines[]) + assert_equal(col_lines(r,(3...6).to_a),rio('src1.csv').csv.columns(3...6).lines[]) + assert_equal(col_lines(r,[3,5]),rio('src1.csv').csv.columns(3...6).skipcolumns(4).lines[]) + assert_equal(col_lines(r,[0,7]),rio('src1.csv').csv.skipcolumns(1..6).lines[]) + assert_equal(["\n","\n","\n","\n"],rio('src1.csv').csv.skipcolumns.lines[]) + assert_equal(col_lines(r,(0...r[0].size).to_a),rio('src1.csv').csv.columns.lines[]) + end + end + + def test_neg_lines + + rio('src1.csv') < @src + r = @records + assert_equal(col_lines(r,[7]),rio('src1.csv').csv.columns(-1).lines[]) + assert_equal(col_lines(r,[6]),rio('src1.csv').csv.columns(-2).lines[]) + assert_equal(col_lines(r,[0..7]),rio('src1.csv').csv.columns(0..-1).lines[]) + assert_equal(col_lines(r,[0..6]),rio('src1.csv').csv.columns(0..-2).lines[]) + assert_equal(col_lines(r,[0...7]),rio('src1.csv').csv.columns(0...-1).lines[]) + assert_equal(col_lines(r,[0...6]),rio('src1.csv').csv.columns(0...-2).lines[]) + + assert_equal(col_lines(r,[3..7]),rio('src1.csv').csv.columns(-5..-1).lines[]) + assert_equal(col_lines(r,[3..6]),rio('src1.csv').csv.columns(-5..-2).lines[]) + assert_equal(col_lines(r,[3...7]),rio('src1.csv').csv.columns(-5...-1).lines[]) + assert_equal(col_lines(r,[3...6]),rio('src1.csv').csv.columns(-5...-2).lines[]) + + assert_equal(col_lines(r,[3..6]),rio('src1.csv').csv.columns(-5..6).lines[]) + assert_equal(col_lines(r,[3..7]),rio('src1.csv').csv.columns(-5..7).lines[]) + assert_equal(col_lines(r,[3..7]),rio('src1.csv').csv.columns(-5..8).lines[]) + assert_equal(col_lines(r,[3..7]),rio('src1.csv').csv.columns(-5..9).lines[]) + + assert_equal(col_lines(r,[3...6]),rio('src1.csv').csv.columns(-5...6).lines[]) + assert_equal(col_lines(r,[3...7]),rio('src1.csv').csv.columns(-5...7).lines[]) + assert_equal(col_lines(r,[3...8]),rio('src1.csv').csv.columns(-5...8).lines[]) + assert_equal(col_lines(r,[3...8]),rio('src1.csv').csv.columns(-5...9).lines[]) + + assert_equal(col_lines(r,[7..6]),rio('src1.csv').csv.columns(-1..6).lines[]) + assert_equal(col_lines(r,[7..7]),rio('src1.csv').csv.columns(-1..7).lines[]) + assert_equal(col_lines(r,[7..8]),rio('src1.csv').csv.columns(-1..8).lines[]) + assert_equal(col_lines(r,[7..9]),rio('src1.csv').csv.columns(-1..9).lines[]) + + assert_equal(col_lines(r,[7...6]),rio('src1.csv').csv.columns(-1...6).lines[]) + assert_equal(col_lines(r,[7...7]),rio('src1.csv').csv.columns(-1...7).lines[]) + assert_equal(col_lines(r,[7...8]),rio('src1.csv').csv.columns(-1...8).lines[]) + assert_equal(col_lines(r,[7...9]),rio('src1.csv').csv.columns(-1...9).lines[]) + + assert_equal(col_lines(r,[7..2]),rio('src1.csv').csv.columns(-1..-6).lines[]) + assert_equal(col_lines(r,[7..1]),rio('src1.csv').csv.columns(-1..-7).lines[]) + assert_equal(col_lines(r,[7..0]),rio('src1.csv').csv.columns(-1..-8).lines[]) + assert_equal(col_lines(r,[]),rio('src1.csv').csv.columns(-1..-9).lines[]) + + end + + def col_rows(r,cola) + ans = [] + col_recs(r,cola).each_with_index do |recs,i| + #p recs + if $USE_FASTER_CSV + ans << ::CSV::Row.new(cola.map{|n| r[0][n]},recs,i==0) + else + h = {} + recs.each_with_index do |rec,n| + #p rec,n + h["Col#{cola[n]}"] = rec + end + ans << h + end + end + first_row = ($USE_FASTER_CSV ? 1 : 0) + ans[first_row,r.size-first_row] + end + + def test_rows + rio('src1.csv') < @src + r = @records + assert_equal(col_rows(r,[1,2,5]),rio('src1.csv').csv.columns(1,2,5).rows[]) + assert_equal(col_rows(r,(3...6).to_a),rio('src1.csv').csv.columns(3...6).rows[]) + assert_equal(col_rows(r,[3,5]),rio('src1.csv').csv.columns(3...6).skipcolumns(4).rows[]) + assert_equal(col_rows(r,[0,7]),rio('src1.csv').csv.skipcolumns(1..6).rows[]) + assert_equal(col_rows(r,[]),rio('src1.csv').csv.skipcolumns(3...8,1,0..4).rows[]) + assert_equal(col_rows(r,[]),rio('src1.csv').csv.skipcolumns.rows[]) + assert_equal(col_rows(r,(0...r[0].size).to_a),rio('src1.csv').csv.columns.rows[]) + end + + def test_neg_rows + + rio('src1.csv') < @src + r = @records + assert_equal(col_rows(r,[7]),rio('src1.csv').csv.columns(-1).rows[]) + assert_equal(col_rows(r,[6]),rio('src1.csv').csv.columns(-2).rows[]) + assert_equal(col_rows(r,(0..7).to_a),rio('src1.csv').csv.columns(0..-1).rows[]) + assert_equal(col_rows(r,(0..6).to_a),rio('src1.csv').csv.columns(0..-2).rows[]) + assert_equal(col_rows(r,(0...7).to_a),rio('src1.csv').csv.columns(0...-1).rows[]) + assert_equal(col_rows(r,(0...6).to_a),rio('src1.csv').csv.columns(0...-2).rows[]) + + assert_equal(col_rows(r,(3..7).to_a),rio('src1.csv').csv.columns(-5..-1).rows[]) + assert_equal(col_rows(r,(3..6).to_a),rio('src1.csv').csv.columns(-5..-2).rows[]) + assert_equal(col_rows(r,(3...7).to_a),rio('src1.csv').csv.columns(-5...-1).rows[]) + assert_equal(col_rows(r,(3...6).to_a),rio('src1.csv').csv.columns(-5...-2).rows[]) + + assert_equal(col_rows(r,(3..6).to_a),rio('src1.csv').csv.columns(-5..6).rows[]) + assert_equal(col_rows(r,(3..7).to_a),rio('src1.csv').csv.columns(-5..7).rows[]) + assert_equal(col_rows(r,(3..7).to_a),rio('src1.csv').csv.columns(-5..8).rows[]) + assert_equal(col_rows(r,(3..7).to_a),rio('src1.csv').csv.columns(-5..9).rows[]) + + assert_equal(col_rows(r,(3...6).to_a),rio('src1.csv').csv.columns(-5...6).rows[]) + assert_equal(col_rows(r,(3...7).to_a),rio('src1.csv').csv.columns(-5...7).rows[]) + assert_equal(col_rows(r,(3...8).to_a),rio('src1.csv').csv.columns(-5...8).rows[]) + assert_equal(col_rows(r,(3...8).to_a),rio('src1.csv').csv.columns(-5...9).rows[]) + + assert_equal(col_rows(r,(7..6).to_a),rio('src1.csv').csv.columns(-1..6).rows[]) + assert_equal(col_rows(r,(7..7).to_a),rio('src1.csv').csv.columns(-1..7).rows[]) + assert_equal(col_rows(r,(7..7).to_a),rio('src1.csv').csv.columns(-1..8).rows[]) + assert_equal(col_rows(r,(7..7).to_a),rio('src1.csv').csv.columns(-1..9).rows[]) + + assert_equal(col_rows(r,(7...6).to_a),rio('src1.csv').csv.columns(-1...6).rows[]) + assert_equal(col_rows(r,(7...7).to_a),rio('src1.csv').csv.columns(-1...7).rows[]) + assert_equal(col_rows(r,(7...8).to_a),rio('src1.csv').csv.columns(-1...8).rows[]) + assert_equal(col_rows(r,(7...8).to_a),rio('src1.csv').csv.columns(-1...9).rows[]) + + assert_equal(col_rows(r,(7..2).to_a),rio('src1.csv').csv.columns(-1..-6).rows[]) + assert_equal(col_rows(r,(7..1).to_a),rio('src1.csv').csv.columns(-1..-7).rows[]) + assert_equal(col_rows(r,(7..0).to_a),rio('src1.csv').csv.columns(-1..-8).rows[]) + assert_equal(col_rows(r,[]),rio('src1.csv').csv.columns(-1..-9).rows[]) + + end + + + end