iostreams 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/Rakefile +7 -7
  4. data/lib/io_streams/builder.rb +4 -3
  5. data/lib/io_streams/bzip2/reader.rb +1 -1
  6. data/lib/io_streams/bzip2/writer.rb +1 -1
  7. data/lib/io_streams/deprecated.rb +2 -3
  8. data/lib/io_streams/encode/reader.rb +5 -8
  9. data/lib/io_streams/encode/writer.rb +1 -1
  10. data/lib/io_streams/io_streams.rb +5 -2
  11. data/lib/io_streams/line/reader.rb +2 -1
  12. data/lib/io_streams/path.rb +4 -4
  13. data/lib/io_streams/paths/http.rb +8 -10
  14. data/lib/io_streams/paths/matcher.rb +10 -11
  15. data/lib/io_streams/paths/s3.rb +6 -6
  16. data/lib/io_streams/paths/sftp.rb +38 -23
  17. data/lib/io_streams/pgp.rb +45 -35
  18. data/lib/io_streams/pgp/reader.rb +4 -6
  19. data/lib/io_streams/pgp/writer.rb +1 -2
  20. data/lib/io_streams/reader.rb +2 -2
  21. data/lib/io_streams/record/writer.rb +2 -4
  22. data/lib/io_streams/row/writer.rb +3 -5
  23. data/lib/io_streams/stream.rb +6 -6
  24. data/lib/io_streams/symmetric_encryption/reader.rb +1 -3
  25. data/lib/io_streams/symmetric_encryption/writer.rb +2 -6
  26. data/lib/io_streams/tabular.rb +12 -10
  27. data/lib/io_streams/tabular/header.rb +4 -4
  28. data/lib/io_streams/tabular/parser/array.rb +2 -4
  29. data/lib/io_streams/tabular/parser/csv.rb +3 -5
  30. data/lib/io_streams/tabular/parser/fixed.rb +4 -3
  31. data/lib/io_streams/tabular/parser/hash.rb +2 -4
  32. data/lib/io_streams/tabular/parser/json.rb +2 -4
  33. data/lib/io_streams/tabular/parser/psv.rb +5 -7
  34. data/lib/io_streams/tabular/utility/csv_row.rb +9 -17
  35. data/lib/io_streams/utils.rb +3 -3
  36. data/lib/io_streams/utils/reliable_http.rb +98 -0
  37. data/lib/io_streams/version.rb +1 -1
  38. data/lib/io_streams/writer.rb +1 -1
  39. data/lib/io_streams/xlsx/reader.rb +5 -5
  40. data/lib/io_streams/zip/reader.rb +1 -1
  41. data/lib/io_streams/zip/writer.rb +2 -2
  42. data/lib/iostreams.rb +34 -34
  43. data/test/builder_test.rb +74 -74
  44. data/test/bzip2_reader_test.rb +8 -13
  45. data/test/bzip2_writer_test.rb +8 -9
  46. data/test/deprecated_test.rb +25 -29
  47. data/test/encode_reader_test.rb +14 -18
  48. data/test/encode_writer_test.rb +29 -30
  49. data/test/gzip_reader_test.rb +8 -13
  50. data/test/gzip_writer_test.rb +10 -11
  51. data/test/io_streams_test.rb +35 -35
  52. data/test/line_reader_test.rb +35 -39
  53. data/test/line_writer_test.rb +8 -9
  54. data/test/minimal_file_reader.rb +1 -1
  55. data/test/path_test.rb +24 -24
  56. data/test/paths/file_test.rb +42 -42
  57. data/test/paths/http_test.rb +5 -5
  58. data/test/paths/matcher_test.rb +11 -12
  59. data/test/paths/s3_test.rb +44 -46
  60. data/test/paths/sftp_test.rb +18 -18
  61. data/test/pgp_reader_test.rb +13 -15
  62. data/test/pgp_test.rb +43 -44
  63. data/test/pgp_writer_test.rb +27 -28
  64. data/test/record_reader_test.rb +9 -10
  65. data/test/record_writer_test.rb +10 -11
  66. data/test/row_reader_test.rb +5 -6
  67. data/test/row_writer_test.rb +7 -8
  68. data/test/stream_test.rb +60 -62
  69. data/test/tabular_test.rb +111 -111
  70. data/test/test_helper.rb +22 -22
  71. data/test/utils_test.rb +7 -7
  72. data/test/xlsx_reader_test.rb +12 -12
  73. data/test/zip_reader_test.rb +14 -21
  74. data/test/zip_writer_test.rb +10 -10
  75. metadata +4 -3
@@ -1,13 +1,13 @@
1
- require_relative 'test_helper'
1
+ require_relative "test_helper"
2
2
 
3
3
  class RecordReaderTest < Minitest::Test
4
4
  describe IOStreams::Record::Reader do
5
5
  let :file_name do
6
- File.join(File.dirname(__FILE__), 'files', 'test.csv')
6
+ File.join(File.dirname(__FILE__), "files", "test.csv")
7
7
  end
8
8
 
9
9
  let :json_file_name do
10
- File.join(File.dirname(__FILE__), 'files', 'test.json')
10
+ File.join(File.dirname(__FILE__), "files", "test.json")
11
11
  end
12
12
 
13
13
  let :csv_rows do
@@ -20,8 +20,8 @@ class RecordReaderTest < Minitest::Test
20
20
  rows.collect { |row| header.zip(row).to_h }
21
21
  end
22
22
 
23
- describe '#each' do
24
- it 'csv file' do
23
+ describe "#each" do
24
+ it "csv file" do
25
25
  records = []
26
26
  IOStreams::Record::Reader.file(file_name, cleanse_header: false) do |io|
27
27
  io.each { |row| records << row }
@@ -29,7 +29,7 @@ class RecordReaderTest < Minitest::Test
29
29
  assert_equal expected, records
30
30
  end
31
31
 
32
- it 'json file' do
32
+ it "json file" do
33
33
  records = []
34
34
  IOStreams::Record::Reader.file(json_file_name, cleanse_header: false, format: :json) do |input|
35
35
  input.each { |row| records << row }
@@ -37,7 +37,7 @@ class RecordReaderTest < Minitest::Test
37
37
  assert_equal expected, records
38
38
  end
39
39
 
40
- it 'stream' do
40
+ it "stream" do
41
41
  rows = []
42
42
  IOStreams::Line::Reader.file(file_name) do |file|
43
43
  IOStreams::Record::Reader.stream(file, cleanse_header: false) do |io|
@@ -48,14 +48,13 @@ class RecordReaderTest < Minitest::Test
48
48
  end
49
49
  end
50
50
 
51
- describe '#collect' do
52
- it 'json file' do
51
+ describe "#collect" do
52
+ it "json file" do
53
53
  records = IOStreams::Record::Reader.file(json_file_name, format: :json) do |input|
54
54
  input.collect { |record| record["state"] }
55
55
  end
56
56
  assert_equal expected.collect { |record| record["state"] }, records
57
57
  end
58
58
  end
59
-
60
59
  end
61
60
  end
@@ -1,14 +1,14 @@
1
- require_relative 'test_helper'
2
- require 'csv'
1
+ require_relative "test_helper"
2
+ require "csv"
3
3
 
4
4
  class RecordWriterTest < Minitest::Test
5
5
  describe IOStreams::Record::Writer do
6
6
  let :csv_file_name do
7
- File.join(File.dirname(__FILE__), 'files', 'test.csv')
7
+ File.join(File.dirname(__FILE__), "files", "test.csv")
8
8
  end
9
9
 
10
10
  let :json_file_name do
11
- File.join(File.dirname(__FILE__), 'files', 'test.json')
11
+ File.join(File.dirname(__FILE__), "files", "test.json")
12
12
  end
13
13
 
14
14
  let :raw_csv_data do
@@ -30,7 +30,7 @@ class RecordWriterTest < Minitest::Test
30
30
  end
31
31
 
32
32
  let :temp_file do
33
- Tempfile.new('iostreams')
33
+ Tempfile.new("iostreams")
34
34
  end
35
35
 
36
36
  let :file_name do
@@ -41,8 +41,8 @@ class RecordWriterTest < Minitest::Test
41
41
  temp_file.delete
42
42
  end
43
43
 
44
- describe '#<<' do
45
- it 'file' do
44
+ describe "#<<" do
45
+ it "file" do
46
46
  IOStreams::Record::Writer.file(file_name) do |io|
47
47
  inputs.each { |hash| io << hash }
48
48
  end
@@ -50,15 +50,15 @@ class RecordWriterTest < Minitest::Test
50
50
  assert_equal raw_csv_data, result
51
51
  end
52
52
 
53
- it 'json file' do
54
- IOStreams::Record::Writer.file(file_name, file_name: 'abc.json') do |io|
53
+ it "json file" do
54
+ IOStreams::Record::Writer.file(file_name, file_name: "abc.json") do |io|
55
55
  inputs.each { |hash| io << hash }
56
56
  end
57
57
  result = File.read(file_name)
58
58
  assert_equal raw_json_data, result
59
59
  end
60
60
 
61
- it 'stream' do
61
+ it "stream" do
62
62
  io_string = StringIO.new
63
63
  IOStreams::Line::Writer.stream(io_string) do |io|
64
64
  IOStreams::Record::Writer.stream(io) do |stream|
@@ -68,6 +68,5 @@ class RecordWriterTest < Minitest::Test
68
68
  assert_equal raw_csv_data, io_string.string
69
69
  end
70
70
  end
71
-
72
71
  end
73
72
  end
@@ -1,17 +1,17 @@
1
- require_relative 'test_helper'
1
+ require_relative "test_helper"
2
2
 
3
3
  class RowReaderTest < Minitest::Test
4
4
  describe IOStreams::Row::Reader do
5
5
  let :file_name do
6
- File.join(File.dirname(__FILE__), 'files', 'test.csv')
6
+ File.join(File.dirname(__FILE__), "files", "test.csv")
7
7
  end
8
8
 
9
9
  let :expected do
10
10
  CSV.read(file_name)
11
11
  end
12
12
 
13
- describe '.open' do
14
- it 'file' do
13
+ describe ".open" do
14
+ it "file" do
15
15
  rows = []
16
16
  count = IOStreams::Row::Reader.file(file_name) do |io|
17
17
  io.each { |row| rows << row }
@@ -20,7 +20,7 @@ class RowReaderTest < Minitest::Test
20
20
  assert_equal expected.size, count
21
21
  end
22
22
 
23
- it 'stream' do
23
+ it "stream" do
24
24
  rows = []
25
25
  count = IOStreams::Line::Reader.file(file_name) do |file|
26
26
  IOStreams::Row::Reader.stream(file) do |io|
@@ -31,6 +31,5 @@ class RowReaderTest < Minitest::Test
31
31
  assert_equal expected.size, count
32
32
  end
33
33
  end
34
-
35
34
  end
36
35
  end
@@ -1,10 +1,10 @@
1
- require_relative 'test_helper'
2
- require 'csv'
1
+ require_relative "test_helper"
2
+ require "csv"
3
3
 
4
4
  class RowWriterTest < Minitest::Test
5
5
  describe IOStreams::Row::Writer do
6
6
  let :csv_file_name do
7
- File.join(File.dirname(__FILE__), 'files', 'test.csv')
7
+ File.join(File.dirname(__FILE__), "files", "test.csv")
8
8
  end
9
9
 
10
10
  let :raw_csv_data do
@@ -16,7 +16,7 @@ class RowWriterTest < Minitest::Test
16
16
  end
17
17
 
18
18
  let :temp_file do
19
- Tempfile.new('iostreams')
19
+ Tempfile.new("iostreams")
20
20
  end
21
21
 
22
22
  let :file_name do
@@ -27,8 +27,8 @@ class RowWriterTest < Minitest::Test
27
27
  temp_file.delete
28
28
  end
29
29
 
30
- describe '.stream' do
31
- it 'file' do
30
+ describe ".stream" do
31
+ it "file" do
32
32
  IOStreams::Row::Writer.file(file_name) do |io|
33
33
  csv_rows.each { |array| io << array }
34
34
  end
@@ -36,7 +36,7 @@ class RowWriterTest < Minitest::Test
36
36
  assert_equal raw_csv_data, result
37
37
  end
38
38
 
39
- it 'streams' do
39
+ it "streams" do
40
40
  io_string = StringIO.new
41
41
  IOStreams::Line::Writer.stream(io_string) do |io|
42
42
  IOStreams::Row::Writer.stream(io) do |stream|
@@ -46,6 +46,5 @@ class RowWriterTest < Minitest::Test
46
46
  assert_equal raw_csv_data, io_string.string
47
47
  end
48
48
  end
49
-
50
49
  end
51
50
  end
@@ -1,9 +1,9 @@
1
- require_relative 'test_helper'
1
+ require_relative "test_helper"
2
2
 
3
3
  class StreamTest < Minitest::Test
4
4
  describe IOStreams::Stream do
5
5
  let :source_file_name do
6
- File.join(__dir__, 'files', 'text.txt')
6
+ File.join(__dir__, "files", "text.txt")
7
7
  end
8
8
 
9
9
  let :data do
@@ -13,66 +13,66 @@ class StreamTest < Minitest::Test
13
13
  let :bad_data do
14
14
  [
15
15
  "New M\xE9xico,NE".b,
16
- 'good line',
16
+ "good line",
17
17
  "New M\xE9xico,\x07SF".b
18
- ].join("\n").encode('BINARY')
18
+ ].join("\n").encode("BINARY")
19
19
  end
20
20
 
21
21
  let :stripped_data do
22
- bad_data.gsub("\xE9".b, '').gsub("\x07", '')
22
+ bad_data.gsub("\xE9".b, "").gsub("\x07", "")
23
23
  end
24
24
 
25
25
  let :multiple_zip_file_name do
26
- File.join(File.dirname(__FILE__), 'files', 'multiple_files.zip')
26
+ File.join(File.dirname(__FILE__), "files", "multiple_files.zip")
27
27
  end
28
28
 
29
29
  let :zip_gz_file_name do
30
- File.join(File.dirname(__FILE__), 'files', 'text.zip.gz')
30
+ File.join(File.dirname(__FILE__), "files", "text.zip.gz")
31
31
  end
32
32
 
33
33
  let :contents_test_txt do
34
- File.read(File.join(File.dirname(__FILE__), 'files', 'text.txt'))
34
+ File.read(File.join(File.dirname(__FILE__), "files", "text.txt"))
35
35
  end
36
36
 
37
37
  let :contents_test_json do
38
- File.read(File.join(File.dirname(__FILE__), 'files', 'test.json'))
38
+ File.read(File.join(File.dirname(__FILE__), "files", "test.json"))
39
39
  end
40
40
 
41
41
  let(:string_io) { StringIO.new(data) }
42
42
  let(:stream) { IOStreams::Stream.new(string_io) }
43
43
 
44
- describe '.reader' do
45
- it 'reads a zip file' do
46
- File.open(multiple_zip_file_name, 'rb') do |io|
44
+ describe ".reader" do
45
+ it "reads a zip file" do
46
+ File.open(multiple_zip_file_name, "rb") do |io|
47
47
  result = IOStreams::Stream.new(io).
48
- file_name(multiple_zip_file_name).
49
- option(:zip, entry_file_name: 'test.json').
50
- read
48
+ file_name(multiple_zip_file_name).
49
+ option(:zip, entry_file_name: "test.json").
50
+ read
51
51
  assert_equal contents_test_json, result
52
52
  end
53
53
  end
54
54
 
55
- it 'reads a zip file from within a gz file' do
56
- File.open(zip_gz_file_name, 'rb') do |io|
55
+ it "reads a zip file from within a gz file" do
56
+ File.open(zip_gz_file_name, "rb") do |io|
57
57
  result = IOStreams::Stream.new(io).
58
- file_name(zip_gz_file_name).
59
- read
58
+ file_name(zip_gz_file_name).
59
+ read
60
60
  assert_equal contents_test_txt, result
61
61
  end
62
62
  end
63
63
  end
64
64
 
65
- describe '.line_reader' do
65
+ describe ".line_reader" do
66
66
  end
67
67
 
68
- describe '.row_reader' do
68
+ describe ".row_reader" do
69
69
  end
70
70
 
71
- describe '.record_reader' do
71
+ describe ".record_reader" do
72
72
  end
73
73
 
74
- describe '.each_line' do
75
- it 'returns a line at a time' do
74
+ describe ".each_line" do
75
+ it "returns a line at a time" do
76
76
  lines = []
77
77
  stream.stream(:none)
78
78
  count = stream.each(:line) { |line| lines << line }
@@ -80,26 +80,26 @@ class StreamTest < Minitest::Test
80
80
  assert_equal data.lines.count, count
81
81
  end
82
82
 
83
- it 'strips non-printable characters' do
83
+ it "strips non-printable characters" do
84
84
  input = StringIO.new(bad_data)
85
85
  lines = []
86
86
  stream = IOStreams::Stream.new(input)
87
- stream.stream(:encode, encoding: 'UTF-8', cleaner: :printable, replace: '')
87
+ stream.stream(:encode, encoding: "UTF-8", cleaner: :printable, replace: "")
88
88
  count = stream.each(:line) { |line| lines << line }
89
89
  assert_equal stripped_data.lines.map(&:strip), lines
90
90
  assert_equal stripped_data.lines.count, count
91
91
  end
92
92
  end
93
93
 
94
- describe '.each row' do
94
+ describe ".each row" do
95
95
  end
96
96
 
97
- describe '.each record' do
97
+ describe ".each record" do
98
98
  end
99
99
 
100
- describe '#writer' do
100
+ describe "#writer" do
101
101
  describe "#write" do
102
- it 'one block' do
102
+ it "one block" do
103
103
  io = StringIO.new
104
104
  IOStreams::Stream.new(io).writer do |stream|
105
105
  stream.write("Hello World")
@@ -107,7 +107,7 @@ class StreamTest < Minitest::Test
107
107
  assert_equal "Hello World", io.string
108
108
  end
109
109
 
110
- it 'multiple blocks' do
110
+ it "multiple blocks" do
111
111
  io = StringIO.new
112
112
  IOStreams::Stream.new(io).writer do |stream|
113
113
  stream.write("He")
@@ -118,7 +118,7 @@ class StreamTest < Minitest::Test
118
118
  assert_equal "Hello World", io.string
119
119
  end
120
120
 
121
- it 'empty blocks' do
121
+ it "empty blocks" do
122
122
  io = StringIO.new
123
123
  IOStreams::Stream.new(io).writer do |stream|
124
124
  stream.write("")
@@ -133,7 +133,7 @@ class StreamTest < Minitest::Test
133
133
  assert_equal "Hello World", io.string
134
134
  end
135
135
 
136
- it 'nil blocks' do
136
+ it "nil blocks" do
137
137
  io = StringIO.new
138
138
  IOStreams::Stream.new(io).writer do |stream|
139
139
  stream.write(nil)
@@ -150,7 +150,7 @@ class StreamTest < Minitest::Test
150
150
  end
151
151
 
152
152
  describe "#<<" do
153
- it 'one block' do
153
+ it "one block" do
154
154
  io = StringIO.new
155
155
  IOStreams::Stream.new(io).writer do |stream|
156
156
  stream << "Hello World"
@@ -158,7 +158,7 @@ class StreamTest < Minitest::Test
158
158
  assert_equal "Hello World", io.string
159
159
  end
160
160
 
161
- it 'multiple blocks' do
161
+ it "multiple blocks" do
162
162
  io = StringIO.new
163
163
  IOStreams::Stream.new(io).writer do |stream|
164
164
  stream << "He"
@@ -167,7 +167,7 @@ class StreamTest < Minitest::Test
167
167
  assert_equal "Hello World", io.string
168
168
  end
169
169
 
170
- it 'empty blocks' do
170
+ it "empty blocks" do
171
171
  io = StringIO.new
172
172
  IOStreams::Stream.new(io).writer do |stream|
173
173
  stream << ""
@@ -178,7 +178,7 @@ class StreamTest < Minitest::Test
178
178
  assert_equal "Hello World", io.string
179
179
  end
180
180
 
181
- it 'nil blocks' do
181
+ it "nil blocks" do
182
182
  io = StringIO.new
183
183
  IOStreams::Stream.new(io).writer do |stream|
184
184
  stream << nil
@@ -191,9 +191,9 @@ class StreamTest < Minitest::Test
191
191
  end
192
192
  end
193
193
 
194
- describe '#writer(:line)' do
194
+ describe "#writer(:line)" do
195
195
  describe "#write" do
196
- it 'one block' do
196
+ it "one block" do
197
197
  io = StringIO.new
198
198
  IOStreams::Stream.new(io).writer(:line) do |stream|
199
199
  stream.write("Hello World")
@@ -201,7 +201,7 @@ class StreamTest < Minitest::Test
201
201
  assert_equal "Hello World\n", io.string
202
202
  end
203
203
 
204
- it 'multiple blocks' do
204
+ it "multiple blocks" do
205
205
  io = StringIO.new
206
206
  IOStreams::Stream.new(io).writer(:line) do |stream|
207
207
  stream.write("He")
@@ -212,7 +212,7 @@ class StreamTest < Minitest::Test
212
212
  assert_equal "He\nl\nlo \nWorld\n", io.string
213
213
  end
214
214
 
215
- it 'empty blocks' do
215
+ it "empty blocks" do
216
216
  io = StringIO.new
217
217
  IOStreams::Stream.new(io).writer(:line) do |stream|
218
218
  stream.write("")
@@ -227,7 +227,7 @@ class StreamTest < Minitest::Test
227
227
  assert_equal "\nHe\n\nl\n\nlo \nWorld\n\n", io.string, io.string.inspect
228
228
  end
229
229
 
230
- it 'nil blocks' do
230
+ it "nil blocks" do
231
231
  io = StringIO.new
232
232
  IOStreams::Stream.new(io).writer(:line) do |stream|
233
233
  stream.write(nil)
@@ -244,7 +244,7 @@ class StreamTest < Minitest::Test
244
244
  end
245
245
 
246
246
  describe "#<<" do
247
- it 'one block' do
247
+ it "one block" do
248
248
  io = StringIO.new
249
249
  IOStreams::Stream.new(io).writer(:line) do |stream|
250
250
  stream << "Hello World"
@@ -252,7 +252,7 @@ class StreamTest < Minitest::Test
252
252
  assert_equal "Hello World\n", io.string
253
253
  end
254
254
 
255
- it 'multiple blocks' do
255
+ it "multiple blocks" do
256
256
  io = StringIO.new
257
257
  IOStreams::Stream.new(io).writer(:line) do |stream|
258
258
  stream << "He"
@@ -261,7 +261,7 @@ class StreamTest < Minitest::Test
261
261
  assert_equal "He\nl\nlo \nWorld\n", io.string
262
262
  end
263
263
 
264
- it 'empty blocks' do
264
+ it "empty blocks" do
265
265
  io = StringIO.new
266
266
  IOStreams::Stream.new(io).writer(:line) do |stream|
267
267
  stream << ""
@@ -272,7 +272,7 @@ class StreamTest < Minitest::Test
272
272
  assert_equal "\nHe\n\nl\n\nlo \nWorld\n\n", io.string
273
273
  end
274
274
 
275
- it 'nil blocks' do
275
+ it "nil blocks" do
276
276
  io = StringIO.new
277
277
  IOStreams::Stream.new(io).writer(:line) do |stream|
278
278
  stream << nil
@@ -285,7 +285,7 @@ class StreamTest < Minitest::Test
285
285
  end
286
286
 
287
287
  describe "line writers within line writers" do
288
- it 'uses existing line writer' do
288
+ it "uses existing line writer" do
289
289
  io = StringIO.new
290
290
  IOStreams::Stream.new(io).writer(:line) do |stream|
291
291
  stream.write("Before")
@@ -300,9 +300,9 @@ class StreamTest < Minitest::Test
300
300
  end
301
301
  end
302
302
 
303
- describe '#writer(:array)' do
303
+ describe "#writer(:array)" do
304
304
  describe "#write" do
305
- it 'one block' do
305
+ it "one block" do
306
306
  io = StringIO.new
307
307
  IOStreams::Stream.new(io).writer(:array) do |stream|
308
308
  stream << %w[Hello World]
@@ -310,7 +310,7 @@ class StreamTest < Minitest::Test
310
310
  assert_equal "Hello,World\n", io.string
311
311
  end
312
312
 
313
- it 'multiple blocks' do
313
+ it "multiple blocks" do
314
314
  io = StringIO.new
315
315
  IOStreams::Stream.new(io).writer(:array) do |stream|
316
316
  stream << %w[He]
@@ -321,7 +321,7 @@ class StreamTest < Minitest::Test
321
321
  assert_equal "He\nl,lo ,World\nHe,\"\",l,\"\"\nlo ,World\n", io.string, io.string.inspect
322
322
  end
323
323
 
324
- it 'empty blocks' do
324
+ it "empty blocks" do
325
325
  # skip "TODO"
326
326
  io = StringIO.new
327
327
  IOStreams::Stream.new(io).writer(:array) do |stream|
@@ -335,7 +335,7 @@ class StreamTest < Minitest::Test
335
335
  assert_equal "He\n\nl,lo ,World\nHe,\"\",l,\"\"\nlo ,World\n\n", io.string, io.string.inspect
336
336
  end
337
337
 
338
- it 'nil values' do
338
+ it "nil values" do
339
339
  io = StringIO.new
340
340
  IOStreams::Stream.new(io).writer(:array) do |stream|
341
341
  stream << %w[He]
@@ -346,7 +346,7 @@ class StreamTest < Minitest::Test
346
346
  assert_equal "He\nl,lo ,World\nHe,,l,\nlo ,World\n", io.string, io.string.inspect
347
347
  end
348
348
 
349
- it 'empty leading array' do
349
+ it "empty leading array" do
350
350
  skip "TODO"
351
351
  io = StringIO.new
352
352
  IOStreams::Stream.new(io).writer(:array) do |stream|
@@ -362,26 +362,26 @@ class StreamTest < Minitest::Test
362
362
  end
363
363
  end
364
364
 
365
- describe '#writer(:hash)' do
365
+ describe "#writer(:hash)" do
366
366
  describe "#write" do
367
- it 'one block' do
367
+ it "one block" do
368
368
  io = StringIO.new
369
369
  IOStreams::Stream.new(io).writer(:hash) do |stream|
370
370
  stream << {first_name: "Jack", last_name: "Johnson"}
371
371
  end
372
- assert_equal "first_name,last_name\nJack,Johnson\n", io.string, io.string.inspect
372
+ assert_equal "first_name,last_name\nJack,Johnson\n", io.string, io.string.inspect
373
373
  end
374
374
 
375
- it 'multiple blocks' do
375
+ it "multiple blocks" do
376
376
  io = StringIO.new
377
377
  IOStreams::Stream.new(io).writer(:hash) do |stream|
378
378
  stream << {first_name: "Jack", last_name: "Johnson"}
379
379
  stream << {first_name: "Able", last_name: "Smith"}
380
380
  end
381
- assert_equal "first_name,last_name\nJack,Johnson\nAble,Smith\n", io.string, io.string.inspect
381
+ assert_equal "first_name,last_name\nJack,Johnson\nAble,Smith\n", io.string, io.string.inspect
382
382
  end
383
383
 
384
- it 'empty hashes' do
384
+ it "empty hashes" do
385
385
  io = StringIO.new
386
386
  IOStreams::Stream.new(io).writer(:hash) do |stream|
387
387
  stream << {first_name: "Jack", last_name: "Johnson"}
@@ -391,7 +391,7 @@ class StreamTest < Minitest::Test
391
391
  assert_equal "first_name,last_name\nJack,Johnson\n\n{:first_name=>\"Able\", :last_name=>\"Smith\"}\n\n", io.string, io.string.inspect
392
392
  end
393
393
 
394
- it 'nil values' do
394
+ it "nil values" do
395
395
  skip "TODO"
396
396
  io = StringIO.new
397
397
  IOStreams::Stream.new(io).writer(:hash) do |stream|
@@ -402,9 +402,7 @@ class StreamTest < Minitest::Test
402
402
  end
403
403
  assert_equal "first_name,last_name\nJack,Johnson\n\n{:first_name=>\"Able\", :last_name=>\"Smith\"}\n\n", io.string, io.string.inspect
404
404
  end
405
-
406
405
  end
407
406
  end
408
-
409
407
  end
410
408
  end