Skip to content

Commit df3c2a1

Browse files
Merge pull request #6 from justcoding121/develop
Beta release 128+
2 parents 2fe2b00 + 907041d commit df3c2a1

File tree

21 files changed

+595
-257
lines changed

21 files changed

+595
-257
lines changed

.build/Bootstrap.ps1

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Install-Psake
1414

1515
$psakeDirectory = (Resolve-Path $env:ChocolateyInstall\lib\Psake*)
1616

17-
Import-Module (Join-Path $psakeDirectory "tools\Psake.psm1")
17+
Import-Module (Join-Path $psakeDirectory "tools\Psake\Psake.psm1")
1818

1919
if($Help)
2020
{

.build/Common.psm1

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ function Install-Chocolatey()
2424

2525
function Install-Psake()
2626
{
27-
if(!(Test-Path $env:ChocolateyInstall\lib\Psake*))
27+
if(!(Test-Path $env:ChocolateyInstall\lib\Psake\tools\Psake*))
2828
{
2929
choco install psake -y
3030
}

.build/default.ps1

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ Task Restore-Packages {
5454
}
5555

5656
Task Install-MSBuild {
57-
if(!(Test-Path $MSBuild14))
57+
if(!(Test-Path $MSBuild))
5858
{
5959
cinst microsoft-build-tools -y
6060
}

Advanced.Algorithms.Tests/Advanced.Algorithms.Tests.csproj

+4-2
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@
6767
<Compile Include="BitAlgorithms\NextPowOfTwo_Tests.cs" />
6868
<Compile Include="BitAlgorithms\ToggleCase_Tests.cs" />
6969
<Compile Include="Combinatorics\Subset_Tests.cs" />
70-
<Compile Include="Combinatorics\Variation_Tests.cs" />
7170
<Compile Include="Combinatorics\Combination_Tests.cs" />
7271
<Compile Include="Combinatorics\Permutation_Tests.cs" />
7372
<Compile Include="Compression\HuffmanCoding_Tests.cs" />
@@ -99,7 +98,7 @@
9998
<Compile Include="DataStructures\Lists\ArrayList_Tests.cs" />
10099
<Compile Include="DataStructures\Lists\SkipList_Tests.cs" />
101100
<Compile Include="DataStructures\Queues\PriorityQueue\MaxPriorityQueue_Tests.cs" />
102-
<Compile Include="DataStructures\Queues\CircularQueue_Tests.cs" />
101+
<Compile Include="DistributedSystems\CircularQueue_Tests.cs" />
103102
<Compile Include="DataStructures\Queues\Queue_Tests.cs" />
104103
<Compile Include="DataStructures\Set\BloomFilter_Tests.cs" />
105104
<Compile Include="DataStructures\Set\DisJointSet_Tests.cs" />
@@ -126,7 +125,10 @@
126125
<Compile Include="DataStructures\Tree\TestHelpers\BinarySearchTreeTester.cs" />
127126
<Compile Include="DataStructures\Tree\Tree_Tests.cs" />
128127
<Compile Include="DataStructures\Tree\BinaryTree_Tests.cs" />
128+
<Compile Include="DistributedSystems\ConsistentHash_Tests.cs" />
129+
<Compile Include="DistributedSystems\LRUCache_Tests.cs" />
129130
<Compile Include="Geometry\PointRotation_Tests.cs" />
131+
<Compile Include="GraphAlgorithms\ShortestPath\TravellingSalesman_Tests.cs" />
130132
<Compile Include="Miscellaneous\MatrixMultiplication_Tests.cs" />
131133
<Compile Include="Geometry\ClosestPointPair_Tests.cs" />
132134
<Compile Include="Geometry\ConvexHull_Tests.cs" />

Advanced.Algorithms.Tests/Combinatorics/Permutation_Tests.cs

+33-46
Original file line numberDiff line numberDiff line change
@@ -12,77 +12,64 @@ namespace Advanced.Algorithms.Tests.Combinatorics
1212
public class Permutation_Tests
1313
{
1414
//for verification
15-
readonly Func<int, int> factorial = n => n == 0 ? 1 :
15+
static readonly Func<int, int> factorial = n => n == 0 ? 1 :
1616
Enumerable.Range(1, n).Aggregate((acc, x) => acc * x);
1717

18-
19-
[TestMethod]
20-
public void Permutation_Without_Repetitions_Smoke_Test()
21-
{
22-
var input = "".ToCharArray().ToList();
23-
var permuations = Permutation.Find<char>(input);
24-
Assert.AreEqual(factorial(input.Count), permuations.Count);
25-
26-
input = "cookie".ToCharArray().ToList();
27-
permuations = Permutation.Find<char>(input);
28-
Assert.AreEqual(factorial(input.Count), permuations.Count);
29-
30-
input = "monster".ToCharArray().ToList();
31-
permuations = Permutation.Find<char>(input);
32-
Assert.AreEqual(factorial(input.Count), permuations.Count);
33-
}
34-
18+
//for verification
19+
static readonly Func<int, int, int> permutation = (int n, int r)
20+
=> n == 0 || r == 0 ? 1 : factorial(n) / factorial(n - r);
3521

3622
[TestMethod]
3723
public void Permutation_With_Repetition_Smoke_Test()
3824
{
3925
var input = "".ToCharArray().ToList();
40-
var permuations = Permutation.Find<char>(input, true);
26+
var permuations = Permutation.Find<char>(input, input.Count, true);
4127
Assert.AreEqual(Math.Pow(input.Count, input.Count), permuations.Count);
4228

4329
input = "pen".ToCharArray().ToList();
44-
permuations = Permutation.Find<char>(input, true);
30+
permuations = Permutation.Find<char>(input, input.Count, true);
4531
Assert.AreEqual(Math.Pow(input.Count, input.Count), permuations.Count);
4632

4733
input = "scan".ToCharArray().ToList();
48-
permuations = Permutation.Find<char>(input, true);
34+
permuations = Permutation.Find<char>(input, input.Count, true);
4935
Assert.AreEqual(Math.Pow(input.Count, input.Count), permuations.Count);
50-
}
5136

52-
[TestMethod]
53-
public void Permutation_Without_Repetition_Without_Inversions_Smoke_Test()
54-
{
55-
var input = "".ToCharArray().ToList();
56-
var permuations = Permutation.Find<char>(input, false, false);
57-
Assert.AreEqual(factorial(input.Count) / 2, permuations.Count);
37+
input = "scan".ToCharArray().ToList();
38+
permuations = Permutation.Find<char>(input, 2, true);
39+
Assert.AreEqual(Math.Pow(input.Count, 2), permuations.Count);
5840

59-
input = "abc".ToCharArray().ToList();
60-
permuations = Permutation.Find<char>(input, false, false);
61-
Assert.AreEqual(factorial(input.Count) / 2, permuations.Count);
41+
input = "scan".ToCharArray().ToList();
42+
permuations = Permutation.Find<char>(input, 3, true);
43+
Assert.AreEqual(Math.Pow(input.Count, 3), permuations.Count);
6244

63-
input = "acde".ToCharArray().ToList();
64-
permuations = Permutation.Find<char>(input, false, false);
65-
Assert.AreEqual(factorial(input.Count) / 2, permuations.Count);
45+
input = "scaner".ToCharArray().ToList();
46+
permuations = Permutation.Find<char>(input, 4, true);
47+
Assert.AreEqual(Math.Pow(input.Count, 4), permuations.Count);
6648
}
6749

6850

6951
[TestMethod]
70-
public void Permutation_With_Repetition_Without_Inversions_Smoke_Test()
52+
public void Permutation_Without_Repetitions_Smoke_Test()
7153
{
72-
7354
var input = "".ToCharArray().ToList();
74-
var permuations = Permutation.Find<char>(input, true, false);
75-
Assert.AreEqual(0, permuations.Count);
55+
var permuations = Permutation.Find<char>(input, input.Count);
56+
Assert.AreEqual(permutation(input.Count, input.Count), permuations.Count);
7657

77-
input = "pen".ToCharArray().ToList();
78-
permuations = Permutation.Find<char>(input, true, false);
79-
Assert.AreEqual(9, permuations.Count);
58+
input = "cookie".ToCharArray().ToList();
59+
permuations = Permutation.Find<char>(input, input.Count);
60+
Assert.AreEqual(permutation(input.Count, input.Count), permuations.Count);
8061

81-
input = "cool".ToCharArray().ToList();
82-
permuations = Permutation.Find<char>(input, true, false);
83-
Assert.AreEqual(80, permuations.Count);
84-
}
62+
input = "monster".ToCharArray().ToList();
63+
permuations = Permutation.Find<char>(input, input.Count);
64+
Assert.AreEqual(permutation(input.Count, input.Count), permuations.Count);
8565

86-
66+
input = "cookie".ToCharArray().ToList();
67+
permuations = Permutation.Find<char>(input, 2);
68+
Assert.AreEqual(permutation(input.Count, 2), permuations.Count);
69+
70+
input = "monster".ToCharArray().ToList();
71+
permuations = Permutation.Find<char>(input, 3);
72+
Assert.AreEqual(permutation(input.Count, 3), permuations.Count);
73+
}
8774
}
8875
}

Advanced.Algorithms.Tests/Combinatorics/Variation_Tests.cs

-56
This file was deleted.

Advanced.Algorithms.Tests/DataStructures/Queues/CircularQueue_Tests.cs renamed to Advanced.Algorithms.Tests/DistributedSystems/CircularQueue_Tests.cs

+15-16
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
using Advanced.Algorithms.DataStructures;
2-
using Advanced.Algorithms.DataStructures.Queues;
1+
using Advanced.Algorithms.DataStructures.DistributedSystems;
32
using Microsoft.VisualStudio.TestTools.UnitTesting;
43

5-
namespace Advanced.Algorithms.Tests.DataStructures.Queues
4+
namespace Advanced.Algorithms.Tests.DataStructures.DistributedSystems
65
{
76
[TestClass]
87
public class CircularQueue_Tests
@@ -13,16 +12,16 @@ public void CircularQueue_Test()
1312
{
1413
var Queue = new CircularQueue<int>(7);
1514

16-
Queue.Enqueue(1);
17-
Queue.Enqueue(2);
15+
Assert.AreEqual(0, Queue.Enqueue(1));
16+
Assert.AreEqual(0, Queue.Enqueue(2));
1817

19-
Queue.Enqueue(3);
20-
Queue.Enqueue(4);
21-
Queue.Enqueue(5);
22-
Queue.Enqueue(6);
23-
Queue.Enqueue(7);
24-
Queue.Enqueue(8);
25-
Queue.Enqueue(9);
18+
Assert.AreEqual(0, Queue.Enqueue(3));
19+
Assert.AreEqual(0, Queue.Enqueue(4));
20+
Assert.AreEqual(0, Queue.Enqueue(5));
21+
Assert.AreEqual(0, Queue.Enqueue(6));
22+
Assert.AreEqual(0, Queue.Enqueue(7));
23+
Assert.AreEqual(1, Queue.Enqueue(8));
24+
Assert.AreEqual(2, Queue.Enqueue(9));
2625

2726
Assert.AreEqual(Queue.Count, 7);
2827
Assert.AreEqual(3, Queue.Dequeue());
@@ -47,8 +46,8 @@ public void CircularQueue_Test()
4746

4847
Assert.AreEqual(Queue.Count, 0);
4948

50-
Queue.Enqueue(1);
51-
Queue.Enqueue(2);
49+
Assert.AreEqual(0, Queue.Enqueue(1));
50+
Assert.AreEqual(0, Queue.Enqueue(2));
5251

5352
Assert.AreEqual(Queue.Count, 2);
5453
Assert.AreEqual(1, Queue.Dequeue());
@@ -57,6 +56,6 @@ public void CircularQueue_Test()
5756
Assert.AreEqual(Queue.Dequeue(), 2);
5857
}
5958

60-
59+
6160
}
62-
}
61+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
using Advanced.Algorithms.DistributedSystems;
2+
using Microsoft.VisualStudio.TestTools.UnitTesting;
3+
using System;
4+
5+
namespace Advanced.Algorithms.Tests.DistributedSystems
6+
{
7+
[TestClass]
8+
public class ConsistentHash_Tests
9+
{
10+
11+
[TestMethod]
12+
public void ConsistantHash_Smoke_Test()
13+
{
14+
var hash = new ConsistentHash<int>();
15+
16+
hash.AddNode(15);
17+
hash.AddNode(25);
18+
hash.AddNode(172);
19+
20+
for (int i = 200; i < 300; i++)
21+
{
22+
hash.AddNode(i);
23+
}
24+
25+
hash.RemoveNode(15);
26+
hash.RemoveNode(172);
27+
hash.RemoveNode(25);
28+
29+
var rnd = new Random();
30+
for (int i = 0; i < 1000; i++)
31+
{
32+
Assert.AreNotEqual(15, hash.GetNode(rnd.Next().ToString()));
33+
Assert.AreNotEqual(25, hash.GetNode(rnd.Next().ToString()));
34+
Assert.AreNotEqual(172, hash.GetNode(rnd.Next().ToString()));
35+
36+
var t = hash.GetNode(rnd.Next().ToString());
37+
Assert.IsTrue(t >= 200 && t < 300);
38+
}
39+
40+
}
41+
42+
}
43+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
using Advanced.Algorithms.DistributedSystems;
2+
using Microsoft.VisualStudio.TestTools.UnitTesting;
3+
using System;
4+
5+
namespace Advanced.Algorithms.Tests.DistributedSystems
6+
{
7+
[TestClass]
8+
public class LRUCache_Tests
9+
{
10+
11+
[TestMethod]
12+
public void LRUCache_Smoke_Test()
13+
{
14+
var cache = new LRUCache<int,int>(2);
15+
16+
cache.Put(1, 1);
17+
cache.Put(2, 2);
18+
Assert.AreEqual(1, cache.Get(1));
19+
20+
cache.Put(3, 3);
21+
Assert.AreEqual(0, cache.Get(2));
22+
23+
cache.Put(4, 4);
24+
Assert.AreEqual(0, cache.Get(1));
25+
Assert.AreEqual(3, cache.Get(3));
26+
Assert.AreEqual(4, cache.Get(4));
27+
}
28+
29+
}
30+
}

0 commit comments

Comments
 (0)