circular_queue 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ec86881eee3351cb2f8f6dc4bd4bb36991a7a76331f5f31f51c108e0743b1d9b
4
- data.tar.gz: 187c3358ade45e3e313b501182d1091abf9800949d23f6dc4aa6aef0862f1e33
3
+ metadata.gz: 13c1c8781ad3b18281cfde5ca4ab55ce37681dd6a6a808c23f86d3867184f81a
4
+ data.tar.gz: 526b06456b9a39091ded32db14bd77fd31d4dc3e877a3cd6605b8915e1ca0e3d
5
5
  SHA512:
6
- metadata.gz: 7431d4752102a6e68a6196fdf3c3c766dca1c3db468a03d086aabda32f02831613c257c9b6e9dd517709e3f5f7f28ed7dfa1b099efe8fe0ca8b9386a74c9e993
7
- data.tar.gz: 893ee822375a8b0b846e333967629e6a70cbb98e966f3b618283ec39b46ea3f8960365eec108fa33d9aca931332715c570390ff91dd26d0496ebbf592ada6c15
6
+ metadata.gz: ea4ae58974318d575d732988f4a7c87b7488982a19c25d402b830cb98f72e66b8f8ea7824f52dd612184748dfd5d422764f33c8356f39944fe8a1c3c6b10ef6a
7
+ data.tar.gz: d93519ec5e61ab5038c4338b1ec1681a49b851b7dc2c6a7e3fe6be12c122c7c0f43bb520897cdd17a66aea2692177e6cbdecc76ab1cdbafa87321d2af53caaee
@@ -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!).
@@ -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.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"
@@ -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
 
@@ -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.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-18 00:00:00.000000000 Z
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