Skip to content

Commit 1428b35

Browse files
authored
Merge pull request #93 from hsaito/develop
Additional versioning resolutions
2 parents 0f5d039 + 54b4443 commit 1428b35

8 files changed

Lines changed: 213 additions & 129 deletions

File tree

MyNumberNET/MyNumber.cs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,13 @@ public class MyNumber
1616
/// <returns>Whether it is a valid "My Number" sequence</returns>
1717
public static bool VerifyNumber(int[] number)
1818
{
19+
if (number == null)
20+
throw new MyNumberMalformedException("Input array is null.");
1921
if (number.Length != 12)
2022
throw new MyNumberMalformedException("Malformed sequence. Must be 12 digits.");
21-
23+
if (Array.Exists(number, n => n < 0 || n > 9))
24+
throw new MyNumberMalformedException("All digits must be between 0 and 9.");
2225
var checkDigit = CalculateCheckDigits(Truncate(number));
23-
2426
return number[11] == checkDigit;
2527
}
2628

@@ -32,22 +34,19 @@ public static bool VerifyNumber(int[] number)
3234
/// <returns>Check digit for the "My Number" supplied</returns>
3335
public static int CalculateCheckDigits(int[] number)
3436
{
37+
if (number == null)
38+
throw new MyNumberMalformedException("Input array is null.");
3539
if (number.Length != 11)
3640
throw new MyNumberMalformedException("Malformed sequence. Must be 11 digits.");
37-
38-
// They count their digits high to low, so reorder it
41+
if (Array.Exists(number, n => n < 0 || n > 9))
42+
throw new MyNumberMalformedException("All digits must be between 0 and 9.");
3943
Array.Reverse(number);
40-
4144
var sum = 0;
4245
for (var n = 1; n < 7; n++)
43-
// From digit 1 to 6, sum is n+1
4446
sum += (n + 1) * number[n - 1];
45-
4647
for (var n = 7; n < 12; n++)
47-
// From digit 7 to 11, sum is n-5
4848
sum += (n - 5) * number[n - 1];
4949
Array.Reverse(number);
50-
// Calculate against MOD
5150
if (sum % 11 <= 1)
5251
return 0;
5352
return 11 - sum % 11;
@@ -61,8 +60,7 @@ public int[] GenerateRandomNumber()
6160
{
6261
var result = new int[12];
6362
for (var i = 0; i < 11; i++)
64-
result[i] = _random.Next(0, 9);
65-
63+
result[i] = _random.Next(0, 10);
6664
result[11] = CalculateCheckDigits(Truncate(result));
6765
return result;
6866
}
@@ -75,6 +73,8 @@ public int[] GenerateRandomNumber()
7573
/// <returns></returns>
7674
private static int[] Truncate(IReadOnlyList<int> number)
7775
{
76+
if (number == null)
77+
throw new MyNumberMalformedException("Input array is null.");
7878
if (number.Count < 11 || number.Count > 12)
7979
throw new MyNumberMalformedException("Malformed sequence. Must be 11 or 12 digits.");
8080
var result = new int[11];
@@ -85,15 +85,15 @@ private static int[] Truncate(IReadOnlyList<int> number)
8585

8686
#region Exceptions
8787

88-
private class MyNumberException : Exception
88+
public class MyNumberException : Exception
8989
{
90-
protected MyNumberException(string message)
90+
public MyNumberException(string message)
9191
: base(message)
9292
{
9393
}
9494
}
9595

96-
private class MyNumberMalformedException : MyNumberException
96+
public class MyNumberMalformedException : MyNumberException
9797
{
9898
public MyNumberMalformedException(string message)
9999
: base(message)

MyNumberNET/MyNumberNET.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
3-
<TargetFramework>netstandard2.1</TargetFramework>
3+
<TargetFramework>net8.0</TargetFramework>
44
<Authors>Hideki Saito</Authors>
55
<Company>Hideki Saito</Company>
66
<Title>MyNumberNET My Number Validation Library</Title>

MyNumberNET_CLI/MyNumberNET_CLI.csproj

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
33
<OutputType>Exe</OutputType>
4-
<TargetFramework>netcoreapp3.1</TargetFramework>
4+
<TargetFramework>net8.0</TargetFramework>
55
<Authors>Hideki Saito</Authors>
66
<Company>Hideki Saito</Company>
77
<Title>MyNumber My Number Validation Command Line Tool</Title>
@@ -17,23 +17,13 @@
1717
<LangVersion>latest</LangVersion>
1818
</PropertyGroup>
1919
<ItemGroup>
20-
<None Update="log4net.config">
21-
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
22-
</None>
23-
</ItemGroup>
24-
<ItemGroup>
25-
<PackageReference Include="log4net" Version="3.2.0" />
20+
<PackageReference Include="NLog" Version="5.2.0" />
2621
<PackageReference Include="System.Console" Version="4.3.1" />
2722
<PackageReference Include="System.Net.Sockets" Version="4.3.0" />
2823
</ItemGroup>
2924
<ItemGroup>
3025
<ProjectReference Include="..\MyNumberNET\MyNumberNET.csproj" />
3126
</ItemGroup>
32-
<PropertyGroup>
33-
<OutputType>Exe</OutputType>
34-
<TargetFramework>netcoreapp3.1</TargetFramework>
35-
</PropertyGroup>
36-
3727
<PropertyGroup>
3828
<Deterministic>true</Deterministic>
3929
<DeterministicSourceRoot>/_/</DeterministicSourceRoot>

0 commit comments

Comments
 (0)