Skip to content

Commit 1ff3628

Browse files
committed
Add integer_or_default and float_or_default methods
1 parent ddace21 commit 1ff3628

4 files changed

Lines changed: 29 additions & 8 deletions

File tree

pedometer/models/trial.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@ def integer_or_default(val, default, greater_than_val)
2222
end
2323
end
2424

25-
end
25+
end

pedometer/models/user.rb

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,23 @@ class User
88

99
def initialize(gender = nil, height = nil, stride = nil)
1010
@gender = gender.to_s.downcase if GENDER.include? gender.to_s.downcase
11-
@height = height.to_f if height.to_f > 0
12-
@stride = (stride.to_f > 0) ? stride.to_f : calculate_stride
11+
# @height = height.to_f if height.to_f > 0
12+
# @stride = (stride.to_f > 0) ? stride.to_f : calculate_stride
13+
@height = float_or_default(height, nil, 0)
14+
@stride = float_or_default(stride, calculate_stride, 0)
1315
end
1416

1517
private
1618

19+
def float_or_default(val, default, greater_than_val)
20+
float = val.to_f
21+
if (float.to_s == val.to_s || float.to_s.gsub('.0', '') == val.to_s)
22+
(float > greater_than_val) ? float : default
23+
else
24+
default
25+
end
26+
end
27+
1728
def calculate_stride
1829
if gender && height
1930
MULTIPLIERS[@gender] * height

pedometer/test/unit/trial_test.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ def test_create_empty
2020
end
2121

2222
def test_create_with_rate
23-
flunk 'Move integer_or_default method to helper'
2423
assert_equal 100, Trial.new(nil).rate
2524
assert_equal 100, Trial.new(nil, nil).rate
2625
assert_equal 100, Trial.new(nil, '').rate
@@ -40,7 +39,6 @@ def test_create_with_rate
4039
end
4140

4241
def test_create_with_steps
43-
flunk 'Move integer_or_default method to helper'
4442
assert_nil Trial.new(nil, nil).steps
4543
assert_nil Trial.new(nil, nil, nil).steps
4644
assert_nil Trial.new(nil, nil, '').steps

pedometer/test/unit/user_test.rb

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,24 @@ def test_create_with_gender
3636
end
3737

3838
def test_create_with_height
39+
assert_nil User.new(nil).height
40+
assert_nil User.new(nil, nil).height
41+
assert_nil User.new(nil, '').height
42+
assert_nil User.new(nil, 'bad height').height
43+
44+
assert_equal 150, User.new(nil, 150).height
45+
assert_equal 150, User.new(nil, '150').height
46+
assert_equal 150, User.new(nil, 150.0).height
47+
assert_equal 150, User.new(nil, '150.0').height
48+
assert_equal 167.5, User.new(nil, 167.5).height
3949
assert_equal 167.5, User.new(nil, '167.5').height
40-
assert_equal 100.52, User.new(nil, 100.52).height
41-
42-
assert_nil User.new(nil, 'invalid value').height
50+
assert_equal 181.12, User.new(nil, 181.12).height
51+
assert_equal 181.12, User.new(nil, '181.12').height
52+
4353
assert_nil User.new(nil, 0).height
54+
assert_nil User.new(nil, '0').height
4455
assert_nil User.new(nil, -1).height
56+
assert_nil User.new(nil, '-1').height
4557
end
4658

4759
def test_create_with_height_and_gender

0 commit comments

Comments
 (0)