diff options
| author | Darryl L. Pierce <mcpierce@apache.org> | 2012-12-18 18:21:06 +0000 |
|---|---|---|
| committer | Darryl L. Pierce <mcpierce@apache.org> | 2012-12-18 18:21:06 +0000 |
| commit | e49088b19e8e0a4e9ba9a1f172ab0987a2c51287 (patch) | |
| tree | ff5612828e0d5d561bd0dc685a14a4df5174a72e /qpid/cpp | |
| parent | 65de21c29309642f26d177f93082e3cc317a8aa7 (diff) | |
| download | qpid-python-e49088b19e8e0a4e9ba9a1f172ab0987a2c51287.tar.gz | |
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.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1423567 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp')
| -rw-r--r-- | qpid/cpp/bindings/qpid/ruby/lib/qpid_messaging/duration.rb | 16 | ||||
| -rw-r--r-- | qpid/cpp/bindings/qpid/ruby/spec/qpid_messaging/duration_spec.rb | 27 |
2 files changed, 43 insertions, 0 deletions
diff --git a/qpid/cpp/bindings/qpid/ruby/lib/qpid_messaging/duration.rb b/qpid/cpp/bindings/qpid/ruby/lib/qpid_messaging/duration.rb index aca8fab8ae..1ff7857935 100644 --- a/qpid/cpp/bindings/qpid/ruby/lib/qpid_messaging/duration.rb +++ b/qpid/cpp/bindings/qpid/ruby/lib/qpid_messaging/duration.rb @@ -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 diff --git a/qpid/cpp/bindings/qpid/ruby/spec/qpid_messaging/duration_spec.rb b/qpid/cpp/bindings/qpid/ruby/spec/qpid_messaging/duration_spec.rb index 4980b6ffe7..202332d232 100644 --- a/qpid/cpp/bindings/qpid/ruby/spec/qpid_messaging/duration_spec.rb +++ b/qpid/cpp/bindings/qpid/ruby/spec/qpid_messaging/duration_spec.rb @@ -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 |
