File tree Expand file tree Collapse file tree 2 files changed +18
-14
lines changed Expand file tree Collapse file tree 2 files changed +18
-14
lines changed Original file line number Diff line number Diff line change @@ -75,24 +75,28 @@ def false?
7575 #
7676 # Explicitly sets the value to true.
7777 #
78- # @return [nil]
78+ # @return [Boolean] true is value has changed, otherwise false
7979 def make_true
8080 @mutex . lock
81+ old = @value
8182 @value = true
8283 @mutex . unlock
83- nil
84+
85+ !old
8486 end
8587
8688 # @!macro [attach] atomic_boolean_method_make_false
8789 #
8890 # Explicitly sets the value to false.
8991 #
90- # @return [nil]
92+ # @return [Boolean] true is value has changed, otherwise false
9193 def make_false
9294 @mutex . lock
95+ old = @value
9396 @value = false
9497 @mutex . unlock
95- nil
98+
99+ old
96100 end
97101 end
98102
@@ -131,12 +135,12 @@ def false?
131135
132136 # @!macro atomic_boolean_method_make_true
133137 def make_true
134- @atomic . set ( true )
138+ @atomic . compareAndSet ( false , true )
135139 end
136140
137141 # @!macro atomic_boolean_method_make_false
138142 def make_false
139- @atomic . set ( false )
143+ @atomic . compareAndSet ( true , false )
140144 end
141145 end
142146
Original file line number Diff line number Diff line change 7575
7676 describe '#make_true' do
7777
78- it 'makes a false value true and returns nil ' do
78+ it 'makes a false value true and returns true ' do
7979 subject = described_class . new ( false )
80- subject . make_true . should be_nil
80+ subject . make_true . should be_true
8181 subject . value . should be_true
8282 end
8383
84- it 'keeps a true value true and returns nil ' do
84+ it 'keeps a true value true and returns false ' do
8585 subject = described_class . new ( true )
86- subject . make_true . should be_nil
86+ subject . make_true . should be_false
8787 subject . value . should be_true
8888 end
8989 end
9090
9191 describe '#make_false' do
9292
93- it 'makes a true value false and returns nil ' do
93+ it 'makes a true value false and returns true ' do
9494 subject = described_class . new ( true )
95- subject . make_false . should be_nil
95+ subject . make_false . should be_true
9696 subject . value . should be_false
9797 end
9898
99- it 'keeps a false value false and returns nil ' do
99+ it 'keeps a false value false and returns false ' do
100100 subject = described_class . new ( false )
101- subject . make_false . should be_nil
101+ subject . make_false . should be_false
102102 subject . value . should be_false
103103 end
104104 end
You can’t perform that action at this time.
0 commit comments