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