aboutsummaryrefslogtreecommitdiffstats
path: root/spec/ruby/optional/capi/numeric_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/optional/capi/numeric_spec.rb')
-rw-r--r--spec/ruby/optional/capi/numeric_spec.rb28
1 files changed, 28 insertions, 0 deletions
diff --git a/spec/ruby/optional/capi/numeric_spec.rb b/spec/ruby/optional/capi/numeric_spec.rb
index d76f353850..de7e180414 100644
--- a/spec/ruby/optional/capi/numeric_spec.rb
+++ b/spec/ruby/optional/capi/numeric_spec.rb
@@ -143,6 +143,34 @@ describe "CApiNumericSpecs" do
end
end
+ describe "NUM2SHORT" do
+ it "raises a TypeError if passed nil" do
+ -> { @s.NUM2SHORT(nil) }.should raise_error(TypeError)
+ end
+
+ it "converts a Float" do
+ @s.NUM2SHORT(4.2).should == 4
+ end
+
+ it "converts a Fixnum" do
+ @s.NUM2SHORT(5).should == 5
+ end
+
+ it "converts -1 to an signed number" do
+ @s.NUM2SHORT(-1).should == -1
+ end
+
+ it "raises a RangeError if the value is more than 32bits" do
+ -> { @s.NUM2SHORT(0xffff_ffff+1) }.should raise_error(RangeError)
+ end
+
+ it "calls #to_int to coerce the value" do
+ obj = mock("number")
+ obj.should_receive(:to_int).and_return(2)
+ @s.NUM2SHORT(obj).should == 2
+ end
+ end
+
describe "INT2NUM" do
it "raises a TypeError if passed nil" do
-> { @s.INT2NUM(nil) }.should raise_error(TypeError)