Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 711a754

Browse files
author
Pavel Morshenyuk
committed
Added Reverse Array Algorithm
1 parent f118f8d commit 711a754

File tree

13 files changed

+137
-41
lines changed

13 files changed

+137
-41
lines changed

‎Ashkue.Algorithms/Ashkue.Algorithms.csproj‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
<IsPackable>false</IsPackable>
77
</PropertyGroup>
88

9+
<ItemGroup>
10+
<Compile Remove="Sorting.Tests\BaseDataProvider.cs" />
11+
</ItemGroup>
12+
913
<ItemGroup>
1014
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0-preview-20170628-02" />
1115
<PackageReference Include="xunit" Version="2.2.0" />
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
5+
namespace Ashkue.Algorithms
6+
{
7+
public static class BaseDataProvider
8+
{
9+
public static IEnumerable<object[]> FibonacciTestData
10+
{
11+
get
12+
{
13+
yield return new object[2] { -100, "N/A" };
14+
yield return new object[2] { 1, "0" };
15+
yield return new object[2] { 2, "0 1" };
16+
yield return new object[2] { 3, "0 1 1" };
17+
yield return new object[2] { 5, "0 1 1 2 3" };
18+
yield return new object[2] { 8, "0 1 1 2 3 5 8 13" };
19+
yield return new object[2] { 10, "0 1 1 2 3 5 8 13 21 34" };
20+
yield return new object[2] { 25, "0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368" };
21+
yield return new object[2] { 1001, "N/A" };
22+
}
23+
}
24+
25+
public static IEnumerable<object[]> SortArrayTestData
26+
{
27+
get
28+
{
29+
yield return new object[2] { new[] { 5, 30 }, new[] { 5, 30 } };
30+
yield return new object[2] { new[] { -5, -30, -7 }, new[] { -30, -7, -5 } };
31+
yield return new object[2] { new[] { 5, 30, 7, 0, -10 }, new[] { -10, 0, 5, 7, 30 } };
32+
yield return new object[2] { new[] { 1, 2, 3, 4, 5 }, new[] { 1, 2, 3, 4, 5 } };
33+
yield return new object[2] { new[] { 5, 4, 3, 2, 1 }, new[] { 1, 2, 3, 4, 5 } };
34+
yield return new object[2] { new[] { 5, 30, 7, 0, -10, 100, 1, -5 }, new[] { -10, -5, 0, 1, 5, 7, 30, 100 } };
35+
yield return new object[2] { new[] { 5, 30, 7, 0, -10, 100, 1, -5, -4, -3 }, new[] { -10, -5, -4, -3, 0, 1, 5, 7, 30, 100 } };
36+
yield return new object[2] { new[] { 5, 10, 10, 5, 5, 10, 1, 1, 1 }, new[] { 1, 1, 1, 5, 5, 5, 10, 10, 10 } };
37+
yield return new object[2] { new[] { 5 }, new[] { 5 } };
38+
yield return new object[2] { new int[0], new int[0] };
39+
40+
// generate very long array
41+
var longArraySorted = Enumerable.Range(-5000, 10000).ToArray();
42+
var longArrayMixed = longArraySorted.OrderBy(c => Guid.NewGuid()).ToArray();
43+
yield return new object[2] { longArrayMixed, longArraySorted };
44+
}
45+
}
46+
47+
public static IEnumerable<object[]> ReverseArrayTestData
48+
{
49+
get
50+
{
51+
yield return new object[2] { null, null };
52+
yield return new object[2] { new int[0], new int[0] };
53+
yield return new object[2] { new[] { 1 }, new[] { 1 } };
54+
yield return new object[2] { new[] { 1, 2 }, new[] { 2, 1 } };
55+
yield return new object[2] { new[] { 1, 2, 3 }, new[] { 3, 2, 1 } };
56+
yield return new object[2] { new[] { -3, -2, -1, 0, 1, 2, 3 }, new[] { 3, 2, 1, 0, -1, -2, -3 } };
57+
58+
// generate very long array
59+
var longArrayOriginal = Enumerable.Range(-10000, 10000).ToArray();
60+
var longArrayReversed = longArrayOriginal.Reverse().ToArray();
61+
yield return new object[2] { longArrayOriginal, longArrayReversed };
62+
}
63+
}
64+
}
65+
}

‎Ashkue.Algorithms/Common.Tests/BaseDataProvider.cs‎

Lines changed: 0 additions & 23 deletions
This file was deleted.

‎Ashkue.Algorithms/Common.Tests/FibonacciIterativeTests.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace Ashkue.Algorithms.Common.Tests
55
public class FibonacciIterativeTests
66
{
77
[Theory]
8-
[MemberData(nameof(BaseDataProvider.TestData), MemberType = typeof(BaseDataProvider))]
8+
[MemberData(nameof(BaseDataProvider.FibonacciTestData), MemberType = typeof(BaseDataProvider))]
99
public void FibonacciProvider_DisplayNumbersMethod_ArraysSorted(int n, string expected)
1010
{
1111
// setup

‎Ashkue.Algorithms/Common.Tests/FibonacciRecursiveTests.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace Ashkue.Algorithms.Common.Tests
55
public class FibonacciRecursiveTests
66
{
77
[Theory]
8-
[MemberData(nameof(BaseDataProvider.TestData), MemberType = typeof(BaseDataProvider))]
8+
[MemberData(nameof(BaseDataProvider.FibonacciTestData), MemberType = typeof(BaseDataProvider))]
99
public void FibonacciProvider_DisplayNumbersMethod_ArraysSorted(int n, string expected)
1010
{
1111
// setup
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using Xunit;
2+
3+
namespace Ashkue.Algorithms.Common.Tests
4+
{
5+
public class ReverseArrayTests
6+
{
7+
[Theory]
8+
[MemberData(nameof(BaseDataProvider.ReverseArrayTestData), MemberType = typeof(BaseDataProvider))]
9+
public void ReverseArrayProvider_ExecuteMethod_ArraysReversed(int[] actual, int[] expected)
10+
{
11+
// setup
12+
var provider = new ReverseArray();
13+
14+
// act
15+
provider.Execute(actual);
16+
17+
// assert
18+
Assert.Equal(expected, actual);
19+
}
20+
}
21+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
namespace Ashkue.Algorithms.Common
2+
{
3+
/// <summary>
4+
/// Reverse Array Algorithm
5+
/// </summary>
6+
public class ReverseArray
7+
{
8+
public void Execute(int[] array)
9+
{
10+
if (array == null || array.Length < 2)
11+
{
12+
return;
13+
}
14+
15+
var mid = array.Length / 2;
16+
for (int i = 0; i < mid; i++)
17+
{
18+
var temp = array[i];
19+
array[i] = array[array.Length - 1 - i];
20+
array[array.Length - 1 - i] = temp;
21+
}
22+
}
23+
}
24+
}

‎Ashkue.Algorithms/Sorting.Tests/BubbleSortTests.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace Ashkue.Algorithms.Sorting.Tests
55
public class BubbleSortTests
66
{
77
[Theory]
8-
[MemberData(nameof(BaseDataProvider.TestData), MemberType = typeof(BaseDataProvider))]
8+
[MemberData(nameof(BaseDataProvider.SortArrayTestData), MemberType = typeof(BaseDataProvider))]
99
public void SortProvider_SortMethod_ArraysSorted(int[] actual, int[] expected)
1010
{
1111
// setup

‎Ashkue.Algorithms/Sorting.Tests/HeapSortTests.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace Ashkue.Algorithms.Sorting.Tests
55
public class HeapSortTests
66
{
77
[Theory]
8-
[MemberData(nameof(BaseDataProvider.TestData), MemberType = typeof(BaseDataProvider))]
8+
[MemberData(nameof(BaseDataProvider.SortArrayTestData), MemberType = typeof(BaseDataProvider))]
99
public void SortProvider_SortMethod_ArraysSorted(int[] actual, int[] expected)
1010
{
1111
// setup

‎Ashkue.Algorithms/Sorting.Tests/InsertionSortTests.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace Ashkue.Algorithms.Sorting.Tests
55
public class InsertionSortTests
66
{
77
[Theory]
8-
[MemberData(nameof(BaseDataProvider.TestData), MemberType = typeof(BaseDataProvider))]
8+
[MemberData(nameof(BaseDataProvider.SortArrayTestData), MemberType = typeof(BaseDataProvider))]
99
public void SortProvider_SortMethod_ArraysSorted(int[] actual, int[] expected)
1010
{
1111
// setup

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /