stream 0.5.2 → 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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