You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by mc...@apache.org on 2012/12/18 19:21:07 UTC
svn commit: r1423567 - in /qpid/trunk/qpid/cpp/bindings/qpid/ruby:
lib/qpid_messaging/duration.rb spec/qpid_messaging/duration_spec.rb
Author: mcpierce
Date: Tue Dec 18 18:21:06 2012
New Revision: 1423567
URL: http://svn.apache.org/viewvc?rev=1423567&view=rev
Log:
QPID-4466: Add support for Duration multiplication to Ruby bindings.
You can now multiply a Qpid::Messaging::Duration instance and get back a
new instance of Qpid::Messaging::Duration.
Modified:
qpid/trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid_messaging/duration.rb
qpid/trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid_messaging/duration_spec.rb
Modified: qpid/trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid_messaging/duration.rb
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid_messaging/duration.rb?rev=1423567&r1=1423566&r2=1423567&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid_messaging/duration.rb (original)
+++ qpid/trunk/qpid/cpp/bindings/qpid/ruby/lib/qpid_messaging/duration.rb Tue Dec 18 18:21:06 2012
@@ -71,6 +71,22 @@ module Qpid
@duration_impl.getMilliseconds
end
+ # Returns a new Duration with a period of time that is a multiple
+ # of the original Duration.
+ #
+ # Raises exceptions on a negative factor. Returns
+ # Qpid::Messaging::Duration::IMMEDIATE when the factor is 0.
+ #
+ # ==== Examples
+ #
+ # twominutes = Qpid::Messaging::Duration::MINUTE * 2
+ #
+ def *(factor)
+ raise TypeError.new "Factors must be non-zero positive values" if factor < 0
+ return Qpid::Messaging::Duration::IMMEDIATE if factor.zero?
+ Qpid::Messaging::Duration.new((self.milliseconds * factor).floor)
+ end
+
def self.add_item(key, value) # :nodoc:
@hash ||= {}
@hash[key] = Duration.new value
Modified: qpid/trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid_messaging/duration_spec.rb
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid_messaging/duration_spec.rb?rev=1423567&r1=1423566&r2=1423567&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid_messaging/duration_spec.rb (original)
+++ qpid/trunk/qpid/cpp/bindings/qpid/ruby/spec/qpid_messaging/duration_spec.rb Tue Dec 18 18:21:06 2012
@@ -49,6 +49,33 @@ module Qpid
milliseconds.should == 1000
end
+ it "raises an error when multiplied by a negative" do
+ expect {
+ twomin = Qpid::Messaging::Duration::MINUTE * -2
+ }.to raise_error
+ end
+
+ it "returns IMMEDIATE if the factor is zero" do
+ result = Qpid::Messaging::Duration::MINUTE * 0
+ result.should be(Qpid::Messaging::Duration::IMMEDIATE)
+ end
+
+ it "fractional factors return a reduced duration" do
+ factor = rand(1)
+ first = Qpid::Messaging::Duration::MINUTE
+ second = first * factor
+
+ second.milliseconds.should == ((first.milliseconds * factor).floor)
+ end
+
+ it "can return a multiple of its duration" do
+ factor = rand(10).floor
+ first = Qpid::Messaging::Duration.new(rand(10).floor * 10000)
+ second = first * factor
+
+ second.milliseconds.should == first.milliseconds * factor
+ end
+
end
end
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org