diff options
Diffstat (limited to 'spec/ruby/core/math/log2_spec.rb')
| -rw-r--r-- | spec/ruby/core/math/log2_spec.rb | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/spec/ruby/core/math/log2_spec.rb b/spec/ruby/core/math/log2_spec.rb new file mode 100644 index 0000000000..e38a8bb67f --- /dev/null +++ b/spec/ruby/core/math/log2_spec.rb @@ -0,0 +1,41 @@ +require_relative '../../spec_helper' +require_relative 'fixtures/classes' + +describe "Math.log2" do + it "returns a float" do + Math.log2(5.79).should be_close(2.53356334821451, TOLERANCE) + end + + it "returns the natural logarithm of the argument" do + Math.log2(1.1).should be_close(0.137503523749935, TOLERANCE) + Math.log2(3.14).should be_close(1.6507645591169, TOLERANCE) + Math.log2((2**101+45677544234809571)).should be_close(101.00000000000003, TOLERANCE) + + Math.log2((2**10001+45677544234809571)).should == 10001.0 + Math.log2((2**301+45677544234809571)).should == 301.0 + end + + it "raises Math::DomainError if the argument is less than 0" do + -> { Math.log2(-1e-15) }.should.raise( Math::DomainError) + end + + it "raises a TypeError if the argument cannot be coerced with Float()" do + -> { Math.log2("test") }.should.raise(TypeError) + end + + it "raises a TypeError if passed a numerical argument as a string" do + -> { Math.log2("1.0") }.should.raise(TypeError) + end + + it "returns NaN given NaN" do + Math.log2(nan_value).nan?.should == true + end + + it "raises a TypeError if the argument is nil" do + -> { Math.log2(nil) }.should.raise(TypeError) + end + + it "accepts any argument that can be coerced with Float()" do + Math.log2(MathSpecs::Float.new).should be_close(0.0, TOLERANCE) + end +end |
