From 5316d90b3c61caa033a33bc32a40ce761a550ed1 Mon Sep 17 00:00:00 2001 From: Martin Jaime Date: Wed, 10 Jun 2020 15:05:48 -0300 Subject: [PATCH] Fix: decimal with r_digits 1 always finishes in 0 --- lib/faker/default/number.rb | 12 +++++------- test/faker/default/test_faker_number.rb | 6 +++--- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/lib/faker/default/number.rb b/lib/faker/default/number.rb index 38230e0ec4..e71ce9227d 100644 --- a/lib/faker/default/number.rb +++ b/lib/faker/default/number.rb @@ -85,13 +85,11 @@ def decimal(legacy_l_digits = NOT_GIVEN, legacy_r_digits = NOT_GIVEN, l_digits: end l_d = number(digits: l_digits) - r_d = if r_digits == 1 - generate(r_digits) - else - # Ensure the last digit is not zero - # so it does not get truncated on converting to float - generate(r_digits - 1).join + non_zero_digit.to_s - end + + # Ensure the last digit is not zero + # so it does not get truncated on converting to float + r_d = generate(r_digits - 1).join + non_zero_digit.to_s + "#{l_d}.#{r_d}".to_f end diff --git a/test/faker/default/test_faker_number.rb b/test/faker/default/test_faker_number.rb index bdf1ead3fd..d2eb2e0955 100644 --- a/test/faker/default/test_faker_number.rb +++ b/test/faker/default/test_faker_number.rb @@ -38,9 +38,9 @@ def test_number_with_one_digit end def test_decimal - assert @tester.decimal(l_digits: 1, r_digits: 1).to_s.match(/[0-9]{1}\.[0-9]{1}/) - assert @tester.decimal(l_digits: 2).to_s.match(/[0-9]{2}\.[0-9]{2}/) - assert @tester.decimal(l_digits: 4, r_digits: 5).to_s.match(/[0-9]{4}\.[0-9]{5}/) + assert @tester.decimal(l_digits: 1, r_digits: 1).to_s.match(/[0-9]{1}\.[1-9]{1}/) + assert @tester.decimal(l_digits: 2).to_s.match(/[0-9]{2}\.[0-9]{1}[1-9]{1}/) + assert @tester.decimal(l_digits: 4, r_digits: 5).to_s.match(/[0-9]{4}\.[0-9]{4}[1-9]{1}/) end def test_digit