stream 0.5.2 → 0.5.3

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.
@@ -1,5 +1,2 @@
1
- require "codeclimate-test-reporter"
2
- CodeClimate::TestReporter.start
3
-
4
1
  require 'rubygems'
5
2
  require 'test/unit'
@@ -2,85 +2,89 @@ require 'test/unit'
2
2
  require 'stream'
3
3
 
4
4
  module StreamExamples
5
- def new_collection_stream; (1..5).create_stream; end
5
+ def new_collection_stream
6
+ (1..5).create_stream;
7
+ end
6
8
 
7
9
  # a stream which is aquivalent to new_collection_stream
8
10
  def new_implicit_stream
9
- s = Stream::ImplicitStream.new { |s|
10
- x = 0
11
- s.at_beginning_proc = proc {x < 1}
12
- s.at_end_proc = proc {x == 5}
13
- s.forward_proc = proc {x += 1 }
14
- s.backward_proc = proc {y = x; x -= 1; y }
11
+ Stream::ImplicitStream.new { |s|
12
+ x = 0
13
+ s.at_beginning_proc = proc { x < 1 }
14
+ s.at_end_proc = proc { x == 5 }
15
+ s.forward_proc = proc { x += 1 }
16
+ s.backward_proc = proc { y = x; x -= 1; y }
17
+ s.set_to_begin_proc = proc { x = 0 }
18
+ s.set_to_end_proc = proc { x = 5 }
15
19
  }
16
20
  end
17
21
 
18
22
  def filtered_streams
19
- [
20
- new_collection_stream.filtered { |x| true },
21
- new_collection_stream.filtered { |x| false },
22
- new_collection_stream.filtered { |x| x > 3 },
23
- new_collection_stream.filtered { |x| x % 2 == 0 },
24
- new_collection_stream.filtered { |x| x % 2 == 0 }.filtered { |x| x > 3 }
25
- ]
23
+ [
24
+ new_collection_stream.filtered { |x| true },
25
+ new_collection_stream.filtered { |x| false },
26
+ new_collection_stream.filtered { |x| x > 3 },
27
+ new_collection_stream.filtered { |x| x % 2 == 0 },
28
+ new_collection_stream.filtered { |x| x % 2 == 0 }.filtered { |x| x > 3 }
29
+ ]
26
30
  end
27
31
 
28
32
  def new_concatenated_stream
29
- [1, 2, 3].create_stream.concatenate_collected { |i|
30
- [i,-i].create_stream
31
- }
33
+ [1, 2, 3].create_stream.concatenate_collected { |i|
34
+ [i, -i].create_stream
35
+ }
32
36
  end
33
37
 
34
38
  def all_examples
35
- [
36
- new_collection_stream,
37
- new_implicit_stream,
38
- new_collection_stream.remove_first,
39
- new_collection_stream.remove_last,
40
- new_collection_stream.remove_first.remove_last,
41
- Stream::WrappedStream.new(new_collection_stream),
42
- Stream::IntervalStream.new(6),
43
- Stream::IntervalStream.new(1),
44
- new_collection_stream.collect { |x| x * 2 },
45
-
46
- # Some concatenated streams
47
- Stream::EmptyStream.instance.concatenate,
48
- new_concatenated_stream,
49
- # concatenated inside concatenated
50
- new_concatenated_stream + new_concatenated_stream,
51
- new_collection_stream + Stream::EmptyStream.instance,
52
- Stream::EmptyStream.instance + new_collection_stream
53
- ].concat(filtered_streams)
39
+ [
40
+ new_collection_stream,
41
+ new_implicit_stream,
42
+ new_collection_stream.remove_first,
43
+ new_collection_stream.remove_last,
44
+ new_collection_stream.remove_first.remove_last,
45
+ Stream::WrappedStream.new(new_collection_stream),
46
+ Stream::IntervalStream.new(6),
47
+ Stream::IntervalStream.new(1),
48
+ new_collection_stream.collect { |x| x * 2 },
49
+
50
+ # Some concatenated streams
51
+ Stream::EmptyStream.instance.concatenate,
52
+ new_concatenated_stream,
53
+ # concatenated inside concatenated
54
+ new_concatenated_stream + new_concatenated_stream,
55
+ new_collection_stream + Stream::EmptyStream.instance,
56
+ Stream::EmptyStream.instance + new_collection_stream
57
+ ].concat(filtered_streams)
54
58
  end
55
59
 
56
60
  private
57
61
 
58
62
  def standard_tests_for(s)
59
- arrayStream = s.to_a.create_stream # A collection stream that should be OK
60
- assert_equal(s.to_a, arrayStream.to_a)
63
+ array_stream = s.to_a.create_stream # A collection stream that should be OK
64
+ assert_equal(s.to_a, array_stream.to_a)
61
65
  # Tests at end of stream
62
- assert_equal(s.at_end?, arrayStream.at_end?)
63
- assert_raises(Stream::EndOfStreamException) {s.forward}
64
- assert_equal(s.at_beginning?, arrayStream.at_beginning?)
65
- assert_equal(s.peek,s)
66
- unless arrayStream.at_beginning?
67
- assert_equal(arrayStream.current,s.current)
68
- assert_equal(arrayStream.backward, s.backward)
66
+ assert_equal(s.at_end?, array_stream.at_end?)
67
+ assert_raises(Stream::EndOfStreamException) { s.forward }
68
+ assert_equal(s.at_beginning?, array_stream.at_beginning?)
69
+ assert_equal(s.peek, s)
70
+ unless array_stream.at_beginning?
71
+ assert_equal(array_stream.current, s.current)
72
+ assert_equal(array_stream.backward, s.backward)
69
73
  end
70
- assert_equal(arrayStream.at_end?, s.at_end?)
71
-
74
+ assert_equal(array_stream.at_end?, s.at_end?)
75
+
72
76
  # Tests at begin of stream
73
- s.set_to_begin; arrayStream.set_to_begin
74
- assert_raises(Stream::EndOfStreamException) {s.backward}
75
- assert_equal(s.at_beginning?,arrayStream.at_beginning?)
76
- assert_equal(s.at_end?,arrayStream.at_end?)
77
- assert_equal(s.current,s)
78
- unless arrayStream.at_end?
79
- assert_equal(s.peek,arrayStream.peek)
80
- assert_equal(s.forward,arrayStream.forward)
81
- assert_equal(s.current,arrayStream.current)
82
- unless arrayStream.at_end?
83
- assert_equal(s.peek,arrayStream.peek)
77
+ s.set_to_begin; array_stream.set_to_begin
78
+ assert_raises(Stream::EndOfStreamException) { s.backward }
79
+ assert_equal(s.at_beginning?, array_stream.at_beginning?)
80
+ assert_equal(s.at_end?, array_stream.at_end?)
81
+ assert_equal(s.current, s)
82
+ unless array_stream.at_end?
83
+ assert_equal(s.peek, array_stream.peek)
84
+ assert_equal(s.forward, array_stream.forward)
85
+ assert_equal(s.current, array_stream.current)
86
+ unless array_stream.at_end?
87
+ assert_equal(s.peek, array_stream.peek)
84
88
  end
85
89
  end
86
90
  end
@@ -92,15 +96,15 @@ class TestStream < Test::Unit::TestCase
92
96
 
93
97
  def test_enumerable
94
98
  s = new_collection_stream
95
- assert_equal([2, 4, 6, 8, 10], s.collect {|x| x*2}.entries)
96
- assert_equal([2,4],s.select {|x| x[0]== 0})# even numbers
99
+ assert_equal([2, 4, 6, 8, 10], s.collect { |x| x * 2 }.entries)
100
+ assert_equal([2, 4], s.select { |x| x[0] == 0 }) # even numbers
97
101
  end
98
102
 
99
103
  def test_collection_stream
100
104
  s = new_collection_stream
101
105
  assert_equal([1, 2, 3, 4, 5], s.entries)
102
106
  assert(s.at_end?)
103
- assert_raises(Stream::EndOfStreamException) {s.forward}
107
+ assert_raises(Stream::EndOfStreamException) { s.forward }
104
108
  assert_equal(5, s.backward)
105
109
  assert_equal(5, s.forward)
106
110
  assert_equal(5, s.current)
@@ -108,70 +112,76 @@ class TestStream < Test::Unit::TestCase
108
112
 
109
113
  s.set_to_begin
110
114
  assert(s.at_beginning?)
111
- assert_raises(Stream::EndOfStreamException) {s.backward}
115
+ assert_raises(Stream::EndOfStreamException) { s.backward }
112
116
  assert_equal(s, s.current)
113
117
  assert_equal(1, s.peek)
114
118
  assert_equal(1, s.forward)
115
119
  assert_equal(1, s.current)
116
120
  assert_equal(2, s.peek)
117
121
 
118
- # move_forward_until
119
- assert_equal(4, s.move_forward_until { |x| x > 3 })
120
- assert_equal(nil, s.move_forward_until { |x| x < 3 })
121
- assert(s.at_end?)
122
+ # move_forward_until
123
+ assert_equal(4, s.move_forward_until { |x| x > 3 })
124
+ assert_equal(nil, s.move_forward_until { |x| x < 3 })
125
+ assert(s.at_end?)
122
126
 
123
- s.set_to_begin
124
- assert_equal(nil, s.move_forward_until { |x| x > 6 })
127
+ s.set_to_begin
128
+ assert_equal(nil, s.move_forward_until { |x| x > 6 })
125
129
  end
126
130
 
127
131
  def test_standard_for_examples
128
- all_examples.each do |exampleStream|
129
- standard_tests_for(exampleStream)
130
- end
132
+ all_examples.each do |example_stream|
133
+ standard_tests_for(example_stream)
134
+ end
131
135
  end
132
136
 
133
137
  def test_for_examples_reversed
134
- all_examples.each do |exampleStream|
135
- assert_equal(exampleStream.entries.reverse, exampleStream.reverse.entries)
136
- assert_equal(exampleStream.entries, exampleStream.reverse.reverse.entries)
137
- standard_tests_for(exampleStream.reverse)
138
- standard_tests_for(exampleStream.reverse.reverse)
139
- end
138
+ all_examples.each do |example_stream|
139
+ assert_equal(example_stream.entries.reverse, example_stream.reverse.entries)
140
+ assert_equal(example_stream.entries, example_stream.reverse.reverse.entries)
141
+ standard_tests_for(example_stream.reverse)
142
+ standard_tests_for(example_stream.reverse.reverse)
143
+ end
140
144
  end
141
145
 
142
146
  def test_filtered_stream
143
- [(1..6).create_stream.filtered {|x| x % 2 == 0 }].each do |s|
144
- standard_tests_for(s)
145
- end
147
+ [(1..6).create_stream.filtered { |x| x % 2 == 0 }].each do |s|
148
+ standard_tests_for(s)
149
+ end
146
150
  end
147
151
 
148
152
  def test_interval_stream
149
- s = Stream::IntervalStream.new 6
150
- standard_tests_for(s)
151
- assert_equal([0, 1, 2, 3, 4, 5], s.entries)
152
- s.increment_stop
153
- assert(!s.at_end?)
154
- assert_equal([0, 1, 2, 3, 4, 5, 6], s.entries)
155
- standard_tests_for(s)
153
+ s = Stream::IntervalStream.new 6
154
+ standard_tests_for(s)
155
+ assert_equal([0, 1, 2, 3, 4, 5], s.entries)
156
+ s.increment_stop
157
+ assert(!s.at_end?)
158
+ assert_equal([0, 1, 2, 3, 4, 5, 6], s.entries)
159
+ standard_tests_for(s)
156
160
  end
157
161
 
158
162
  def test_enumerable_protocol
159
- s = [1, 2, 3, 4, 5].create_stream
160
- assert(s.include?(2))
161
- assert_equal(3,s.detect {|x| x > 2})
162
- assert_equal(nil,s.detect {|x| x < 0})
163
- assert_equal([1,2],s.find_all {|x| x < 3})
163
+ s = [1, 2, 3, 4, 5].create_stream
164
+ assert(s.include?(2))
165
+ assert_equal(3, s.detect { |x| x > 2 })
166
+ assert_equal(nil, s.detect { |x| x < 0 })
167
+ assert_equal([1, 2], s.find_all { |x| x < 3 })
164
168
  end
165
169
 
166
170
  def test_modified_stream
167
- a = [1,2,3]
168
- assert_equal([2,3],a.create_stream.remove_first.to_a)
169
- assert_equal([1,2],a.create_stream.remove_last.to_a)
170
- assert_raises(Stream::EndOfStreamException) {
171
- [1].create_stream.remove_last.forward
172
- }
173
- assert_raises(Stream::EndOfStreamException) {
174
- [1].create_stream.remove_first.forward
175
- }
171
+ a = [1, 2, 3]
172
+ assert_equal([2, 3], a.create_stream.remove_first.to_a)
173
+ assert_equal([1, 2], a.create_stream.remove_last.to_a)
174
+ assert_raises(Stream::EndOfStreamException) {
175
+ [1].create_stream.remove_last.forward
176
+ }
177
+ assert_raises(Stream::EndOfStreamException) {
178
+ [1].create_stream.remove_first.forward
179
+ }
180
+ end
181
+
182
+ def test_concatenated_empty_stream
183
+ s = Stream::EmptyStream.instance + Stream::EmptyStream.instance
184
+ assert s.at_end?
185
+ assert s.at_beginning?
176
186
  end
177
187
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stream
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Horst Duchene
8
8
  autorequire: stream
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-09 00:00:00.000000000 Z
11
+ date: 2020-12-19 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: generator
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rake
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -75,20 +89,19 @@ extra_rdoc_files:
75
89
  files:
76
90
  - Gemfile
77
91
  - Gemfile.lock
92
+ - LICENSE
78
93
  - README.rdoc
79
94
  - Rakefile
80
95
  - examples/examples.rb
81
96
  - examples/streamtester.rb
82
- - lib/generator2stream.rb
83
97
  - lib/stream.rb
84
- - test/bm.rb
85
98
  - test/test_helper.rb
86
- - test/testgenerator.rb
87
99
  - test/teststream.rb
88
100
  homepage: https://github.com/monora/stream
89
- licenses: []
101
+ licenses:
102
+ - ruby
90
103
  metadata: {}
91
- post_install_message:
104
+ post_install_message:
92
105
  rdoc_options:
93
106
  - "--title"
94
107
  - stream - Extended External Iterators
@@ -108,9 +121,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
121
  - !ruby/object:Gem::Version
109
122
  version: '0'
110
123
  requirements: []
111
- rubyforge_project:
112
- rubygems_version: 2.7.7
113
- signing_key:
124
+ rubygems_version: 3.0.6
125
+ signing_key:
114
126
  specification_version: 4
115
127
  summary: stream - Extended External Iterators
116
128
  test_files: []
@@ -1,22 +0,0 @@
1
- # Let a Generator look like a Stream.
2
- require 'stream'
3
- require 'generator'
4
-
5
- # The generator is made a Stream by aliasing
6
- # the methods at_end?, basic_forward, basic_peek, set_to_begin to the approriate
7
- # methods #end?, #next, #peek and #rewind of the Generator class.
8
- #
9
- # Be careful if you already use a version of Akinori MUSHAs generator.rb. Check out
10
- # the version numbers of the one you use and the one comming with the stream package.
11
- class Generator
12
- include Stream
13
-
14
- alias_method :at_end?, :end?
15
- alias_method :basic_forward, :next
16
- alias_method :basic_peek, :peek
17
- alias_method :set_to_begin, :rewind
18
-
19
- # Returns the generator itself.
20
- def create_stream; self; end
21
- end
22
-
data/test/bm.rb DELETED
@@ -1,49 +0,0 @@
1
- require "benchmark"
2
- require "stream"
3
- require "generator"
4
-
5
- include Benchmark
6
-
7
- a =(1..5000).to_a
8
- s = a.create_stream
9
- n = 10
10
- g = Generator.new a
11
-
12
- bm(15) do |test|
13
- test.report("A.each:") do
14
- n.times {a.each {|x| x}}
15
- end
16
- test.report("S.each:") do
17
- n.times {s.each {|x| x}}
18
- end
19
- test.report("G.each:") do
20
- n.times {g.each {|x| x}}
21
- end
22
-
23
- test.report("A.collect.first:") do
24
- n.times {a.collect {|x| x}.collect {|x| x}.first}
25
- end
26
- test.report("S.collect.first:") do
27
- n.times {s.collect {|x| x}.collect {|x| x}.first}
28
- end
29
- test.report("G.collect.first:") do
30
- n.times {g.collect {|x| x}.collect {|x| x}.first}
31
- end
32
-
33
- test.report("A.reverse:") do
34
- n.times {a.reverse.reverse.reverse.each {|x| x}}
35
- end
36
- test.report("S.reverse:") do
37
- n.times {s.reverse.reverse.reverse.each {|x| x}}
38
- end
39
-
40
- test.report("A.collect:") do
41
- n.times {a.collect {|x| x}.collect {|x| x}.each {|x| x}}
42
- end
43
- test.report("S.collect:") do
44
- n.times {s.collect {|x| x}.collect {|x| x}.each {|x| x}}
45
- end
46
- test.report("G.collect:") do
47
- n.times {g.collect {|x| x}.collect {|x| x}.each {|x| x}}
48
- end
49
- end
@@ -1,24 +0,0 @@
1
- require 'test/unit'
2
- require 'generator2stream'
3
-
4
- class TestGenerator < Test::Unit::TestCase
5
- include Stream
6
-
7
- def test_generator
8
- # Use WrappedStream to ensure that the stream protocol is used and
9
- # not the Enumerable protocol.
10
- g = Generator.new { |g|
11
- for i in 1..3
12
- g.yield i
13
- end
14
- g.yield 0
15
- }
16
- assert_equal([1, 2, 3, 0], WrappedStream.new(g).to_a)
17
-
18
- # Generators are not reversable
19
- assert_raises(NotImplementedError) {g.reverse.first}
20
-
21
- a = (1..10).to_a
22
- assert_equal(a, WrappedStream.new(Generator.new(a)).to_a)
23
- end
24
- end