ruby - gigasecond
This commit is contained in:
		
							
								
								
									
										35
									
								
								ruby/gigasecond/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								ruby/gigasecond/README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					# Gigasecond
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Calculate the moment when someone has lived for 10^9 seconds.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					A gigasecond is 10^9 (1,000,000,000) seconds.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* * * *
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For installation and learning resources, refer to the
 | 
				
			||||||
 | 
					[exercism help page](http://exercism.io/languages/ruby).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For running the tests provided, you will need the Minitest gem. Open a
 | 
				
			||||||
 | 
					terminal window and run the following command to install minitest:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    gem install minitest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you would like color output, you can `require 'minitest/pride'` in
 | 
				
			||||||
 | 
					the test file, or note the alternative instruction, below, for running
 | 
				
			||||||
 | 
					the test file.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Run the tests from the exercise directory using the following command:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ruby gigasecond_test.rb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					To include color from the command line:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ruby -r minitest/pride gigasecond_test.rb
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Source
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Chapter 9 in Chris Pine's online Learn to Program tutorial. [http://pine.fm/LearnToProgram/?Chapter=09](http://pine.fm/LearnToProgram/?Chapter=09)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Submitting Incomplete Solutions
 | 
				
			||||||
 | 
					It's possible to submit an incomplete solution so you can see how others have completed the exercise.
 | 
				
			||||||
							
								
								
									
										7
									
								
								ruby/gigasecond/gigasecond.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								ruby/gigasecond/gigasecond.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					class Gigasecond
 | 
				
			||||||
 | 
					  GIGASECOND = 10 ** 9
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def self.from(start)
 | 
				
			||||||
 | 
					    start + GIGASECOND
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
							
								
								
									
										30
									
								
								ruby/gigasecond/gigasecond_test.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								ruby/gigasecond/gigasecond_test.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					require 'minitest/autorun'
 | 
				
			||||||
 | 
					require_relative 'gigasecond'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Common test data version: 1.1.0 5506bac
 | 
				
			||||||
 | 
					class GigasecondTest < Minitest::Test
 | 
				
			||||||
 | 
					  def test_date_only_specification_of_time
 | 
				
			||||||
 | 
					    # skip
 | 
				
			||||||
 | 
					    assert_equal Time.utc(2043, 1, 1, 1, 46, 40), Gigasecond.from(Time.utc(2011, 4, 25, 0, 0, 0))
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def test_second_test_for_date_only_specification_of_time
 | 
				
			||||||
 | 
					    # skip
 | 
				
			||||||
 | 
					    assert_equal Time.utc(2009, 2, 19, 1, 46, 40), Gigasecond.from(Time.utc(1977, 6, 13, 0, 0, 0))
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def test_third_test_for_date_only_specification_of_time
 | 
				
			||||||
 | 
					    # skip
 | 
				
			||||||
 | 
					    assert_equal Time.utc(1991, 3, 27, 1, 46, 40), Gigasecond.from(Time.utc(1959, 7, 19, 0, 0, 0))
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def test_full_time_specified
 | 
				
			||||||
 | 
					    # skip
 | 
				
			||||||
 | 
					    assert_equal Time.utc(2046, 10, 2, 23, 46, 40), Gigasecond.from(Time.utc(2015, 1, 24, 22, 0, 0))
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def test_full_time_with_day_roll_over
 | 
				
			||||||
 | 
					    # skip
 | 
				
			||||||
 | 
					    assert_equal Time.utc(2046, 10, 3, 1, 46, 39), Gigasecond.from(Time.utc(2015, 1, 24, 23, 59, 59))
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
		Reference in New Issue
	
	Block a user