circular_queue 1.0.0 → 1.0.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/circular_queue.gemspec +2 -1
- data/lib/circular_queue.rb +6 -0
- data/spec/circular_queue_spec.rb +9 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13c1c8781ad3b18281cfde5ca4ab55ce37681dd6a6a808c23f86d3867184f81a
|
4
|
+
data.tar.gz: 526b06456b9a39091ded32db14bd77fd31d4dc3e877a3cd6605b8915e1ca0e3d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea4ae58974318d575d732988f4a7c87b7488982a19c25d402b830cb98f72e66b8f8ea7824f52dd612184748dfd5d422764f33c8356f39944fe8a1c3c6b10ef6a
|
7
|
+
data.tar.gz: d93519ec5e61ab5038c4338b1ec1681a49b851b7dc2c6a7e3fe6be12c122c7c0f43bb520897cdd17a66aea2692177e6cbdecc76ab1cdbafa87321d2af53caaee
|
data/CHANGELOG.md
CHANGED
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
7
7
|
|
8
8
|
## [Unreleased]
|
9
9
|
|
10
|
+
## [1.0.1] - 2019-04-22
|
11
|
+
### Fixed
|
12
|
+
- Maintain API compatibility with Queue from stdlib by returning `self` from `#clear`, `#enq`, and `#enq!`.
|
13
|
+
|
10
14
|
## [1.0.0] - 2019-04-18
|
11
15
|
### Added
|
12
16
|
- Changelog (you're looking at!).
|
data/circular_queue.gemspec
CHANGED
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "circular_queue"
|
6
|
-
s.version = "1.0.
|
6
|
+
s.version = "1.0.1"
|
7
7
|
s.authors = ["Andy Lindeman"]
|
8
8
|
s.email = ["alindeman@gmail.com"]
|
9
9
|
|
@@ -25,6 +25,7 @@ Gem::Specification.new do |s|
|
|
25
25
|
s.require_paths = ["lib"]
|
26
26
|
|
27
27
|
s.add_development_dependency "bundler", "~> 2.0"
|
28
|
+
s.add_development_dependency "pry-byebug"
|
28
29
|
s.add_development_dependency "rspec", "~> 3.8.0"
|
29
30
|
s.add_development_dependency "rake"
|
30
31
|
s.add_development_dependency "yard"
|
data/lib/circular_queue.rb
CHANGED
@@ -43,10 +43,12 @@ class CircularQueue
|
|
43
43
|
|
44
44
|
# Adds an item to the queue
|
45
45
|
# @param [Object] item item to add
|
46
|
+
# @return [CircularQueue] the queue itself
|
46
47
|
def enq(item)
|
47
48
|
@mutex.synchronize do
|
48
49
|
enq_item(item)
|
49
50
|
wakeup_next_waiter
|
51
|
+
self
|
50
52
|
end
|
51
53
|
end
|
52
54
|
alias << enq
|
@@ -55,12 +57,14 @@ class CircularQueue
|
|
55
57
|
# Adds an item to the queue, raising an error if the queue is full
|
56
58
|
# @param [Object] item item to add
|
57
59
|
# @raise [ThreadError] queue is full
|
60
|
+
# @return [CircularQueue] the queue itself
|
58
61
|
def enq!(item)
|
59
62
|
@mutex.synchronize do
|
60
63
|
raise ThreadError.new("Queue is full") if full?
|
61
64
|
|
62
65
|
enq_item(item)
|
63
66
|
wakeup_next_waiter
|
67
|
+
self
|
64
68
|
end
|
65
69
|
end
|
66
70
|
alias push! enq!
|
@@ -87,11 +91,13 @@ class CircularQueue
|
|
87
91
|
alias pop deq
|
88
92
|
|
89
93
|
# Removes all items from the queue
|
94
|
+
# @return [CircularQueue] the queue itself
|
90
95
|
def clear
|
91
96
|
@mutex.synchronize do
|
92
97
|
@size = 0
|
93
98
|
@front = 0
|
94
99
|
@back = 0
|
100
|
+
self
|
95
101
|
end
|
96
102
|
end
|
97
103
|
|
data/spec/circular_queue_spec.rb
CHANGED
@@ -16,6 +16,11 @@ RSpec.describe CircularQueue do
|
|
16
16
|
expect(queue.deq).to eq(1234)
|
17
17
|
end
|
18
18
|
|
19
|
+
it "maintains the same API as Queue, returning itself" do
|
20
|
+
expect(queue.enq(1)).to eq(queue)
|
21
|
+
expect(queue.enq!(2)).to eq(queue)
|
22
|
+
end
|
23
|
+
|
19
24
|
it "increases its size when a new item is added" do
|
20
25
|
queue.enq(1234)
|
21
26
|
expect(queue.size).to eq(1)
|
@@ -117,6 +122,10 @@ RSpec.describe CircularQueue do
|
|
117
122
|
|
118
123
|
expect(queue.size).to be_zero
|
119
124
|
end
|
125
|
+
|
126
|
+
it "maintains the same API as Queue, returning itself" do
|
127
|
+
expect(queue.clear).to eq(queue)
|
128
|
+
end
|
120
129
|
end
|
121
130
|
|
122
131
|
describe "data" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: circular_queue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Lindeman
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-04-
|
11
|
+
date: 2019-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: pry-byebug
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rspec
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|