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 +4 -4
- data/CHANGELOG.txt +5 -0
- data/Gemfile.lock +1 -1
- data/lib/stravid/fraction.rb +2 -1
- data/lib/stravid/fraction/fraction.rb +40 -0
- data/lib/stravid/fraction/version.rb +1 -1
- data/tests/unit/dummy_test.rb +29 -3
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d90557cae95f395667404d40c11f4231faabdf9a3bb6bdcb3ebf5fcb9a09c882
|
|
4
|
+
data.tar.gz: 58ecec6dc15b654b0bc5e58fcb928f421cfece539a6fbe1dd5fb2d7971737ff4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3eaf82b1c8463225c7b933996d37be65b61a614362a8bd8eb6386cafe58b563180c1463e7bfcca09ef22505e975959cf75a79ad7bcdb759bf4faee6bfc22fd2d
|
|
7
|
+
data.tar.gz: 1d380635f58d3c6d595950cb129f1d71c1c186eb0b9e9ae7b454321fe7f29074658fea1d7c79cdd4be053c1bb31655033c16fb5c9f7029e58c7a652685e5ea0d
|
data/CHANGELOG.txt
ADDED
data/Gemfile.lock
CHANGED
data/lib/stravid/fraction.rb
CHANGED
|
@@ -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
|
data/tests/unit/dummy_test.rb
CHANGED
|
@@ -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
|
|
8
|
-
assert_equal Fraction.new('
|
|
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
|
|
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-
|
|
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
|