ruby-fizzbuzz 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,84 +0,0 @@
1
- fizzbuzz (0.7.0)
2
-
3
- * Added to_hash, as_json, to_json and from_json (singleton) to the FizzBuzz class.
4
- * Add rudimentary Vagrantfile that can be used to build a development environment.
5
- * Re-factored fizzbuzz (singleton) from the FizzBuzz class to speed it up.
6
- * No longer use of Enumerable#entries in the Array integration, achieving better performance.
7
- * Correctly return Enumerator when integrating with the Range class.
8
- * Updated Rakefile to no longer run test before benchmark.
9
- * Fixed benchmarks concerning Array and Range integration.
10
- * Retired testing with Ruby 1.9.2 and 2.1.0, and added 2.1.5 on Travis CI.
11
- * Fixed Travis CI build against Rubinius.
12
- * Re-factored tests to utilise modern version of the "test-unit" Ruby gem.
13
- * Fixed build to make it work with C++ compilers.
14
- * Added the Guard Ruby gem for convenience, with an appropriate Guardfile.
15
- * Added LLVM (clang) compiler to build with to Travis CI.
16
- * Fixed version number to comply with Semantic Versioning 2 (http://semver.org/).
17
- * Re-factored and cleaned up small portions of code and documentation.
18
- * Removed BitDeli badge.
19
-
20
- -- Krzysztof Wilczynski <krzysztof.wilczynski@linux.com> Mon, 15 Dec 2014 00:27:26 +0000
21
-
22
- fizzbuzz (0.0.6)
23
-
24
- * Fixed issue reported by LLVM (clang).
25
- * Updated development dependencies.
26
- * Added Ruby 2.1.0 to Travis CI.
27
- * Added BitDeli and Gemnasium integration.
28
- * Re-factored and cleaned up small portions of code.
29
- * Made Rake "test" task to be the default tasks.
30
- * Updated the ".gitignore" file to cover Bundler, rbenv, etc.
31
-
32
- -- Krzysztof Wilczynski <krzysztof.wilczynski@linux.com> Sun, 23 Feb 2014 13:52:08 +0000
33
-
34
- fizzbuzz (0.0.5)
35
-
36
- * Added integration with Array and Range types.
37
- * Added simple benchmark.
38
-
39
- -- Krzysztof Wilczynski <krzysztof.wilczynski@linux.com> Tue, 26 Nov 2013 12:40:34 +0000
40
-
41
- fizzbuzz (0.0.4)
42
-
43
- * Retired support for Ruby 1.8.x (no support for MRI, Ruby Enterprise Edition and Rubinius).
44
- * Added Coveralls and Code Climate integration (and hence improved code test coverage).
45
- * Improved error handling and made code more resilient to errors.
46
- * Fixed formatting and white spaces.
47
-
48
- -- Krzysztof Wilczynski <krzysztof.wilczynski@linux.com> Mon, 18 Nov 2013 11:22:26 +0000
49
-
50
- fizzbuzz (0.0.3)
51
-
52
- * Added custom exceptions and improved error handling.
53
- * Added more variety of Rubies on which tests are being run with Travis CI.
54
- * Added project to Rubygems (http://rubygems.org) so it can be installed
55
- with just "gem install ruby-fizzbuzz" command.
56
- * Renamed project from "fizzbuzz" to "ruby-fizzbuzz" to avoid clashes with
57
- other Ruby gems hosted on Rubygems web site.
58
- * Made "mkmf" in extconf.rb more user-friendly (it now reports missing
59
- build-time dependencies better).
60
- * Split Ruby gem specification (or gemspec if you wish) away from Rakefile
61
- into its own file (namely ruby-fizzbuzz.gemspec).
62
- * Improved documentation and removed bunch of small code smells.
63
-
64
- -- Krzysztof Wilczynski <krzysztof.wilczynski@linux.com> Sat, 31 Aug 2013 17:54:54 +0000
65
-
66
- fizzbuzz (0.0.2)
67
-
68
- * Added is_fizz?, is_buzz? and is_fizzbuzz? singleton methods to FizzBuzz class.
69
- * Added fizz?, buzz? and fizzbuzz? methods to the Integer class via a monkey-patch
70
- for convenience.
71
- * Changed behaviour of the FizzBuzz#[] singleton method, so it will yield a FizzBuzz
72
- result for a given arbitrary Integer value.
73
- * Re-factored code to make it cleaner, and added more tests and improved coverage.
74
- * Re-factored FizzBuzz so it now does not assume that we always want to calculate
75
- results from 1 to n -- it is now possible to calculate FizzBuzz results for given
76
- n, m values, where n denotes start and m denotes stop value.
77
-
78
- -- Krzysztof Wilczynski <krzysztof.wilczynski@linux.com> Sat, 29 Sep 2012 14:53:35 +0100
79
-
80
- fizzbuzz (0.0.1)
81
-
82
- * First version.
83
-
84
- -- Krzysztof Wilczynski <krzysztof.wilczynski@linux.com> Thu, 27 Sep 2012 12:54:45 +0200
data/README DELETED
@@ -1,5 +0,0 @@
1
- Yet another FizzBuzz in Ruby. Provides simple and fast solution
2
- to a popular FizzBuzz problem for Ruby.
3
-
4
- Written in C as an example of using Ruby's C API - with the support
5
- for arbitrary large numeric values via the Bignum class.
@@ -1,12 +0,0 @@
1
- Yet another FizzBuzz in Ruby. Provides simple and fast solution
2
- to a popular FizzBuzz problem for Ruby.
3
-
4
- Written in C as an example of using Ruby's C API - with the support
5
- for arbitrary large numeric values via the Bignum class.
6
-
7
- {<img src="https://travis-ci.org/kwilczynski/ruby-fizzbuzz.png?branch=master" alt="Build Status"/>}[https://travis-ci.org/kwilczynski/ruby-fizzbuzz]
8
- {<img src="http://inch-ci.org/github/kwilczynski/ruby-fizzbuzz.svg?branch=master" alt="Documentation Status" />}[http://inch-ci.org/github/kwilczynski/ruby-fizzbuzz]
9
- {<img src="https://badge.fury.io/rb/ruby-fizzbuzz.png" alt="Gem Version" />}[http://badge.fury.io/rb/ruby-fizzbuzz]
10
- {<img src="https://coveralls.io/repos/kwilczynski/ruby-fizzbuzz/badge.png?branch=master" alt="Coverage Status" />}[https://coveralls.io/r/kwilczynski/ruby-fizzbuzz?branch=master]
11
- {<img src="https://codeclimate.com/github/kwilczynski/ruby-fizzbuzz.png" alt="Code Quality" />}[https://codeclimate.com/github/kwilczynski/ruby-fizzbuzz]
12
- {<img src="https://gemnasium.com/kwilczynski/ruby-fizzbuzz.png" alt="Dependency Status" />}[https://gemnasium.com/kwilczynski/ruby-fizzbuzz]
data/Rakefile DELETED
@@ -1,97 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- # :enddoc:
4
-
5
- #
6
- # Rakefile
7
- #
8
- # Copyright 2012-2014 Krzysztof Wilczynski
9
- #
10
- # Licensed under the Apache License, Version 2.0 (the "License");
11
- # you may not use this file except in compliance with the License.
12
- # You may obtain a copy of the License at
13
- #
14
- # http://www.apache.org/licenses/LICENSE-2.0
15
- #
16
- # Unless required by applicable law or agreed to in writing, software
17
- # distributed under the License is distributed on an "AS IS" BASIS,
18
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
- # See the License for the specific language governing permissions and
20
- # limitations under the License.
21
- #
22
-
23
- gem 'rdoc', '>= 4.1.1'
24
-
25
- begin
26
- require 'rake'
27
- require 'rdoc/task'
28
- require 'rake/testtask'
29
- require 'rake/extensiontask'
30
- rescue LoadError
31
- require 'rubygems'
32
- require 'rake'
33
- require 'rdoc/task'
34
- require 'rake/testtask'
35
- require 'rake/extensiontask'
36
- end
37
-
38
- CLEAN.include '*{.h,.o,.log,.so}', 'ext/**/*{.o,.log,.so}', 'Makefile', 'ext/**/Makefile'
39
- CLOBBER.include 'lib/**/*.so', 'doc/**/*'
40
-
41
- gem = eval File.read('ruby-fizzbuzz.gemspec')
42
-
43
- RDoc::Task.new do |d|
44
- files = %w(AUTHORS CHANGES.rdoc COPYRIGHT LICENSE README.rdoc TODO)
45
-
46
- d.title = 'Yet another FizzBuzz in Ruby'
47
- d.main = 'README.rdoc'
48
-
49
- d.rdoc_dir = 'doc/rdoc'
50
-
51
- d.rdoc_files.include 'ext/**/*.{c,h}', 'lib/**/*.rb'
52
- d.rdoc_files.include.add(files)
53
-
54
- d.options << '--line-numbers'
55
- end
56
-
57
- Rake::TestTask.new do |t|
58
- t.verbose = true
59
- t.warning = true
60
- t.test_files = Dir['test/**/test_*']
61
- end
62
-
63
- Gem::PackageTask.new(gem) do |p|
64
- p.need_zip = true
65
- p.need_tar = true
66
- end
67
-
68
- Rake::ExtensionTask.new('fizzbuzz', gem) do |e|
69
- e.ext_dir = 'ext/fizzbuzz'
70
- e.lib_dir = 'lib/fizzbuzz'
71
- end
72
-
73
- desc 'Run benchmarks'
74
- task :benchmark, [:first] do |t,argument|
75
- glob = File.expand_path("../benchmark/*.rb", __FILE__)
76
- Dir[glob].each do |f|
77
- process = ['ruby', f]
78
- process << argument[:first] if argument[:first]
79
-
80
- STDOUT.sync = true
81
- STDERR.sync = true
82
-
83
- IO.popen(process) do |stream|
84
- stream.each {|line| puts line }
85
- end
86
-
87
- Process.waitpid rescue Errno::ECHILD
88
- end
89
- end
90
-
91
- Rake::Task[:test].prerequisites << :clobber
92
- Rake::Task[:test].prerequisites << :compile
93
-
94
- task :default => :test
95
-
96
- # vim: set ts=2 sw=2 sts=2 et :
97
- # encoding: utf-8
data/TODO DELETED
@@ -1,16 +0,0 @@
1
- fizzbuzz (0.9.0)
2
-
3
- * Improve github project page;
4
- * Re-factor unit tests to make them more idiomatic (maybe move to Rspec and BDD?).
5
-
6
- -- Krzysztof Wilczynski <krzysztof.wilczynski@linux.com> Mon, 15 Dec 2014 00:27:26 +0000
7
-
8
- fizzbuzz (0.8.0)
9
-
10
- * Move to YARD from RDoc (as RDoc is very bad, really);
11
- * Add pure-Ruby implementation;
12
- * Add some examples;
13
- * Add Doxygen style comments for other functions in the source code;
14
- * Improve documentation i.e. source code commenting, README file, etc.
15
-
16
- -- Krzysztof Wilczynski <krzysztof.wilczynski@linux.com> Mon, 15 Dec 2014 00:27:26 +0000
@@ -1,107 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- # :enddoc:
4
-
5
- #
6
- # benchmark_fizzbuzz.rb
7
- #
8
- # Copyright 2012-2014 Krzysztof Wilczynski
9
- #
10
- # Licensed under the Apache License, Version 2.0 (the "License");
11
- # you may not use this file except in compliance with the License.
12
- # You may obtain a copy of the License at
13
- #
14
- # http://www.apache.org/licenses/LICENSE-2.0
15
- #
16
- # Unless required by applicable law or agreed to in writing, software
17
- # distributed under the License is distributed on an "AS IS" BASIS,
18
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
- # See the License for the specific language governing permissions and
20
- # limitations under the License.
21
- #
22
-
23
- $: << File.expand_path('../../lib', __FILE__)
24
-
25
- require 'time'
26
- require 'benchmark'
27
-
28
- begin
29
- require 'fizzbuzz'
30
- rescue LoadError
31
- require 'rubygems'
32
- require 'fizzbuzz'
33
- end
34
-
35
- CAPTION = "%8s%12s%11s%10s\n" % %w(User System Total Real)
36
-
37
- n = (ARGV.shift || 1_000_000).to_i
38
-
39
- start = Time.now
40
- array = (1..n).to_a
41
- reports = []
42
-
43
- puts "FizzBuzz #{FizzBuzz::VERSION}, n = #{n}\n\n"
44
-
45
- Benchmark.benchmark(CAPTION, 24) do |bm|
46
- reports << bm.report('FizzBuzz::fizzbuzz') do
47
- FizzBuzz.fizzbuzz(1, n)
48
- end
49
-
50
- reports << bm.report('FizzBuzz#each') do
51
- FizzBuzz.new(1, n).each {|i| i }
52
- end
53
-
54
- reports << bm.report('FizzBuzz#reverse_each') do
55
- FizzBuzz.new(1, n).reverse_each {|i| i }
56
- end
57
-
58
- reports << bm.report('FizzBuzz#to_a') do
59
- FizzBuzz.new(1, n).to_a
60
- end
61
-
62
- reports << bm.report('FizzBuzz::[]') do
63
- n.times {|i| FizzBuzz[i] }
64
- end
65
-
66
- reports << bm.report('FizzBuzz::is_fizz?') do
67
- n.times {|i| FizzBuzz.is_fizz?(i) }
68
- end
69
-
70
- reports << bm.report('FizzBuzz::is_buzz?') do
71
- n.times {|i| FizzBuzz.is_buzz?(i) }
72
- end
73
-
74
- reports << bm.report('FizzBuzz::is_fizzbuzz?') do
75
- n.times {|i| FizzBuzz.is_fizzbuzz?(i) }
76
- end
77
-
78
- reports << bm.report('Array#fizzbuzz') do
79
- array.fizzbuzz
80
- end
81
-
82
- reports << bm.report('Range#fizzbuzz') do
83
- (1..n).fizzbuzz {|i| i }
84
- end
85
-
86
- []
87
- end
88
-
89
- reports.sort_by! {|i| i.real }
90
-
91
- overall = reports.reduce(:+)
92
- average = overall / reports.size
93
-
94
- fastest, slowest = reports.shift, reports.pop
95
-
96
- padding = [fastest.label, slowest.label].max
97
- padding = padding.size > 16 ? 24 : 16
98
-
99
- puts "\n%15s%s%16s\n" % ['', CAPTION.strip, 'Name'] +
100
- "%s%48s [ %-#{padding}s ]\n" % ['Fastest:', fastest.to_s.strip, fastest.label.strip] +
101
- "%s%48s [ %-#{padding}s ]\n" % ['Slowest:', slowest.to_s.strip, slowest.label.strip] +
102
- "%s%48s\n" % ['Average:', average.to_s.strip] +
103
- "%s%48s\n" % ['Overall:', overall.to_s.strip] +
104
- "\n%s%13.6f\n" % ['Wall Clock Time:', Time.now.to_f - start.to_f]
105
-
106
- # vim: set ts=2 sw=2 sts=2 et :
107
- # encoding: utf-8
@@ -1,65 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- # :enddoc:
4
-
5
- #
6
- # ruby-fizzbuzz.gemspec
7
- #
8
- # Copyright 2012-2014 Krzysztof Wilczynski
9
- #
10
- # Licensed under the Apache License, Version 2.0 (the "License");
11
- # you may not use this file except in compliance with the License.
12
- # You may obtain a copy of the License at
13
- #
14
- # http://www.apache.org/licenses/LICENSE-2.0
15
- #
16
- # Unless required by applicable law or agreed to in writing, software
17
- # distributed under the License is distributed on an "AS IS" BASIS,
18
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
- # See the License for the specific language governing permissions and
20
- # limitations under the License.
21
- #
22
-
23
- signing_key = File.expand_path('~/.gem/kwilczynski-private.pem')
24
-
25
- Gem::Specification.new do |s|
26
- s.name = 'ruby-fizzbuzz'
27
- s.summary = 'Yet another FizzBuzz in Ruby'
28
-
29
- s.description = <<-EOS
30
- Yet another FizzBuzz in Ruby.
31
-
32
- Provides simple and fast solution to a popular FizzBuzz problem for Ruby.
33
-
34
- Written in C as an example of using Ruby's C API - with the support for
35
- arbitrary large numeric values via the Bignum class.
36
- EOS
37
-
38
- s.platform = Gem::Platform::RUBY
39
- s.version = File.read('VERSION').strip
40
- s.license = 'Apache License, Version 2.0'
41
- s.author = 'Krzysztof Wilczynski'
42
- s.email = 'krzysztof.wilczynski@linux.com'
43
- s.homepage = 'http://about.me/kwilczynski'
44
- s.has_rdoc = true
45
-
46
- s.required_ruby_version = '>= 1.9.2'
47
- s.rubygems_version = '~> 2.2.0'
48
-
49
- s.files = Dir['ext/**/*.{c,h,rb}'] +
50
- Dir['lib/**/*.rb'] +
51
- Dir['benchmark/**/*.rb'] +
52
- Dir['test/**/*.rb'] +
53
- %w(Rakefile ruby-fizzbuzz.gemspec AUTHORS
54
- CHANGES CHANGES.rdoc COPYRIGHT LICENSE
55
- README README.rdoc TODO VERSION)
56
-
57
- s.executables << 'fizzbuzz'
58
- s.require_paths << 'lib'
59
- s.extensions << 'ext/fizzbuzz/extconf.rb'
60
-
61
- s.signing_key = signing_key if File.exists?(signing_key)
62
- end
63
-
64
- # vim: set ts=2 sw=2 sts=2 et :
65
- # encoding: utf-8
@@ -1,639 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- # :enddoc:
4
-
5
- #
6
- # test_fizzbuzz.rb
7
- #
8
- # Copyright 2012-2014 Krzysztof Wilczynski
9
- #
10
- # Licensed under the Apache License, Version 2.0 (the "License");
11
- # you may not use this file except in compliance with the License.
12
- # You may obtain a copy of the License at
13
- #
14
- # http://www.apache.org/licenses/LICENSE-2.0
15
- #
16
- # Unless required by applicable law or agreed to in writing, software
17
- # distributed under the License is distributed on an "AS IS" BASIS,
18
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19
- # See the License for the specific language governing permissions and
20
- # limitations under the License.
21
- #
22
-
23
- begin
24
- require 'coveralls'
25
- Coveralls.wear!
26
- rescue LoadError
27
- STDERR.puts 'The Coveralls gem is not installed, skipping ...'
28
- end
29
-
30
- gem 'test-unit', '>= 3.0.0'
31
-
32
- require 'test/unit'
33
- require 'fizzbuzz'
34
-
35
- class Fixnum
36
- def self.overflow_size_with_sign
37
- bits = [''].pack('p').size * 8
38
- 2 ** (bits - 1) - 1
39
- end
40
- end
41
-
42
- class FizzBuzzTest < Test::Unit::TestCase
43
- def setup
44
- @fixnum = 1
45
-
46
- @bignum = 1_000_000_000_000
47
- @large_bignum = 1_000_000_000_000_000
48
-
49
- if Fixnum.overflow_size_with_sign + 1 > 2147483647
50
- @bignum = @bignum ** 2
51
- @large_bignum = @large_bignum ** 2
52
- end
53
-
54
- @words = %w(Fizz Buzz FizzBuzz).freeze
55
-
56
- @expected = [
57
- 1, 2, 'Fizz',
58
- 4, 'Buzz', 'Fizz',
59
- 7, 8, 'Fizz',
60
- 'Buzz', 11, 'Fizz',
61
- 13, 14, 'FizzBuzz'
62
- ].freeze
63
-
64
- @expected_bignum = [
65
- @bignum + 1, 'Fizz', @bignum + 3,
66
- @bignum + 4, 'FizzBuzz', @bignum + 6,
67
- @bignum + 7, 'Fizz', @bignum + 9,
68
- 'Buzz', 'Fizz', @bignum + 12,
69
- @bignum + 13, 'Fizz', 'Buzz'
70
- ]
71
-
72
- @fizzbuzz = FizzBuzz.new(1, 15)
73
- end
74
-
75
- def test_fizzbuzz_alias
76
- assert_same(FB, FizzBuzz)
77
- end
78
-
79
- def test_fizzbuzz_singleton_methods
80
- [
81
- :fizzbuzz,
82
- :is_fizz?,
83
- :is_buzz?,
84
- :is_fizzbuzz?
85
- ].each {|i| assert_respond_to(FizzBuzz, i) }
86
- end
87
-
88
- def test_fizzbuzz_new_instance
89
- assert(@fizzbuzz.class == FizzBuzz)
90
- end
91
-
92
- def test_fizzbuzz_instance_methods
93
- [
94
- :to_a,
95
- :each,
96
- :reverse_each,
97
- :to_hash,
98
- :as_json,
99
- :to_json
100
- ].each {|i| assert_respond_to(@fizzbuzz, i) }
101
- end
102
-
103
- def test_fixnum_integration
104
- [
105
- :fizz?,
106
- :buzz?,
107
- :fizzbuzz?
108
- ].each {|i| assert_respond_to(@fixnum, i) }
109
- end
110
-
111
- def test_to_hash
112
- obtained = @fizzbuzz.to_hash
113
- assert({
114
- 'fizzbuzz' => {
115
- 'start' => 1,
116
- 'stop' => 15
117
- }
118
- } == obtained)
119
- end
120
-
121
- def test_as_json
122
- obtained = @fizzbuzz.as_json
123
- assert({
124
- 'json_class' => 'FizzBuzz',
125
- 'fizzbuzz' => {
126
- 'start' => 1,
127
- 'stop' => 15
128
- }
129
- } == obtained)
130
- end
131
-
132
- def test_to_json
133
- obtained = @fizzbuzz.to_json
134
- assert({
135
- 'json_class' => 'FizzBuzz',
136
- 'fizzbuzz' => {
137
- 'start' => 1,
138
- 'stop' => 15
139
- }
140
- }.to_json == obtained)
141
- end
142
-
143
- def test_singleton_from_json
144
- # About JSON::parse, see:
145
- # https://www.ruby-lang.org/en/news/2013/02/22/json-dos-cve-2013-0269/
146
- obtained = @fizzbuzz.to_json
147
- assert({
148
- 'fizzbuzz' => {
149
- 'start' => 1,
150
- 'stop' => 15
151
- }
152
- } == JSON.load(obtained).to_hash)
153
- end
154
-
155
- def test_fixnum_is_fizz
156
- assert_true(3.fizz?)
157
- assert_false(15.fizz?)
158
- end
159
-
160
- def test_fixnum_is_buzz
161
- assert_true(5.buzz?)
162
- assert_false(15.buzz?)
163
- end
164
-
165
- def test_fixnum_is_fizzbuzz
166
- assert_equal(15.fizzbuzz?, true)
167
- assert_false(3.fizzbuzz?, false)
168
- assert_false(5.fizzbuzz?, false)
169
- end
170
-
171
- def test_bignum_integration
172
- [
173
- :fizz?,
174
- :buzz?,
175
- :fizzbuzz?
176
- ].each {|i| assert_respond_to(@bignum, i) }
177
- end
178
-
179
- def test_bignum_is_fizz
180
- assert_true((@bignum + 2).fizz?)
181
- assert_false((@bignum + 15).fizz?)
182
- end
183
-
184
- def test_bignum_is_buzz
185
- assert_true((@bignum + 15).buzz?)
186
- assert_false((@bignum + 5).buzz?)
187
- end
188
-
189
- def test_bignum_is_fizzbuzz
190
- assert_true((@bignum + 5).fizzbuzz?)
191
- assert_false((@bignum + 2).fizzbuzz?)
192
- assert_false((@bignum + 15).fizzbuzz?)
193
- end
194
-
195
- def test_array_integration
196
- assert_respond_to([], :fizzbuzz)
197
- end
198
-
199
- def test_array_integration_fizzbuzz
200
- obtained = Array(1..15).fizzbuzz
201
- assert_kind_of(Array, obtained)
202
- assert_equal(obtained, @expected)
203
- end
204
-
205
- def test_array_integration_fizzbuzz_reverse
206
- obtained = Array(1..15).fizzbuzz(true)
207
- assert_kind_of(Array, obtained)
208
- assert_equal(obtained, @expected.reverse)
209
- end
210
-
211
- def test_array_integration_fizzbuzz_block
212
- obtained = []
213
- Array(1..15).fizzbuzz {|i| obtained << i }
214
- assert_equal(obtained, @expected)
215
- end
216
-
217
- def test_array_integration_fizzbuzz_block_reverse
218
- obtained = []
219
- Array(1..15).fizzbuzz(true) {|i| obtained << i }
220
- assert_equal(obtained, @expected.reverse)
221
- end
222
-
223
- def test_range_integration
224
- assert_respond_to((0..0), :fizzbuzz)
225
- end
226
-
227
- def test_range_integration_fizzbuzz
228
- obtained = (1..15).fizzbuzz
229
- assert_kind_of(Enumerator, obtained)
230
- assert_equal(obtained.to_a, @expected)
231
- end
232
-
233
- def test_range_integration_fizzbuzz_reverse
234
- obtained = (1..15).fizzbuzz(true)
235
- assert_kind_of(Enumerator, obtained)
236
- assert_equal(obtained.to_a, @expected.reverse)
237
- end
238
-
239
- def test_range_integration_fizzbuzz_block
240
- obtained = []
241
- (1..15).fizzbuzz {|i| obtained << i }
242
- assert_equal(obtained, @expected)
243
- end
244
-
245
- def test_range_integration_fizzbuzz_block_reverse
246
- obtained = []
247
- (1..15).fizzbuzz(true) {|i| obtained << i }
248
- assert_equal(obtained, @expected.reverse)
249
- end
250
-
251
- def test_singleton_fizzbuzz_incorrect_range_error
252
- assert_raise FizzBuzz::RangeError do
253
- FizzBuzz.fizzbuzz(2, 1)
254
- end
255
- end
256
-
257
- def test_singleton_fizzbuzz_incorrect_type_error
258
- assert_raise FizzBuzz::TypeError do
259
- FizzBuzz.fizzbuzz('', '')
260
- end
261
- end
262
-
263
- def test_singleton_fizzbuzz_fixnum
264
- obtained = FizzBuzz.fizzbuzz(15, 15)
265
- assert_kind_of(Array, obtained)
266
- assert_equal(obtained, ['FizzBuzz'])
267
- end
268
-
269
- def test_singleton_fizzbuzz_bignum
270
- obtained = FizzBuzz.fizzbuzz(@bignum + 5, @bignum + 5)
271
- assert_kind_of(Array, obtained)
272
- assert_equal(obtained, ['FizzBuzz'])
273
- end
274
-
275
- def test_singleton_fizzbuzz_large_bignum
276
- obtained = FizzBuzz.fizzbuzz(@large_bignum + 5, @large_bignum + 5)
277
- assert_kind_of(Array, obtained)
278
- assert_equal(obtained, ['FizzBuzz'])
279
- end
280
-
281
- def test_singleton_fizzbuzz_array
282
- obtained = FizzBuzz.fizzbuzz(1, 15)
283
- assert_kind_of(Array, obtained)
284
- assert_equal(obtained, @expected)
285
- end
286
-
287
- def test_singleton_fizzbuzz_array_reverse
288
- obtained = FizzBuzz.fizzbuzz(1, 15, true)
289
- assert_kind_of(Array, obtained)
290
- assert_equal(obtained, @expected.reverse)
291
- end
292
-
293
- def test_singleton_fizzbuzz_block
294
- obtained = []
295
- FizzBuzz.fizzbuzz(1, 15) {|i| obtained << i }
296
- assert_equal(obtained, @expected)
297
- end
298
-
299
- def test_singleton_fizzbuzz_block_reverse
300
- obtained = []
301
- FizzBuzz.fizzbuzz(1, 15, true) {|i| obtained << i }
302
- assert_equal(obtained, @expected.reverse)
303
- end
304
-
305
- def test_singleton_squre_fixnum
306
- obtained = []
307
-
308
- obtained << FizzBuzz[3]
309
- obtained << FizzBuzz[5]
310
- obtained << FizzBuzz[15]
311
-
312
- assert_kind_of(Fixnum, FizzBuzz[0])
313
-
314
- obtained.each_with_index do |v,i|
315
- assert_kind_of(String, v)
316
- assert_equal(obtained[i], @words[i])
317
- end
318
- end
319
-
320
- def test_singleton_squre_bignum
321
- obtained = []
322
-
323
- obtained << FizzBuzz[@bignum + 2]
324
- obtained << FizzBuzz[@bignum + 15]
325
- obtained << FizzBuzz[@bignum + 5]
326
-
327
- assert_kind_of(Bignum, FizzBuzz[@bignum + 3])
328
-
329
- obtained.each_with_index do |v,i|
330
- assert_kind_of(String, v)
331
- assert_equal(obtained[i], @words[i])
332
- end
333
- end
334
-
335
- def test_singleton_squre_large_bignum
336
- obtained = []
337
-
338
- obtained << FizzBuzz[@large_bignum + 2]
339
- obtained << FizzBuzz[@large_bignum + 15]
340
- obtained << FizzBuzz[@large_bignum + 5]
341
-
342
- assert_kind_of(Bignum, FizzBuzz[@large_bignum + 3])
343
-
344
- obtained.each_with_index do |v,i|
345
- assert_kind_of(String, v)
346
- assert_equal(obtained[i], @words[i])
347
- end
348
- end
349
-
350
- def test_singleton_is_fizz
351
- assert_true(FizzBuzz.is_fizz?(3))
352
- assert_false(FizzBuzz.is_fizz?(15))
353
- end
354
-
355
- def test_singleton_is_buzz
356
- assert_true(FizzBuzz.is_buzz?(5))
357
- assert_false(FizzBuzz.is_buzz?(15))
358
- end
359
-
360
- def test_singleton_is_fizzbuzz
361
- assert_true(FizzBuzz.is_fizzbuzz?(15))
362
- assert_false(FizzBuzz.is_fizzbuzz?(3))
363
- assert_false(FizzBuzz.is_fizzbuzz?(5))
364
- end
365
-
366
- def test_fizzbuzz_for_0
367
- obtained_square = FizzBuzz[0]
368
- obtained_is_fizzbuzz = FizzBuzz.is_fizzbuzz?(0)
369
-
370
- assert_kind_of(Fixnum, obtained_square)
371
- assert_equal(obtained_square, 0)
372
- assert_false(obtained_is_fizzbuzz)
373
- end
374
-
375
- def test_fizzbuzz_for_negative_fixnum
376
- obtained_square = FizzBuzz[-1]
377
- obtained_is_fizzbuzz = FizzBuzz.is_fizzbuzz?(-1)
378
-
379
- assert_kind_of(Fixnum, obtained_square)
380
- assert_equal(obtained_square, -1)
381
- assert_false(obtained_is_fizzbuzz)
382
- end
383
-
384
- def test_to_a_fixnum
385
- obtained = @fizzbuzz.to_a
386
-
387
- assert_kind_of(Array, obtained)
388
- assert_equal(obtained, @expected)
389
- end
390
-
391
- def test_each_fixnum
392
- obtained = []
393
- @fizzbuzz.each {|i| obtained << i }
394
- assert_equal(obtained, @expected)
395
- end
396
-
397
- def test_reverse_each_fixnum
398
- obtained = []
399
- @fizzbuzz.reverse_each {|i| obtained << i }
400
- assert_equal(obtained, @expected.reverse)
401
- end
402
-
403
- def test_to_a_bignum
404
- @fizzbuzz = FizzBuzz.new(@bignum + 1, @bignum + 15)
405
- obtained = @fizzbuzz.to_a
406
-
407
- assert_kind_of(Array, obtained)
408
- assert_equal(obtained, @expected_bignum)
409
- end
410
-
411
- def test_each_bignum
412
- @fizzbuzz = FizzBuzz.new(@bignum + 1, @bignum + 15)
413
-
414
- obtained = []
415
- @fizzbuzz.each {|i| obtained << i }
416
-
417
- assert_equal(obtained, @expected_bignum)
418
- end
419
-
420
- def test_reverse_each_bignum
421
- @fizzbuzz = FizzBuzz.new(@bignum + 1, @bignum + 15)
422
-
423
- obtained = []
424
- @fizzbuzz.reverse_each {|i| obtained << i }
425
-
426
- assert_equal(obtained, @expected_bignum.reverse)
427
- end
428
-
429
- def test_for_fizzbuzz_fixnum
430
- obtained = @fizzbuzz.to_a
431
-
432
- assert_kind_of(Array, obtained)
433
- assert_equal(obtained[14], 'FizzBuzz')
434
- end
435
-
436
- def test_for_fizzbuzz_bignum
437
- @fizzbuzz = FizzBuzz.new(@bignum + 5, @bignum + 5)
438
-
439
- obtained = @fizzbuzz.to_a
440
-
441
- assert_kind_of(Array, obtained)
442
- assert_equal(obtained[0], 'FizzBuzz')
443
- end
444
-
445
- def test_for_fizzbuzz_large_bignum
446
- @fizzbuzz = FizzBuzz.new(@large_bignum + 5, @large_bignum + 5)
447
-
448
- obtained = @fizzbuzz.to_a
449
-
450
- assert_kind_of(Array, obtained)
451
- assert_equal(obtained[0], 'FizzBuzz')
452
- end
453
-
454
- def test_correct_start_fixnum
455
- assert_kind_of(Fixnum, @fizzbuzz.start)
456
- assert_equal(@fizzbuzz.start, 1)
457
-
458
- @fizzbuzz.start = 2
459
-
460
- assert_kind_of(Fixnum, @fizzbuzz.start)
461
- assert_equal(@fizzbuzz.start, 2)
462
- end
463
-
464
- def test_correct_start_bignum
465
- @fizzbuzz = FizzBuzz.new(@bignum, @bignum)
466
-
467
- assert_kind_of(Bignum, @fizzbuzz.start)
468
- assert_equal(@fizzbuzz.start, @bignum)
469
-
470
- @fizzbuzz.start = @bignum - 5
471
-
472
- assert_kind_of(Bignum, @fizzbuzz.start)
473
- assert_equal(@fizzbuzz.start, @bignum - 5)
474
- end
475
-
476
- def test_correct_start_large_bignum
477
- @fizzbuzz = FizzBuzz.new(@large_bignum, @large_bignum)
478
-
479
- assert_kind_of(Bignum, @fizzbuzz.start)
480
- assert_equal(@fizzbuzz.start, @large_bignum)
481
-
482
- @fizzbuzz.start = @large_bignum - 5
483
-
484
- assert_kind_of(Bignum, @fizzbuzz.start)
485
- assert_equal(@fizzbuzz.start, @large_bignum - 5)
486
- end
487
-
488
- def test_correct_stop_fixnum
489
- assert_kind_of(Fixnum, @fizzbuzz.stop)
490
- assert_equal(@fizzbuzz.stop, 15)
491
-
492
- @fizzbuzz.stop = 5
493
-
494
- assert_kind_of(Fixnum, @fizzbuzz.stop)
495
- assert_equal(@fizzbuzz.stop, 5)
496
- end
497
-
498
- def test_correct_stop_bignum
499
- @fizzbuzz = FizzBuzz.new(@bignum, @bignum)
500
-
501
- assert_kind_of(Bignum, @fizzbuzz.stop)
502
- assert_equal(@fizzbuzz.stop, @bignum)
503
-
504
- @fizzbuzz.stop = @bignum + 5
505
-
506
- assert_kind_of(Bignum, @fizzbuzz.stop)
507
- assert_equal(@fizzbuzz.stop, @bignum + 5)
508
- end
509
-
510
- def test_correct_stop_large_bignum
511
- @fizzbuzz = FizzBuzz.new(@large_bignum, @large_bignum)
512
-
513
- assert_kind_of(Bignum, @fizzbuzz.stop)
514
- assert_equal(@fizzbuzz.stop, @large_bignum)
515
-
516
- @fizzbuzz.stop = @large_bignum + 5
517
-
518
- assert_kind_of(Bignum, @fizzbuzz.stop)
519
- assert_equal(@fizzbuzz.stop, @large_bignum + 5)
520
- end
521
-
522
- def test_missing_arguments
523
- assert_raise ArgumentError do
524
- FizzBuzz.new
525
- end
526
- end
527
-
528
- def test_arguments_type_error_strings
529
- assert_raise FizzBuzz::TypeError do
530
- FizzBuzz.new('', '')
531
- end
532
- end
533
-
534
- def test_arguments_type_error_message
535
- FizzBuzz['']
536
- rescue FizzBuzz::TypeError => error
537
- assert_equal(error.message, 'must be a Fixnum or Bignum type')
538
- end
539
-
540
- def test_arguments_type_error_nils
541
- assert_raise FizzBuzz::TypeError do
542
- FizzBuzz.new(nil, nil)
543
- end
544
- end
545
-
546
- def test_incorrect_range_error
547
- assert_raise FizzBuzz::RangeError do
548
- FizzBuzz.new(2, 1)
549
- end
550
- end
551
-
552
- def test_start_type_error
553
- assert_raise FizzBuzz::TypeError do
554
- @fizzbuzz.start = ''
555
- end
556
- end
557
-
558
- def test_stop_type_error
559
- assert_raise FizzBuzz::TypeError do
560
- @fizzbuzz.stop = ''
561
- end
562
- end
563
-
564
- def test_correct_start_stop
565
- @fizzbuzz.start = 2
566
- @fizzbuzz.stop = 3
567
-
568
- assert_kind_of(Fixnum, @fizzbuzz.start)
569
- assert_kind_of(Fixnum, @fizzbuzz.stop)
570
- assert_equal(@fizzbuzz.start, 2)
571
- assert_equal(@fizzbuzz.stop, 3)
572
- end
573
-
574
- def test_fizzbuzz_error
575
- message = 'The quick brown fox jumps over the lazy dog'
576
- error = FizzBuzz::Error.new(message)
577
-
578
- assert_respond_to(error, :start)
579
- assert_respond_to(error, :stop)
580
- assert_equal(error.message, message)
581
- assert_nil(error.start)
582
- assert_nil(error.stop)
583
- end
584
-
585
- def test_start_range_error
586
- assert_raise FizzBuzz::RangeError do
587
- @fizzbuzz.start = 16
588
- end
589
- end
590
-
591
- def test_stop_range_error
592
- assert_raise FizzBuzz::RangeError do
593
- @fizzbuzz.stop = -1
594
- end
595
- end
596
-
597
- def test_for_not_raising_range_error
598
- assert_nothing_raised do
599
- FizzBuzz.new(1, @bignum ** 2)
600
- FizzBuzz.new(-@large_bignum, 15)
601
- end
602
- end
603
-
604
- def test_error_attributes_not_nil
605
- @fizzbuzz.start = 1
606
- @fizzbuzz.stop = 0
607
- rescue FizzBuzz::RangeError => error
608
- assert_equal(error.start, 1)
609
- assert_equal(error.stop, 0)
610
- end
611
-
612
- def test_error_attributes_nil
613
- FizzBuzz.new('', '')
614
- rescue FizzBuzz::TypeError => error
615
- assert_nil(error.start)
616
- assert_nil(error.stop)
617
- end
618
-
619
- def test_start_type_error_message
620
- FizzBuzz.new('', 15)
621
- rescue FizzBuzz::TypeError => error
622
- assert_equal(error.message, 'must be a Fixnum or Bignum type for start')
623
- end
624
-
625
- def test_stop_type_error_message
626
- FizzBuzz.new(1, '')
627
- rescue FizzBuzz::TypeError => error
628
- assert_equal(error.message, 'must be a Fixnum or Bignum type for stop')
629
- end
630
-
631
- def test_range_error_message
632
- FizzBuzz.new(15, 1)
633
- rescue FizzBuzz::RangeError => error
634
- assert_equal(error.message, 'start value is higher than stop value')
635
- end
636
- end
637
-
638
- # vim: set ts=2 sw=2 sts=2 et :
639
- # encoding: utf-8