aboutsummaryrefslogtreecommitdiffstats
path: root/spec/ruby/library/mathn/integer/prime_division_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/library/mathn/integer/prime_division_spec.rb')
-rw-r--r--spec/ruby/library/mathn/integer/prime_division_spec.rb21
1 files changed, 21 insertions, 0 deletions
diff --git a/spec/ruby/library/mathn/integer/prime_division_spec.rb b/spec/ruby/library/mathn/integer/prime_division_spec.rb
new file mode 100644
index 0000000000..63a5c39733
--- /dev/null
+++ b/spec/ruby/library/mathn/integer/prime_division_spec.rb
@@ -0,0 +1,21 @@
+require File.expand_path('../../../../spec_helper', __FILE__)
+
+ruby_version_is ''...'2.5' do
+ require 'mathn'
+
+ describe "Integer#prime_division" do
+ it "performs a prime factorization of a positive integer" do
+ 100.prime_division.should == [[2, 2], [5, 2]]
+ end
+
+ # Proper handling of negative integers has been added to MRI trunk
+ # in revision 24091. Prior to that, all versions of MRI returned nonsense.
+ it "performs a prime factorization of a negative integer" do
+ -26.prime_division.should == [[-1, 1], [2, 1], [13, 1]]
+ end
+
+ it "raises a ZeroDivisionError when is called on zero" do
+ lambda { 0.prime_division }.should raise_error(ZeroDivisionError)
+ end
+ end
+end