stravid-fraction 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc108ee6fe2a385dc2146ae7701d92eaf64d64708793fccb7a9f39b470bf375c
4
- data.tar.gz: 8b717dfba66f2a23916e2e808dd823f47cfb000583f5a93d4bd195cf6ccf9f2e
3
+ metadata.gz: d90557cae95f395667404d40c11f4231faabdf9a3bb6bdcb3ebf5fcb9a09c882
4
+ data.tar.gz: 58ecec6dc15b654b0bc5e58fcb928f421cfece539a6fbe1dd5fb2d7971737ff4
5
5
  SHA512:
6
- metadata.gz: ff6abfb19b527a8d6e77338be4549c4e6c3f3841c550bfd72ca84eaa1274afd0f6b92dcaa317590f63d44180dbe735135e8d9c91d2072f2f3c999c65db37c8cf
7
- data.tar.gz: 22a52fd7021db42815cb2649f3b810c829fd7398d39dca2bc104f15100f35b25a231f82d261b92171742aafc93597d2a113650ba9a916226f0b035228b4ced6b
6
+ metadata.gz: 3eaf82b1c8463225c7b933996d37be65b61a614362a8bd8eb6386cafe58b563180c1463e7bfcca09ef22505e975959cf75a79ad7bcdb759bf4faee6bfc22fd2d
7
+ data.tar.gz: 1d380635f58d3c6d595950cb129f1d71c1c186eb0b9e9ae7b454321fe7f29074658fea1d7c79cdd4be053c1bb31655033c16fb5c9f7029e58c7a652685e5ea0d
data/CHANGELOG.txt ADDED
@@ -0,0 +1,5 @@
1
+ 2019-11-18 : 0.1.0
2
+ * Add ability to add fractions.
3
+
4
+ 2019-11-17 : 0.0.1
5
+ * Setup gem.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- stravid-fraction (0.0.1)
4
+ stravid-fraction (0.1.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -1,4 +1,5 @@
1
- require "stravid/fraction/version"
1
+ require 'stravid/fraction/version'
2
+ require 'stravid/fraction/fraction'
2
3
 
3
4
  module Stravid
4
5
  module Fraction
@@ -0,0 +1,40 @@
1
+ module Stravid
2
+ module Fraction
3
+ class Fraction
4
+ def initialize(value)
5
+ parts = value.split('/')
6
+ @numerator = parts[0].to_i
7
+ @denominator = (parts[1] || 1).to_i
8
+ end
9
+
10
+ def +(other)
11
+ a_denominator = self.denominator
12
+ b_denominator = other.denominator
13
+ a_numerator = self.numerator
14
+ b_numerator = other.numerator
15
+
16
+ if a_denominator != b_denominator
17
+ actual_denominator = a_denominator * b_denominator
18
+ a_numerator = a_numerator * b_denominator
19
+ b_numerator = b_numerator * a_denominator
20
+ else
21
+ actual_denominator = a_denominator
22
+ end
23
+
24
+ new_numerator = a_numerator + b_numerator
25
+ new_denominator = actual_denominator / (new_numerator.gcd(actual_denominator))
26
+ new_numerator = new_numerator / (new_numerator.gcd(actual_denominator))
27
+
28
+ Fraction.new("#{new_numerator}/#{new_denominator}")
29
+ end
30
+
31
+ def ==(other)
32
+ other.numerator == numerator && other.denominator == denominator
33
+ end
34
+ alias_method :eql?, :==
35
+
36
+ protected
37
+ attr_reader :numerator, :denominator
38
+ end
39
+ end
40
+ end
@@ -1,5 +1,5 @@
1
1
  module Stravid
2
2
  module Fraction
3
- VERSION = '0.0.1'
3
+ VERSION = '0.1.0'
4
4
  end
5
5
  end
@@ -2,9 +2,35 @@ require_relative '../unit_helper'
2
2
  require 'stravid/fraction'
3
3
 
4
4
  class DummyTitle < UnitTest
5
- include Stravid
5
+ include Stravid::Fraction
6
6
 
7
- def test_dummy
8
- assert_equal Fraction.new('1/2') + Fraction.new('1/2'), Fraction.new('1/1')
7
+ def test_equality
8
+ assert_equal Fraction.new('0'), Fraction.new('0')
9
+ refute_equal Fraction.new('1'), Fraction.new('0')
10
+ refute_equal Fraction.new('1/2'), Fraction.new('1/3')
11
+ end
12
+
13
+ def test_addition_of_zero_and_zero
14
+ assert_equal Fraction.new('0') + Fraction.new('0'), Fraction.new('0')
15
+ end
16
+
17
+ def test_addition_of_one_and_zero
18
+ assert_equal Fraction.new('1') + Fraction.new('0'), Fraction.new('1')
19
+ end
20
+
21
+ def test_addition_of_one_and_one
22
+ assert_equal Fraction.new('1') + Fraction.new('1'), Fraction.new('2')
23
+ end
24
+
25
+ def test_addition_of_one_third_and_one_third
26
+ assert_equal Fraction.new('1/3') + Fraction.new('1/3'), Fraction.new('2/3')
27
+ end
28
+
29
+ def test_addition_of_one_sixth_and_one_sixth
30
+ assert_equal Fraction.new('1/6') + Fraction.new('1/6'), Fraction.new('1/3')
31
+ end
32
+
33
+ def test_addition_of_one_sixth_and_one_sixth
34
+ assert_equal Fraction.new('7/3') + Fraction.new('4/5'), Fraction.new('47/15')
9
35
  end
10
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stravid-fraction
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Strauß
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-17 00:00:00.000000000 Z
11
+ date: 2019-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -61,6 +61,7 @@ extra_rdoc_files: []
61
61
  files:
62
62
  - ".gitignore"
63
63
  - ".ruby-version"
64
+ - CHANGELOG.txt
64
65
  - Gemfile
65
66
  - Gemfile.lock
66
67
  - LICENSE.txt
@@ -69,6 +70,7 @@ files:
69
70
  - bin/rake
70
71
  - bin/watchexec
71
72
  - lib/stravid/fraction.rb
73
+ - lib/stravid/fraction/fraction.rb
72
74
  - lib/stravid/fraction/version.rb
73
75
  - scripts/test-runner.sh
74
76
  - scripts/test-watcher.sh