csvreader 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,25 +2,22 @@
2
2
 
3
3
  ###
4
4
  # to run use
5
- # ruby -I ./lib -I ./test test/test_parser_rfc4180.rb
5
+ # ruby -I ./lib -I ./test test/test_parser_strict.rb
6
6
 
7
7
 
8
8
  require 'helper'
9
9
 
10
- class TestParserRfc4180 < MiniTest::Test
10
+ class TestParserStrict < MiniTest::Test
11
11
 
12
- def setup
13
- CsvReader::Parser.logger.level = :debug ## turn on "global" logging - move to helper - why? why not?
14
- end
15
12
 
16
13
  def parser
17
- CsvReader::Parser::RFC4180
14
+ CsvReader::Parser::STRICT
18
15
  end
19
16
 
20
17
 
21
- def test_parser_rfc4180
22
- pp CsvReader::Parser::RFC4180
23
- pp CsvReader::Parser.rfc4180
18
+ def test_parser_strict
19
+ pp CsvReader::Parser::STRICT
20
+ pp CsvReader::Parser.strict
24
21
  assert true
25
22
  end
26
23
 
@@ -65,31 +62,31 @@ end
65
62
  def test_parse_empties
66
63
  assert_equal [["","",""],["","",""]], parser.parse( %Q{"","",""\n,,} )
67
64
 
68
- parser.config[:quoted_empty] = nil
65
+ parser.config[:quoted_empty_null] = true
69
66
 
70
- assert_nil parser.config[:quoted_empty]
71
- assert_equal "", parser.config[:unquoted_empty]
67
+ assert_equal true, parser.config[:quoted_empty_null]
68
+ assert_equal false, parser.config[:unquoted_empty_null]
72
69
 
73
70
  assert_equal [[nil,nil,nil," "],["","",""," "]], parser.parse( %Q{"","",""," "\n,,, } )
74
71
 
75
72
 
76
- parser.config[:unquoted_empty] = nil
73
+ parser.config[:unquoted_empty_null] = true
77
74
 
78
- assert_nil parser.config[:quoted_empty]
79
- assert_nil parser.config[:unquoted_empty]
75
+ assert_equal true, parser.config[:quoted_empty_null]
76
+ assert_equal true, parser.config[:unquoted_empty_null]
80
77
 
81
78
  assert_equal [[nil,nil,nil," "],[nil,nil,nil," "]], parser.parse( %Q{"","",""," "\n,,, } )
82
79
 
83
80
 
84
81
  ## reset to defaults
85
- parser.config[:quoted_empty] = ""
86
- parser.config[:unquoted_empty] = ""
82
+ parser.config[:quoted_empty_null] = false
83
+ parser.config[:unquoted_empty_null] = false
87
84
 
88
- assert_equal "", parser.config[:quoted_empty]
89
- assert_equal "", parser.config[:unquoted_empty]
85
+ assert_equal false, parser.config[:quoted_empty_null]
86
+ assert_equal false, parser.config[:unquoted_empty_null]
90
87
 
91
88
  assert_equal [["","",""],["","",""]], parser.parse( %Q{"","",""\n,,} )
92
89
  end
93
90
 
94
91
 
95
- end # class TestParserRfc4180
92
+ end # class TestParserStrict
@@ -0,0 +1,48 @@
1
+ # encoding: utf-8
2
+
3
+ ###
4
+ # to run use
5
+ # ruby -I ./lib -I ./test test/test_parser_tab.rb
6
+
7
+
8
+ require 'helper'
9
+
10
+ class TestParserTab < MiniTest::Test
11
+
12
+
13
+ def parser
14
+ parser = CsvReader::Parser::TAB
15
+ end
16
+
17
+
18
+ def test_parser_tab
19
+ pp CsvReader::Parser::TAB
20
+ pp CsvReader::Parser.tab
21
+ assert true
22
+ end
23
+
24
+ def test_parse
25
+ records = [["a", "b", "c"],
26
+ ["1", "2", "3"],
27
+ ["4", "5", "6"]]
28
+
29
+ ## don't care about newlines (\r\n)
30
+ assert_equal records, parser.parse( "a\tb\tc\n1\t2\t3\n4\t5\t6" )
31
+ assert_equal records, parser.parse( "a\tb\tc\n1\t2\t3\n4\t5\t6\n" )
32
+ assert_equal records, parser.parse( "a\tb\tc\r\n1\t2\t3\r\n4\t5\t6\r\n" )
33
+ end
34
+
35
+ def test_parse_empties
36
+ # note: trailing empty fields get (auto-)trimmed !!!!!!!
37
+ assert_equal [[]], parser.parse( "\t\t" )
38
+ assert_equal [[]], parser.parse( "\t\t\t\t" )
39
+ assert_equal [["1"]], parser.parse( "1\t\t" )
40
+ assert_equal [["1"]], parser.parse( "1\t\t\t\t" )
41
+ assert_equal [["","","3"]], parser.parse( "\t\t3" )
42
+ assert_equal [["","","","","5"]], parser.parse( "\t\t\t\t5" )
43
+
44
+ assert_equal [], parser.parse( "" )
45
+ end
46
+
47
+
48
+ end # class TestParserTab
data/test/test_reader.rb CHANGED
@@ -9,22 +9,6 @@ require 'helper'
9
9
 
10
10
  class TestReader < MiniTest::Test
11
11
 
12
- def setup
13
- CsvReader::Parser.logger.level = :debug ## turn on "global" logging - move to helper - why? why not?
14
- end
15
-
16
-
17
- def test_read
18
- puts "== read: beer.csv:"
19
- rows = CsvReader.read( "#{CsvReader.test_data_dir}/beer.csv" )
20
- pp rows
21
-
22
- rows.each do |row|
23
- pp row
24
- end
25
- puts " #{rows.size} rows"
26
- assert_equal 7, rows.size ## note: include header row in count
27
- end
28
12
 
29
13
 
30
14
 
@@ -54,6 +38,21 @@ TXT
54
38
  assert_equal ['Augustiner Bräu München', 'München', 'Edelstoff', '5.6%'], row
55
39
  end
56
40
 
41
+
42
+
43
+ def test_read
44
+ puts "== read: beer.csv:"
45
+ rows = CsvReader.read( "#{CsvReader.test_data_dir}/beer.csv" )
46
+ pp rows
47
+
48
+ rows.each do |row|
49
+ pp row
50
+ end
51
+ puts " #{rows.size} rows"
52
+ assert_equal 7, rows.size ## note: include header row in count
53
+ end
54
+
55
+
57
56
  def test_header
58
57
  puts "== header: beer.csv:"
59
58
  header = CsvReader.header( "#{CsvReader.test_data_dir}/beer.csv" )
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: csvreader
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-25 00:00:00.000000000 Z
11
+ date: 2018-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rdoc
@@ -57,7 +57,11 @@ files:
57
57
  - lib/csvreader.rb
58
58
  - lib/csvreader/buffer.rb
59
59
  - lib/csvreader/parser.rb
60
+ - lib/csvreader/parser_std.rb
61
+ - lib/csvreader/parser_strict.rb
62
+ - lib/csvreader/parser_tab.rb
60
63
  - lib/csvreader/reader.rb
64
+ - lib/csvreader/reader_hash.rb
61
65
  - lib/csvreader/version.rb
62
66
  - test/data/beer.csv
63
67
  - test/data/beer11.csv
@@ -65,7 +69,9 @@ files:
65
69
  - test/helper.rb
66
70
  - test/test_parser.rb
67
71
  - test/test_parser_formats.rb
68
- - test/test_parser_rfc4180.rb
72
+ - test/test_parser_java.rb
73
+ - test/test_parser_strict.rb
74
+ - test/test_parser_tab.rb
69
75
  - test/test_reader.rb
70
76
  - test/test_reader_hash.rb
71
77
  homepage: https://github.com/csv11/csvreader