iostreams 1.1.0 → 1.1.1

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.
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