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