Skip to content

Commit 9210b05

Browse files
Add last-lap exercise
1 parent e4dc3b4 commit 9210b05

File tree

3 files changed

+38
-6
lines changed

3 files changed

+38
-6
lines changed

exercises/practice/split-second-stopwatch/SplitSecondStopwatch.cs

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,27 @@ public enum StopwatchState
66
Stopped
77
}
88

9-
public class SplitSecondStopwatch
9+
public class SplitSecondStopwatch(TimeProvider time)
1010
{
1111
public StopwatchState State { get; private set; }
12+
13+
public void Start()
14+
{
15+
throw new NotImplementedException();
16+
}
17+
18+
public void Stop()
19+
{
20+
throw new NotImplementedException();
21+
}
22+
23+
public void Split()
24+
{
25+
throw new NotImplementedException();
26+
}
27+
28+
public void Pause()
29+
{
30+
throw new NotImplementedException();
31+
}
1232
}

exercises/practice/split-second-stopwatch/SplitSecondStopwatch.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<Using Include="Xunit" />
1010
</ItemGroup>
1111
<ItemGroup>
12+
<PackageReference Include="Microsoft.Extensions.TimeProvider.Testing" Version="9.2.0" />
1213
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
1314
<PackageReference Include="xunit.v3" Version="1.1.0" />
1415
<PackageReference Include="xunit.runner.visualstudio" Version="3.0.2" />

exercises/practice/split-second-stopwatch/SplitSecondStopwatchTests.cs

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,26 @@
1+
using Microsoft.Extensions.Time.Testing;
2+
13
public class SplitSecondStopwatchTests
24
{
35
[Fact]
46
public void InitalStateIsReady()
57
{
6-
var stopwatch = new SplitSecondStopwatch();
8+
var stopwatch = new SplitSecondStopwatch(new FakeTimeProvider());
79
Assert.Equal(StopwatchState.Ready, stopwatch.State);
810
}
911

1012
[Fact]
1113
public void StartChangesStateToRunning()
1214
{
13-
var stopwatch = new SplitSecondStopwatch();
15+
var stopwatch = new SplitSecondStopwatch(new FakeTimeProvider());
1416
stopwatch.Start();
1517
Assert.Equal(StopwatchState.Running, stopwatch.State);
1618
}
1719

1820
[Fact]
1921
public void PauseChangesStateToPaused()
2022
{
21-
var stopwatch = new SplitSecondStopwatch();
23+
var stopwatch = new SplitSecondStopwatch(new FakeTimeProvider());
2224
stopwatch.Start();
2325
stopwatch.Pause();
2426
Assert.Equal(StopwatchState.Paused, stopwatch.State);
@@ -27,7 +29,7 @@ public void PauseChangesStateToPaused()
2729
[Fact]
2830
public void SplitKeepsStateAsRunning()
2931
{
30-
var stopwatch = new SplitSecondStopwatch();
32+
var stopwatch = new SplitSecondStopwatch(new FakeTimeProvider());
3133
stopwatch.Start();
3234
stopwatch.Split();
3335
Assert.Equal(StopwatchState.Running, stopwatch.State);
@@ -36,7 +38,16 @@ public void SplitKeepsStateAsRunning()
3638
[Fact]
3739
public void StopChangesStateToStop()
3840
{
39-
var stopwatch = new SplitSecondStopwatch();
41+
var stopwatch = new SplitSecondStopwatch(new FakeTimeProvider());
42+
stopwatch.Start();
43+
stopwatch.Stop();
44+
Assert.Equal(StopwatchState.Stopped, stopwatch.State);
45+
}
46+
47+
[Fact]
48+
public void StopAddsLapTime()
49+
{
50+
var stopwatch = new SplitSecondStopwatch(new FakeTimeProvider());
4051
stopwatch.Start();
4152
stopwatch.Stop();
4253
Assert.Equal(StopwatchState.Stopped, stopwatch.State);

0 commit comments

Comments
 (0)