Skip to content

Commit 3c46893

Browse files
committed
✨ SpecFlow
1 parent 33631d5 commit 3c46893

File tree

7 files changed

+264
-1
lines changed

7 files changed

+264
-1
lines changed

BDD/ConductOfCode/ConductOfCode/ConductOfCode.csproj

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,10 @@
218218
<Reference Include="System.Data" />
219219
<Reference Include="System.Net.Http" />
220220
<Reference Include="System.Xml" />
221+
<Reference Include="TechTalk.SpecFlow, Version=2.1.0.0, Culture=neutral, PublicKeyToken=0778194805d6db41, processorArchitecture=MSIL">
222+
<HintPath>..\packages\SpecFlow.2.1.0\lib\net45\TechTalk.SpecFlow.dll</HintPath>
223+
<Private>True</Private>
224+
</Reference>
221225
<Reference Include="Xbehave.Core, Version=2.1.0.0, Culture=neutral, PublicKeyToken=e4957f48888f9fe8, processorArchitecture=MSIL">
222226
<HintPath>..\packages\Xbehave.Core.2.1.0\lib\portable-net45\Xbehave.Core.dll</HintPath>
223227
<Private>True</Private>
@@ -257,12 +261,22 @@
257261
<Compile Include="MSpec\StackSpecs.cs" />
258262
<Compile Include="NSpec\stack_specs.cs" />
259263
<Compile Include="Properties\AssemblyInfo.cs" />
264+
<Compile Include="SpecFlow\Stack.feature.cs">
265+
<AutoGen>True</AutoGen>
266+
<DesignTime>True</DesignTime>
267+
<DependentUpon>Stack.feature</DependentUpon>
268+
</Compile>
269+
<Compile Include="SpecFlow\StackSteps.cs" />
260270
<Compile Include="SpecsFor\StackSpecs.cs" />
261271
<Compile Include="Xbehave\StackFeature.cs" />
262272
</ItemGroup>
263273
<ItemGroup>
264274
<None Include="app.config" />
265275
<None Include="packages.config" />
276+
<None Include="SpecFlow\Stack.feature">
277+
<Generator>SpecFlowSingleFileGenerator</Generator>
278+
<LastGenOutput>Stack.feature.cs</LastGenOutput>
279+
</None>
266280
</ItemGroup>
267281
<ItemGroup>
268282
<EmbeddedResource Include="Concordion\Stack.html" />
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# SpecFlow
2+
3+
* Dependencies: NUnit | xUnit | MsTest
4+
* NuGet: https://www.nuget.org/packages/SpecFlow/
5+
* Source: https://github.com/techtalk/SpecFlow
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
Feature: Stack
2+
In order to support last-in-first-out (LIFO) operations
3+
As an developer
4+
I want to use a stack
5+
6+
Scenario: Empty stack
7+
Given an empty stack
8+
Then it has no elements
9+
And it throws an exception when calling pop
10+
And it throws an exception when calling peek
11+
12+
Scenario: Non empty stack
13+
Given a non empty stack
14+
When calling peek
15+
Then it returns the top element
16+
But it does not remove the top element
17+
When calling pop
18+
Then it returns the top element
19+
And it removes the top element

BDD/ConductOfCode/ConductOfCode/SpecFlow/Stack.feature.cs

Lines changed: 139 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using TechTalk.SpecFlow;
4+
using Xunit;
5+
6+
namespace ConductOfCode.SpecFlow
7+
{
8+
[Binding]
9+
public class StackSteps
10+
{
11+
private Stack<int> stack;
12+
13+
private int result;
14+
15+
// Empty
16+
17+
[Given(@"an empty stack")]
18+
public void GivenAnEmptyStack()
19+
{
20+
stack = new Stack<int>();
21+
}
22+
23+
[Then(@"it has no elements")]
24+
public void ThenItHasNoElements()
25+
{
26+
Assert.Empty(stack);
27+
}
28+
29+
[Then(@"it throws an exception when calling pop")]
30+
public void ThenItThrowsAnExceptionWhenCallingPop()
31+
{
32+
Assert.Throws<InvalidOperationException>(() => stack.Pop());
33+
}
34+
35+
[Then(@"it throws an exception when calling peek")]
36+
public void ThenItThrowsAnExceptionWhenCallingPeek()
37+
{
38+
Assert.Throws<InvalidOperationException>(() => stack.Peek());
39+
}
40+
41+
// Not empty
42+
43+
[Given(@"a non empty stack")]
44+
public void GivenANonEmptyStack()
45+
{
46+
stack = new Stack<int>(new[] { 1, 2, 3 });
47+
}
48+
49+
[When(@"calling peek")]
50+
public void WhenCallingPeek()
51+
{
52+
result = stack.Peek();
53+
}
54+
55+
[Then(@"it returns the top element")]
56+
public void ThenItReturnsTheTopElement()
57+
{
58+
Assert.Equal(3, result);
59+
}
60+
61+
[Then(@"it does not remove the top element")]
62+
public void ThenItDoesNotRemoveTheTopElement()
63+
{
64+
Assert.Contains(3, stack);
65+
}
66+
67+
[When(@"calling pop")]
68+
public void WhenCallingPop()
69+
{
70+
result = stack.Pop();
71+
}
72+
73+
[Then(@"it removes the top element")]
74+
public void ThenItRemovesTheTopElement()
75+
{
76+
Assert.DoesNotContain(3, stack);
77+
}
78+
}
79+
}
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<configuration>
3+
<configSections>
4+
<section name="specFlow" type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow" />
5+
</configSections>
36
<runtime>
47
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
58
<dependentAssembly>
@@ -8,4 +11,6 @@
811
</dependentAssembly>
912
</assemblyBinding>
1013
</runtime>
11-
</configuration>
14+
<specFlow>
15+
<!-- For additional details on SpecFlow configuration options see http://go.specflow.org/doc-config -->
16+
<!-- For additional details on SpecFlow configuration options see http://go.specflow.org/doc-config --><unitTestProvider name="xUnit" /></specFlow></configuration>

BDD/ConductOfCode/ConductOfCode/packages.config

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
<package id="nspec" version="1.0.7" targetFramework="net46" />
1313
<package id="NUnit" version="2.6.4" targetFramework="net46" />
1414
<package id="Should" version="1.1.20" targetFramework="net46" />
15+
<package id="SpecFlow" version="2.1.0" targetFramework="net46" />
16+
<package id="SpecFlow.xUnit" version="2.1.0" targetFramework="net46" />
1517
<package id="SpecsFor" version="5.0.0" targetFramework="net46" />
1618
<package id="structuremap" version="4.1.3.394" targetFramework="net46" />
1719
<package id="Xbehave" version="2.1.0" targetFramework="net46" />

0 commit comments

Comments
 (0)