Permalink
Browse files

+ Add methods to Numeric about scale

  • Loading branch information...
1 parent 45d4a20 commit e20467039680abac60cce5f5ec0c0142b89d7f38 @PikachuEXE PikachuEXE committed Sep 10, 2013
Showing with 184 additions and 0 deletions.
  1. +1 −0 lib/powerpack/numeric.rb
  2. +44 −0 lib/powerpack/numeric/scale.rb
  3. +139 −0 spec/powerpack/numeric/scale_spec.rb
View
@@ -1,2 +1,3 @@
require_relative 'numeric/neg'
require_relative 'numeric/pos'
+require_relative 'numeric/scale'
@@ -0,0 +1,44 @@
+class Numeric
+ HUNDRED = 10 ** 2
+ THOUSAND = 10 ** 3
+ MILLION = 10 ** 6
+ BILLION = 10 ** 9
+ TRILLION = 10 ** 12
+ QUADRILLION = 10 ** 15
+
+ unless Numeric.method_defined? :hundred
+ def hundred
+ self * HUNDRED
+ end
+ end
+
+ unless Numeric.method_defined? :thousand
+ def thousand
+ self * THOUSAND
+ end
+ end
+
+ unless Numeric.method_defined? :million
+ def million
+ self * MILLION
+ end
+ end
+
+ unless Numeric.method_defined? :billion
+ def billion
+ self * BILLION
+ end
+ end
+
+ unless Numeric.method_defined? :trillion
+ def trillion
+ self * TRILLION
+ end
+ end
+
+ unless Numeric.method_defined? :quadrillion
+ def quadrillion
+ self * QUADRILLION
+ end
+ end
+end
@@ -0,0 +1,139 @@
+require 'spec_helper'
+
+describe 'Numeric#hundred' do
+ it 'returns positive integer for positive integer' do
+ expect(1.hundred).to eql 100
+ end
+
+ it 'returns positive float for positive float' do
+ expect(0.1.hundred).to eql 10.0
+ end
+
+ it 'returns false for negative integer' do
+ expect(-1.hundred).to eql -100
+ end
+
+ it 'returns false for negative float' do
+ expect(-0.1.hundred).to eql -10.0
+ end
+
+ it 'returns 0 for 0' do
+ expect(0.hundred).to eql 0
+ expect(0.0.hundred).to eql 0.0
+ end
+end
+
+describe 'Numeric#thousand' do
+ it 'returns positive integer for positive integer' do
+ expect(1.thousand).to eql 1000
+ end
+
+ it 'returns positive float for positive float' do
+ expect(0.1.thousand).to eql 100.0
+ end
+
+ it 'returns false for negative integer' do
+ expect(-1.thousand).to eql -1000
+ end
+
+ it 'returns false for negative float' do
+ expect(-0.1.thousand).to eql -100.0
+ end
+
+ it 'returns 0 for 0' do
+ expect(0.thousand).to eql 0
+ expect(0.0.thousand).to eql 0.0
+ end
+end
+
+describe 'Numeric#million' do
+ it 'returns positive integer for positive integer' do
+ expect(1.million).to eql 1000000
+ end
+
+ it 'returns positive float for positive float' do
+ expect(0.1.million).to eql 100000.0
+ end
+
+ it 'returns false for negative integer' do
+ expect(-1.million).to eql -1000000
+ end
+
+ it 'returns false for negative float' do
+ expect(-0.1.million).to eql -100000.0
+ end
+
+ it 'returns 0 for 0' do
+ expect(0.million).to eql 0
+ expect(0.0.million).to eql 0.0
+ end
+end
+
+describe 'Numeric#billion' do
+ it 'returns positive integer for positive integer' do
+ expect(1.billion).to eql 1000000000
+ end
+
+ it 'returns positive float for positive float' do
+ expect(0.1.billion).to eql 100000000.0
+ end
+
+ it 'returns false for negative integer' do
+ expect(-1.billion).to eql -1000000000
+ end
+
+ it 'returns false for negative float' do
+ expect(-0.1.billion).to eql -100000000.0
+ end
+
+ it 'returns 0 for 0' do
+ expect(0.billion).to eql 0
+ expect(0.0.billion).to eql 0.0
+ end
+end
+
+describe 'Numeric#trillion' do
+ it 'returns positive integer for positive integer' do
+ expect(1.trillion).to eql 1000000000000
+ end
+
+ it 'returns positive float for positive float' do
+ expect(0.1.trillion).to eql 100000000000.0
+ end
+
+ it 'returns false for negative integer' do
+ expect(-1.trillion).to eql -1000000000000
+ end
+
+ it 'returns false for negative float' do
+ expect(-0.1.trillion).to eql -100000000000.0
+ end
+
+ it 'returns 0 for 0' do
+ expect(0.trillion).to eql 0
+ expect(0.0.trillion).to eql 0.0
+ end
+end
+
+describe 'Numeric#quadrillion' do
+ it 'returns positive integer for positive integer' do
+ expect(1.quadrillion).to eql 1000000000000000
+ end
+
+ it 'returns positive float for positive float' do
+ expect(0.1.quadrillion).to eql 100000000000000.0
+ end
+
+ it 'returns false for negative integer' do
+ expect(-1.quadrillion).to eql -1000000000000000
+ end
+
+ it 'returns false for negative float' do
+ expect(-0.1.quadrillion).to eql -100000000000000.0
+ end
+
+ it 'returns 0 for 0' do
+ expect(0.quadrillion).to eql 0
+ expect(0.0.quadrillion).to eql 0.0
+ end
+end

0 comments on commit e204670

Please sign in to comment.