numbers_in_words 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,22 @@
1
+ require 'rubygems'
2
+ require 'numbers_in_words'
3
+ def usage code=-1
4
+ puts "\nUsage:\n\nruby #{__FILE__} <start> <end>"
5
+ exit code
6
+ end
7
+ if ARGV.length != 2
8
+
9
+ puts "Start and end arguments expected"
10
+ usage -1
11
+ end
12
+ start_number = ARGV[0].to_i
13
+ end_number = ARGV[1].to_i
14
+
15
+ if start_number > end_number
16
+ puts "Start number must be less than or equal to the end number"
17
+ usage -2
18
+ end
19
+
20
+ for i in start_number..end_number do
21
+ puts i.in_words
22
+ end
@@ -0,0 +1,88 @@
1
+ require 'lib/numbers_in_words'
2
+ describe Fixnum do
3
+ it "should print the digits 0-9 correctly" do
4
+ numbers = %w[zero one two three four five six seven eight nine ten]
5
+ 10.times do |i|
6
+ puts i.in_words
7
+ i.in_words.should==numbers[i]
8
+
9
+ end
10
+ end
11
+ it "should print the digits 11-19 correctly" do
12
+ words = %w[eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen]
13
+ numbers = [11,12,13,14,15,16,17,18,19]
14
+ numbers.each_with_index do |number, index|
15
+ puts number.in_words
16
+ number.in_words.should==words[index]
17
+
18
+ end
19
+ end
20
+
21
+ it "should return a hash of powers of ten" do
22
+ 117.powers_of_ten.should == {0=>7,1=>1,2=>1}
23
+ 0.powers_of_ten.should == {}
24
+ 1.powers_of_ten.should == {0=>1}
25
+ 9.powers_of_ten.should == {0=>9}
26
+ 10.powers_of_ten.should == {1=>1}
27
+ 18.powers_of_ten.should == {1=>1,0=>8}
28
+ 123456.powers_of_ten.should == {0=>6,1=>5,2=>4,3=>3,4=>2,5=>1}
29
+ end
30
+
31
+ it "should split into group of three digit numbers" do
32
+ 1.groups_of(3).should == {0=>1}
33
+ 12.groups_of(3).should == {0=>12}
34
+ 123.groups_of(3).should == {0=>123}
35
+ 1111.groups_of(3).should == {3=>1,0=>111}
36
+ 87654.groups_of(3).should == {3=>87,0=>654}
37
+ 1234567.groups_of(3).should == {6=>1,3=>234,0=>567}
38
+ 123456789101112.groups_of(3).should == {12=>123,9=>456,6=>789,3=>101,0=>112}
39
+ end
40
+
41
+ it "should display numbers grouped" do
42
+ 2111.group_words 3 do |power, name, digits|
43
+ puts "10^#{power} #{name} #{ digits }"
44
+ end
45
+ end
46
+
47
+ it "should handle two digit numbers" do
48
+ 21.in_words.should == "twenty one"
49
+ end
50
+ it "should handle three digit numbers" do
51
+ 113.in_words.should == "one hundred and thirteen"
52
+ 299.in_words.should == "two hundred and ninety nine"
53
+ 300.in_words.should == "three hundred"
54
+ 101.in_words.should == "one hundred and one"
55
+ end
56
+
57
+ it "should print out some random examples correctly" do
58
+ 2999.in_words.should == "two thousand nine hundred and ninety nine"
59
+ 99999.in_words.should == "ninety nine thousand nine hundred and ninety nine"
60
+ 999999.in_words.should == "nine hundred and ninety nine thousand nine hundred and ninety nine"
61
+ 123456.in_words.should == "one hundred and twenty three thousand four hundred and fifty six"
62
+ 17054.in_words.should == "seventeen thousand and fifty four"
63
+ 11004.in_words.should == "eleven thousand and four"
64
+ 470154.in_words.should == "four hundred and seventy thousand one hundred and fifty four"
65
+ 417155.in_words.should == "four hundred and seventeen thousand one hundred and fifty five"
66
+ 999999.in_words.should == "nine hundred and ninety nine thousand nine hundred and ninety nine"
67
+ 1000000.in_words.should == "one million"
68
+ 1000001.in_words.should == "one million and one"
69
+ 112.in_words.should == "one hundred and twelve"
70
+
71
+ end
72
+
73
+ it "should handle edge cases" do
74
+ 1000001.in_words.should == "one million and one"
75
+ (10*10**12 + 10**6 +1).in_words.should == "ten trillion one million and one"
76
+ (10**75).in_words.should == "one quattuorvigintillion"
77
+ 10001001.in_words.should == "ten million one thousand and one"
78
+ end
79
+ it "should handle a googol and larger" do
80
+ n=10**100
81
+ puts n.in_words
82
+ (10**100 + 1).in_words.should == "one googol and one"
83
+ (42*10**100 + 16777216).in_words.should == "forty two googol sixteen million seven hundred and seventy seven thousand two hundred and sixteen"
84
+ (42* 10**100 * 10**100).in_words.should == "forty two googol googol"
85
+ end
86
+
87
+ end
88
+
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 2
9
- version: 0.0.2
8
+ - 3
9
+ version: 0.0.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - Mark Burns
@@ -29,6 +29,8 @@ extra_rdoc_files: []
29
29
  files:
30
30
  - README
31
31
  - lib/numbers_in_words.rb
32
+ - examples/display_numbers_in_words.rb
33
+ - spec/numbers_in_words_spec.rb
32
34
  has_rdoc: true
33
35
  homepage: http://github.com/markburns/numbers_in_words
34
36
  licenses: []