stravid-fraction 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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