Skip to content

Commit

Permalink
Added the LeadingZeroNumber method.
Browse files Browse the repository at this point in the history
  • Loading branch information
mrstebo committed Oct 3, 2018
1 parent 4878dd2 commit 684e571
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 2 deletions.
2 changes: 2 additions & 0 deletions doc/number.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
```js
Faker.Number.Number(10) //=> "1968353479"

Faker.Number.LeadingZeroNumber(10) //=> "0669336915"

Faker.Number.Decimal(2) //=> "11.88"

Faker.Number.Decimal(2, 3) //=> "18.843"
Expand Down
14 changes: 12 additions & 2 deletions src/FakerDotNet/Fakers/NumberFaker.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ namespace FakerDotNet.Fakers
public interface INumberFaker
{
string Number(int digits = 10);
string LeadingZeroNumber(int digits = 10);
string Decimal(int leftDigits = 5, int rightDigits = 2);
double Normal(int mean = 1, int standardDeviation = 1);
string Hexadecimal(int digits = 6);
Expand Down Expand Up @@ -37,12 +38,21 @@ public string Number(int digits = 10)
{
var sb = new StringBuilder();

sb.Append(_randomWrapper.Next(digits > 1 ? 1 : 0, 9));
sb.Append(string.Join("", Enumerable.Range(1, digits - 1).Select(_ => _randomWrapper.Next(0, 9))));
if (digits > 1)
{
sb.Append(NonZeroDigit());
digits--;
}
sb.Append(LeadingZeroNumber(digits));

return sb.ToString();
}

public string LeadingZeroNumber(int digits = 10)
{
return string.Join("", Enumerable.Range(0, digits).Select(_ => _randomWrapper.Next(0, 9)));
}

public string Decimal(int leftDigits = 5, int rightDigits = 2)
{
return $"{Number(leftDigits)}.{Number(rightDigits)}";
Expand Down
36 changes: 36 additions & 0 deletions tests/FakerDotNet.Tests/Fakers/NumberFakerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,42 @@ public void Hexadecimal_with_digits_returns_hex_string_with_number_of_digits(int
});
}

[Test]
public void LeadingZeroNumber_returns_number_with_ten_digits_by_default()
{
var zeros = 0;

100.Times(() =>
{
var result = _numberFaker.LeadingZeroNumber();
if (result.StartsWith("0")) zeros++;
Assert.That(Regex.IsMatch(result, @"^\d{10}$"), $"Result did not match: {result}");
});

Assert.Greater(zeros, 0);
}

[Test]
[TestCase(5)]
[TestCase(20)]
public void LeadingZeroNumber_returns_number_with_specified_number_of_digits(int digits)
{
var zeros = 0;

100.Times(() =>
{
var result = _numberFaker.LeadingZeroNumber(digits);
if (result.StartsWith("0")) zeros++;
Assert.That(Regex.IsMatch(result, $@"^\d{{{digits}}}$"), $"Result did not match: {result}");
});

Assert.Greater(zeros, 0);
}

[Test]
public void Negative_returns_negative_number()
{
Expand Down

0 comments on commit 684e571

Please sign in to comment.