Created
May 16, 2012 16:37
-
-
Save erich/2711999 to your computer and use it in GitHub Desktop.
Test
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
class FirstTenPrimeNumbersMath | |
def prime_numbers | |
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29] | |
end | |
def multiply(first_number, second_number) | |
if are_integers?(first_number, second_number) | |
first_number * second_number | |
else | |
"Only integers are allowed" | |
end | |
end | |
def are_integers?(first_number, second_number) | |
first_number.is_a? Integer and second_number.is_a? Integer | |
end | |
def multiply_row_by_number(number) | |
prime_numbers.inject([]) {|array, prime_number| array << multiply(number, prime_number)} | |
end | |
end | |
class TablePresenter | |
def dashes | |
"---------------------------------------------" | |
end | |
def first_row | |
dashes+"\n" | |
end | |
def header_string(string) | |
string | |
end | |
def header(string) | |
first_row + header_string(string) + "\n" + first_row | |
end | |
def footer | |
dashes | |
end | |
def format_element(number) | |
number.to_s+"|" | |
end | |
def format_row(array) | |
array.inject("|") {|string, element| string += format_element(element)} | |
end | |
def format_column(array) | |
array | |
end | |
end | |
class PrimesTable | |
attr_accessor :prime_numbers, :table_presenter | |
def initialize(prime_numbers, table_presenter) | |
@prime_numbers = prime_numbers | |
@table_presenter = table_presenter | |
end | |
def format_table | |
puts @table_presenter.header("Times 10 Primes") | |
@prime_numbers.prime_numbers.each do |prime_number| | |
puts prime_number.to_s + @table_presenter.format_row(@prime_numbers.multiply_row_by_number(prime_number)) | |
end | |
puts @table_presenter.footer | |
end | |
end | |
primes_table = PrimesTable.new(FirstTenPrimeNumbersMath.new, TablePresenter.new) | |
primes_table.format_table |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'minitest/spec' | |
require 'minitest/autorun' | |
require './prime_numbers.rb' | |
describe FirstTenPrimeNumbersMath do | |
before(:each) do | |
@prime_numbers = FirstTenPrimeNumbersMath.new | |
end | |
it 'must have method prime_numbers' do | |
@prime_numbers.prime_numbers.must_equal [2, 3, 5, 7, 11, 13, 17, 19, 23, 29] | |
end | |
it 'wont include zero' do | |
@prime_numbers.prime_numbers.wont_include 0 | |
end | |
it 'must multiply correctly' do | |
@prime_numbers.multiply(2, 2).must_equal 4 | |
end | |
it 'must multiply only integers' do | |
@prime_numbers.multiply('as', 1).must_equal "Only integers are allowed" | |
end | |
it 'must multiply first row' do | |
@prime_numbers.multiply_row_by_number(2).must_equal [4, 6, 10, 14, 22, 26, 34, 38, 46, 58] | |
end | |
end | |
describe TablePresenter do | |
before(:each) do | |
@table = TablePresenter.new | |
end | |
it 'must print table header' do | |
@table.header_string('Times 10 Primes').must_equal "Times 10 Primes" | |
end | |
it 'must print table footer' do | |
@table.footer.must_equal "---------------------------------------------" | |
end | |
it 'must print not first element with proper format' do | |
@table.format_element(2).must_equal "2|" | |
end | |
it 'must format row' do | |
@table.format_row([1,2,3]).must_equal "|1|2|3|" | |
end | |
end | |
describe PrimesTable do | |
before(:each) do | |
@prime_numbers = FirstTenPrimeNumbersMath.new | |
@table = TablePresenter.new | |
@primes_table = PrimesTable.new(@prime_numbers, @table) | |
end | |
it 'must have prime_numbers and table_presenter methods' do | |
@primes_table.prime_numbers.methods.must_include(:multiply) | |
@primes_table.table_presenter.methods.must_include(:first_row) | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'rake/testtask' | |
Rake::TestTask.new do |t| | |
t.libs.push "lib" | |
t.test_files = FileList['*_spec.rb'] | |
t.verbose = true | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment