calcpace 1.1.0 → 1.1.1

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: 4076fd00047c9b763ee7c4d38d5b3c75b638ec851c0af06895c70d050a122b10
4
- data.tar.gz: 2c69b89a9f5508cd58a5f34b33f67517f6ac9a37218ae0e01fbbed600a269712
3
+ metadata.gz: '08aafc87c8fa3b75db3dfac8e186f803cbfec584991945e9849648a0d91c7341'
4
+ data.tar.gz: 886d0b4b83bc2bbc07b3f2dc5d4b3b605459cc15df13a51c22e4ba87f2620ff4
5
5
  SHA512:
6
- metadata.gz: '029f28e39b899c3d2ddc13c873db6ed76a3a3b743080c4c167263a592550c56f1dd68bb19e4bb353c15846c63a339d6ba07d7e1a33c1ce83ff8d3159f059d5e7'
7
- data.tar.gz: 2878a6024448fd28264e9b7df4d26fc19f2f41d02016dab82caa7c87f46b8b3bce0de55e5edaff627ca5ffa1b945e2461e5a3d49188df12f533a0cf003011eeb
6
+ metadata.gz: 0e3b69e165c445f5c2885c91a8b866020095ba3de87431817eed0d75df2f6f3e65da15cb73205904cff8c3844d590ce3b3edeabdf91cd74f31bbeafe84ac085c
7
+ data.tar.gz: 311f84fa56b4f5d3bec6e0c16cac2d6650a488828058f169c8bf1f12c410bff8a91c9be667ffd30ed6dcf40a856f5c64a63aa4b9386095f9a0fdbd7c83548844
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bigdecimal'
2
4
 
3
5
  module Calculator
@@ -37,4 +39,4 @@ module Calculator
37
39
  end
38
40
  time_seconds / pace_seconds
39
41
  end
40
- end
42
+ end
@@ -1,44 +1,44 @@
1
- # frozen_string_literal: true
2
-
3
- require 'bigdecimal'
4
-
5
- module Converter
6
- KM_TO_MI = BigDecimal("0.621371")
7
- MI_TO_KM = BigDecimal("1.60934")
8
-
9
- def to_seconds(time)
10
- check_time(time)
11
- convert_to_seconds(time)
12
- end
13
-
14
- def to_clocktime(seconds)
15
- check_integer(seconds)
16
- convert_to_clocktime(seconds)
17
- end
18
-
19
- def convert(distance, unit, round_limit = 2)
20
- check_distance(distance)
21
- check_unit(unit)
22
- check_integer(round_limit)
23
- convert_the_distance(BigDecimal(distance.to_s), unit, round_limit)
24
- end
25
-
26
- def convert_to_seconds(time)
27
- hour, minute, seconds = time.split(':').map(&:to_i)
28
- (hour * 3600) + (minute * 60) + seconds
29
- end
30
-
31
- def convert_to_clocktime(seconds)
32
- format = seconds >= 86_400 ? '%d %H:%M:%S' : '%H:%M:%S'
33
- Time.at(seconds.to_i).utc.strftime(format)
34
- end
35
-
36
- def convert_the_distance(distance, unit, round_limit = 2)
37
- case unit
38
- when 'km'
39
- (distance * KM_TO_MI).round(round_limit)
40
- when 'mi'
41
- (distance * MI_TO_KM).round(round_limit)
42
- end
43
- end
44
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'bigdecimal'
4
+
5
+ module Converter
6
+ KM_TO_MI = BigDecimal('0.621371')
7
+ MI_TO_KM = BigDecimal('1.60934')
8
+
9
+ def to_seconds(time)
10
+ check_time(time)
11
+ convert_to_seconds(time)
12
+ end
13
+
14
+ def to_clocktime(seconds)
15
+ check_integer(seconds)
16
+ convert_to_clocktime(seconds)
17
+ end
18
+
19
+ def convert(distance, unit, round_limit = 2)
20
+ check_distance(distance)
21
+ check_unit(unit)
22
+ check_integer(round_limit)
23
+ convert_the_distance(BigDecimal(distance.to_s), unit, round_limit)
24
+ end
25
+
26
+ def convert_to_seconds(time)
27
+ hour, minute, seconds = time.split(':').map(&:to_i)
28
+ (hour * 3600) + (minute * 60) + seconds
29
+ end
30
+
31
+ def convert_to_clocktime(seconds)
32
+ format = seconds >= 86_400 ? '%d %H:%M:%S' : '%H:%M:%S'
33
+ Time.at(seconds.to_i).utc.strftime(format)
34
+ end
35
+
36
+ def convert_the_distance(distance, unit, round_limit = 2)
37
+ case unit
38
+ when 'km'
39
+ (distance * KM_TO_MI).round(round_limit)
40
+ when 'mi'
41
+ (distance * MI_TO_KM).round(round_limit)
42
+ end
43
+ end
44
+ end
@@ -1,68 +1,68 @@
1
- # frozen_string_literal: true
2
-
3
- require 'minitest/autorun'
4
- require 'bigdecimal'
5
- require_relative '../../lib/calcpace'
6
-
7
- class TestCalculator < Minitest::Test
8
- def setup
9
- @checker = Calcpace.new
10
- end
11
-
12
- def test_pace
13
- assert_raises(RuntimeError) { @checker.pace('', 10) }
14
- assert_raises(RuntimeError) { @checker.pace('invalid', 10) }
15
- assert_raises(RuntimeError) { @checker.pace('00:00:00', 0) }
16
- assert_raises(RuntimeError) { @checker.pace('00:00:00', -1) }
17
- assert_equal '00:06:00', @checker.pace('01:00:00', 10)
18
- assert_equal '00:07:54', @checker.pace('01:37:21', 12.3)
19
- end
20
-
21
- def test_pace_without_bigdecimal_precision
22
- assert_equal '00:07:54', @checker.pace('01:37:21', 12.3, false)
23
- end
24
-
25
- def test_pace_seconds
26
- assert_raises(RuntimeError) { @checker.pace_seconds('', 10) }
27
- assert_raises(RuntimeError) { @checker.pace_seconds('invalid', 10) }
28
- assert_raises(RuntimeError) { @checker.pace_seconds('00:00:00', 0) }
29
- assert_raises(RuntimeError) { @checker.pace_seconds('00:00:00', -1) }
30
- assert_equal BigDecimal('474.8780487804878'), @checker.pace_seconds('01:37:21', 12.3)
31
- end
32
-
33
- def test_pace_seconds_with_bigdecimal_precision
34
- assert_equal BigDecimal('0.474878048780487804878048780487804878049e3'), @checker.pace_seconds('01:37:21', 12.3, true)
35
- end
36
-
37
- def test_total_time
38
- assert_raises(RuntimeError) { @checker.total_time('', 10) }
39
- assert_raises(RuntimeError) { @checker.total_time('invalid', 10) }
40
- assert_raises(RuntimeError) { @checker.total_time('00:00:00', 0) }
41
- assert_raises(RuntimeError) { @checker.total_time('00:00:00', -1) }
42
- assert_equal '01:00:00', @checker.total_time('00:05:00', 12)
43
- end
44
-
45
- def test_total_time_seconds
46
- assert_raises(RuntimeError) { @checker.total_time_seconds('', 10) }
47
- assert_raises(RuntimeError) { @checker.total_time_seconds('invalid', 10) }
48
- assert_raises(RuntimeError) { @checker.total_time_seconds('00:00:00', 0) }
49
- assert_raises(RuntimeError) { @checker.total_time_seconds('00:00:00', -1) }
50
- assert_equal 3600, @checker.total_time_seconds('00:05:00', 12)
51
- assert_equal 71844.3, @checker.total_time_seconds('01:37:21', 12.3)
52
- end
53
-
54
- def test_total_time_seconds_with_bigdecimal_precision
55
- assert_equal BigDecimal('0.718443e5'), @checker.total_time_seconds('01:37:21', 12.3, true)
56
- end
57
-
58
- def test_distance
59
- assert_raises(RuntimeError) { @checker.distance('', '00:05:00') }
60
- assert_raises(RuntimeError) { @checker.distance('01:00:00', '') }
61
- assert_equal 18.0, @checker.distance('01:30:00', '00:05:00')
62
- assert_equal 15.0, @checker.distance('01:37:21', '00:06:17')
63
- end
64
-
65
- def test_distance_with_bigdecimal_precision
66
- assert_equal BigDecimal('0.15493368700265251989389920424403183024e2'), @checker.distance('01:37:21', '00:06:17', true)
67
- end
68
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'minitest/autorun'
4
+ require 'bigdecimal'
5
+ require_relative '../../lib/calcpace'
6
+
7
+ class TestCalculator < Minitest::Test
8
+ def setup
9
+ @checker = Calcpace.new
10
+ end
11
+
12
+ def test_pace
13
+ assert_raises(RuntimeError) { @checker.pace('', 10) }
14
+ assert_raises(RuntimeError) { @checker.pace('invalid', 10) }
15
+ assert_raises(RuntimeError) { @checker.pace('00:00:00', 0) }
16
+ assert_raises(RuntimeError) { @checker.pace('00:00:00', -1) }
17
+ assert_equal '00:06:00', @checker.pace('01:00:00', 10)
18
+ assert_equal '00:07:54', @checker.pace('01:37:21', 12.3)
19
+ end
20
+
21
+ def test_pace_without_bigdecimal_precision
22
+ assert_equal '00:07:54', @checker.pace('01:37:21', 12.3, false)
23
+ end
24
+
25
+ def test_pace_seconds
26
+ assert_raises(RuntimeError) { @checker.pace_seconds('', 10) }
27
+ assert_raises(RuntimeError) { @checker.pace_seconds('invalid', 10) }
28
+ assert_raises(RuntimeError) { @checker.pace_seconds('00:00:00', 0) }
29
+ assert_raises(RuntimeError) { @checker.pace_seconds('00:00:00', -1) }
30
+ assert_equal BigDecimal('474.8780487804878'), @checker.pace_seconds('01:37:21', 12.3)
31
+ end
32
+
33
+ def test_pace_seconds_with_bigdecimal_precision
34
+ assert_equal BigDecimal('0.474878048780487804878048780487804878049e3'), @checker.pace_seconds('01:37:21', 12.3, true)
35
+ end
36
+
37
+ def test_total_time
38
+ assert_raises(RuntimeError) { @checker.total_time('', 10) }
39
+ assert_raises(RuntimeError) { @checker.total_time('invalid', 10) }
40
+ assert_raises(RuntimeError) { @checker.total_time('00:00:00', 0) }
41
+ assert_raises(RuntimeError) { @checker.total_time('00:00:00', -1) }
42
+ assert_equal '01:00:00', @checker.total_time('00:05:00', 12)
43
+ end
44
+
45
+ def test_total_time_seconds
46
+ assert_raises(RuntimeError) { @checker.total_time_seconds('', 10) }
47
+ assert_raises(RuntimeError) { @checker.total_time_seconds('invalid', 10) }
48
+ assert_raises(RuntimeError) { @checker.total_time_seconds('00:00:00', 0) }
49
+ assert_raises(RuntimeError) { @checker.total_time_seconds('00:00:00', -1) }
50
+ assert_equal 3600, @checker.total_time_seconds('00:05:00', 12)
51
+ assert_equal 71_844.3, @checker.total_time_seconds('01:37:21', 12.3)
52
+ end
53
+
54
+ def test_total_time_seconds_with_bigdecimal_precision
55
+ assert_equal BigDecimal('0.718443e5'), @checker.total_time_seconds('01:37:21', 12.3, true)
56
+ end
57
+
58
+ def test_distance
59
+ assert_raises(RuntimeError) { @checker.distance('', '00:05:00') }
60
+ assert_raises(RuntimeError) { @checker.distance('01:00:00', '') }
61
+ assert_equal 18.0, @checker.distance('01:30:00', '00:05:00')
62
+ assert_equal 15.0, @checker.distance('01:37:21', '00:06:17')
63
+ end
64
+
65
+ def test_distance_with_bigdecimal_precision
66
+ assert_equal BigDecimal('0.15493368700265251989389920424403183024e2'), @checker.distance('01:37:21', '00:06:17', true)
67
+ end
68
+ end
@@ -1,49 +1,49 @@
1
- # frozen_string_literal: true
2
-
3
- require 'minitest/autorun'
4
- require_relative '../../lib/calcpace'
5
-
6
- class TestConverter < Minitest::Test
7
- def setup
8
- @checker = Calcpace.new
9
- end
10
-
11
- def test_convert_to_seconds
12
- assert_equal 4262, @checker.convert_to_seconds('01:11:02')
13
- end
14
-
15
- def test_to_seconds
16
- assert_equal 3600, @checker.to_seconds('01:00:00')
17
- assert_raises(RuntimeError) { @checker.to_seconds('invalid') }
18
- end
19
-
20
- def test_convert_to_clocktime
21
- assert_equal '01:11:02', @checker.convert_to_clocktime(4262)
22
- end
23
-
24
- def test_to_clocktime
25
- assert_equal '01:00:00', @checker.to_clocktime(3600)
26
- assert_equal '02 01:00:00', @checker.to_clocktime(90000)
27
- assert_raises(RuntimeError) { @checker.to_clocktime(-1) }
28
- assert_raises(RuntimeError) { @checker.to_clocktime(0) }
29
- assert_raises(RuntimeError) { @checker.to_clocktime('invalid') }
30
- end
31
-
32
- def test_convert_the_distance
33
- assert_equal 6.21, @checker.convert_the_distance(10, 'km')
34
- assert_equal 6.2, @checker.convert_the_distance(10, 'km', 1)
35
- assert_equal 6.214, @checker.convert_the_distance(10, 'km', 3)
36
- assert_equal 16.09, @checker.convert_the_distance(10, 'mi')
37
- end
38
-
39
- def test_convert
40
- assert_equal 6.21, @checker.convert(10, 'km')
41
- assert_equal 16.09, @checker.convert(10, 'mi')
42
- assert_equal 6.2, @checker.convert(10, 'km', 1)
43
- assert_raises(RuntimeError) { @checker.convert(10, 'invalid') }
44
- assert_raises(RuntimeError) { @checker.convert(-1, 'km') }
45
- assert_raises(RuntimeError) { @checker.convert(10, 'km', -2) }
46
- assert_raises(RuntimeError) { @checker.convert(10, 'km', 0) }
47
- assert_raises(RuntimeError) { @checker.convert(10, 'km', 'invalid') }
48
- end
49
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'minitest/autorun'
4
+ require_relative '../../lib/calcpace'
5
+
6
+ class TestConverter < Minitest::Test
7
+ def setup
8
+ @checker = Calcpace.new
9
+ end
10
+
11
+ def test_convert_to_seconds
12
+ assert_equal 4262, @checker.convert_to_seconds('01:11:02')
13
+ end
14
+
15
+ def test_to_seconds
16
+ assert_equal 3600, @checker.to_seconds('01:00:00')
17
+ assert_raises(RuntimeError) { @checker.to_seconds('invalid') }
18
+ end
19
+
20
+ def test_convert_to_clocktime
21
+ assert_equal '01:11:02', @checker.convert_to_clocktime(4262)
22
+ end
23
+
24
+ def test_to_clocktime
25
+ assert_equal '01:00:00', @checker.to_clocktime(3600)
26
+ assert_equal '02 01:00:00', @checker.to_clocktime(90_000)
27
+ assert_raises(RuntimeError) { @checker.to_clocktime(-1) }
28
+ assert_raises(RuntimeError) { @checker.to_clocktime(0) }
29
+ assert_raises(RuntimeError) { @checker.to_clocktime('invalid') }
30
+ end
31
+
32
+ def test_convert_the_distance
33
+ assert_equal 6.21, @checker.convert_the_distance(10, 'km')
34
+ assert_equal 6.2, @checker.convert_the_distance(10, 'km', 1)
35
+ assert_equal 6.214, @checker.convert_the_distance(10, 'km', 3)
36
+ assert_equal 16.09, @checker.convert_the_distance(10, 'mi')
37
+ end
38
+
39
+ def test_convert
40
+ assert_equal 6.21, @checker.convert(10, 'km')
41
+ assert_equal 16.09, @checker.convert(10, 'mi')
42
+ assert_equal 6.2, @checker.convert(10, 'km', 1)
43
+ assert_raises(RuntimeError) { @checker.convert(10, 'invalid') }
44
+ assert_raises(RuntimeError) { @checker.convert(-1, 'km') }
45
+ assert_raises(RuntimeError) { @checker.convert(10, 'km', -2) }
46
+ assert_raises(RuntimeError) { @checker.convert(10, 'km', 0) }
47
+ assert_raises(RuntimeError) { @checker.convert(10, 'km', 'invalid') }
48
+ end
49
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: calcpace
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joao Gilberto Saraiva