Skip to content

Commit ca0daab

Browse files
committed
Unit tests with Fixture added for RamGenerator
1 parent 10a0a5a commit ca0daab

File tree

3 files changed

+107
-0
lines changed

3 files changed

+107
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>netcoreapp3.1</TargetFramework>
5+
6+
<IsPackable>false</IsPackable>
7+
</PropertyGroup>
8+
9+
<ItemGroup>
10+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
11+
<PackageReference Include="xunit" Version="2.4.1" />
12+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
13+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
14+
<PrivateAssets>all</PrivateAssets>
15+
</PackageReference>
16+
<PackageReference Include="coverlet.collector" Version="3.1.2">
17+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
18+
<PrivateAssets>all</PrivateAssets>
19+
</PackageReference>
20+
</ItemGroup>
21+
22+
<ItemGroup>
23+
<ProjectReference Include="..\RamGenerator\RamGenerator.csproj" />
24+
</ItemGroup>
25+
26+
</Project>
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
using System;
2+
using System.IO;
3+
using Xunit;
4+
5+
namespace RamGenerator.Tests
6+
{
7+
public class RamGeneratorFixture : IDisposable
8+
{
9+
public int RamSizeInMB { get; set; } = 1_000;
10+
public RamGenerator RamGenerator { get; private set; }
11+
12+
public RamGeneratorFixture()
13+
{
14+
RamGenerator = new RamGenerator(RamSizeInMB);
15+
RamGenerator.GenerateRam();
16+
}
17+
18+
public void Dispose()
19+
{
20+
var filename = "ram*.dat";
21+
var dir = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory);
22+
var files = dir.GetFiles(filename);
23+
24+
foreach (var file in files)
25+
{
26+
File.Delete(file.FullName);
27+
}
28+
}
29+
}
30+
31+
public class RamGeneratorTests : IClassFixture<RamGeneratorFixture>
32+
{
33+
readonly RamGeneratorFixture fixture;
34+
35+
public RamGeneratorTests(RamGeneratorFixture fixture)
36+
{
37+
this.fixture = fixture;
38+
}
39+
40+
[Fact]
41+
public void Generating_RAM_File()
42+
{
43+
var expectedNumberOfRamInstances = 1;
44+
var filename = "ram*.dat";
45+
var actualNumberOfRamInstances = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, filename).Length;
46+
47+
Assert.Equal(expectedNumberOfRamInstances, actualNumberOfRamInstances);
48+
}
49+
50+
[Fact]
51+
public void Generating_RAM_File_Twice()
52+
{
53+
fixture.RamGenerator.GenerateRam();
54+
var filename = "ram*.dat";
55+
var expectedNumberOfRamInstances = 1;
56+
var actualNumberOfRamInstances = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, filename).Length;
57+
58+
Assert.Equal(expectedNumberOfRamInstances, actualNumberOfRamInstances);
59+
}
60+
61+
[Fact]
62+
public void Checking_RAM_File_Size()
63+
{
64+
var ramSize = new FileInfo(fixture.RamGenerator.FileName).Length;
65+
66+
var blockSize = 1024 * 8;
67+
var blocksPerMb = 1_024 * 1_024 / blockSize;
68+
var calculatedRamSize = blocksPerMb * fixture.RamSizeInMB * blockSize;
69+
70+
Assert.Equal(calculatedRamSize, ramSize);
71+
}
72+
73+
74+
}
75+
}

cache-simulator.sln

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TraceGenerator", "TraceGene
1313
EndProject
1414
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CacheSimulator", "CacheSimulator\CacheSimulator.csproj", "{66DEB549-830E-4E69-9B70-932910100071}"
1515
EndProject
16+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RamGenerator.Tests", "RamGenerator.Tests\RamGenerator.Tests.csproj", "{83BCA7BF-405F-4379-83F4-496531F89B95}"
17+
EndProject
1618
Global
1719
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1820
Debug|Any CPU = Debug|Any CPU
@@ -39,6 +41,10 @@ Global
3941
{66DEB549-830E-4E69-9B70-932910100071}.Debug|Any CPU.Build.0 = Debug|Any CPU
4042
{66DEB549-830E-4E69-9B70-932910100071}.Release|Any CPU.ActiveCfg = Release|Any CPU
4143
{66DEB549-830E-4E69-9B70-932910100071}.Release|Any CPU.Build.0 = Release|Any CPU
44+
{83BCA7BF-405F-4379-83F4-496531F89B95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
45+
{83BCA7BF-405F-4379-83F4-496531F89B95}.Debug|Any CPU.Build.0 = Debug|Any CPU
46+
{83BCA7BF-405F-4379-83F4-496531F89B95}.Release|Any CPU.ActiveCfg = Release|Any CPU
47+
{83BCA7BF-405F-4379-83F4-496531F89B95}.Release|Any CPU.Build.0 = Release|Any CPU
4248
EndGlobalSection
4349
GlobalSection(SolutionProperties) = preSolution
4450
HideSolutionNode = FALSE

0 commit comments

Comments
 (0)