Skip to content

Commit 0dc2248

Browse files
committed
Convert assertions to Shouldly.
1 parent d5602ee commit 0dc2248

2 files changed

Lines changed: 131 additions & 78 deletions

File tree

DependencyQueue.Tests/DependencyQueueEntryBuilderTests.cs

Lines changed: 129 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -9,174 +9,227 @@ public class DependencyQueueEntryBuilderTests
99
[Test]
1010
public void Construct_NullQueue()
1111
{
12-
Invoking(() => new Builder(null!))
13-
.Should().ThrowExactly<ArgumentNullException>()
14-
.Where(e => e.ParamName == "queue");
12+
var e = Should.Throw<ArgumentNullException>(
13+
() => new Builder(null!)
14+
);
15+
16+
e.ParamName.ShouldBe("queue");
1517
}
1618

1719
[Test]
1820
public void Construct_Ok()
1921
{
20-
using var h = new TestHarness();
22+
using var queue = new Queue();
23+
24+
var builder = queue.CreateEntryBuilder();
2125

22-
h.Builder.CurrentEntry.Should().BeNull();
23-
h.Builder.Queue .Should().BeSameAs(h.Queue.Object);
26+
builder.CurrentEntry.ShouldBeNull();
27+
builder.Queue .ShouldBeSameAs(queue);
2428
}
2529

2630
[Test]
2731
public void NewEntry()
2832
{
29-
using var h = new TestHarness();
33+
using var queue = new Queue();
3034

31-
var name = "x";
32-
var value = new Value();
35+
var builder = queue.CreateEntryBuilder();
3336

34-
var entry = h.Builder
35-
.NewEntry(name, value)
37+
var value = new Value();
38+
var entry = builder
39+
.NewEntry("x", value)
3640
.CurrentEntry;
3741

38-
entry .Should().NotBeNull();
39-
entry!.Name .Should().BeSameAs(name);
40-
entry!.Value.Should().BeSameAs(value);
42+
entry .ShouldNotBeNull();
43+
entry.Name .ShouldBeSameAs("x");
44+
entry.Value .ShouldBeSameAs(value);
45+
entry.Requires.ShouldBeEmpty();
46+
entry.Provides.ShouldBe(["x"]);
4147
}
4248

4349
[Test]
4450
public void AddProvides_ParamsArray_NoCurrentEntry()
4551
{
46-
using var h = new TestHarness();
52+
using var queue = new Queue();
4753

48-
h.Builder
49-
.Invoking(b => b.AddProvides("a", "b"))
50-
.Should().ThrowExactly<InvalidOperationException>();
54+
var builder = queue.CreateEntryBuilder();
55+
56+
Should.Throw<InvalidOperationException>(
57+
() => builder.AddProvides("a", "b")
58+
);
5159
}
5260

5361
[Test]
5462
public void AddProvides_IEnumerable_NoCurrentEntry()
5563
{
56-
using var h = new TestHarness();
64+
using var queue = new Queue();
65+
66+
var builder = queue.CreateEntryBuilder();
5767

58-
h.Builder
59-
.Invoking(b => b.AddProvides(Items("a", "b")))
60-
.Should().ThrowExactly<InvalidOperationException>();
68+
Should.Throw<InvalidOperationException>(
69+
() => builder.AddProvides((IEnumerable<string>) ["a", "b"])
70+
);
6171
}
6272

6373
[Test]
6474
public void AddProvides_ParamsArray_Ok()
6575
{
66-
using var h = new TestHarness();
76+
using var queue = new Queue();
77+
78+
var builder = queue.CreateEntryBuilder();
6779

68-
var entry = h.Builder
69-
.NewEntry("x", new())
80+
var entry = builder
81+
.NewEntry("x", value: new())
7082
.AddProvides("a", "b")
7183
.CurrentEntry;
7284

73-
entry .Should().NotBeNull();
74-
entry!.Provides.Should().Contain(Items("a", "b"));
85+
entry .ShouldNotBeNull();
86+
entry.Provides.ShouldBe(["x", "a", "b"]);
7587
}
7688

7789
[Test]
7890
public void AddProvides_IEnumerable_Ok()
7991
{
80-
using var h = new TestHarness();
92+
using var queue = new Queue();
8193

82-
var entry = h.Builder
83-
.NewEntry("x", new())
84-
.AddProvides(Items("a", "b"))
94+
var builder = queue.CreateEntryBuilder();
95+
96+
var entry = builder
97+
.NewEntry("x", value: new())
98+
.AddProvides((IEnumerable<string>) ["a", "b"])
8599
.CurrentEntry;
86100

87-
entry .Should().NotBeNull();
88-
entry!.Provides.Should().Contain(Items("a", "b"));
101+
entry .ShouldNotBeNull();
102+
entry.Provides.ShouldBe(["x", "a", "b"]);
89103
}
90104

91105
[Test]
92106
public void AddRequires_ParamsArray_NoCurrentEntry()
93107
{
94-
using var h = new TestHarness();
108+
using var queue = new Queue();
109+
110+
var builder = queue.CreateEntryBuilder();
95111

96-
h.Builder
97-
.Invoking(b => b.AddRequires("a", "b"))
98-
.Should().ThrowExactly<InvalidOperationException>();
112+
Should.Throw<InvalidOperationException>(
113+
() => builder.AddRequires("a", "b")
114+
);
99115
}
100116

101117
[Test]
102118
public void AddRequires_IEnumerable_NoCurrentEntry()
103119
{
104-
using var h = new TestHarness();
120+
using var queue = new Queue();
105121

106-
h.Builder
107-
.Invoking(b => b.AddRequires(Items("a", "b")))
108-
.Should().ThrowExactly<InvalidOperationException>();
122+
var builder = queue.CreateEntryBuilder();
123+
124+
Should.Throw<InvalidOperationException>(
125+
() => builder.AddRequires((IEnumerable<string>) ["a", "b"])
126+
);
109127
}
110128

111129
[Test]
112130
public void AddRequires_ParamsArray_Ok()
113131
{
114-
using var h = new TestHarness();
132+
using var queue = new Queue();
133+
134+
var builder = queue.CreateEntryBuilder();
115135

116-
var entry = h.Builder
117-
.NewEntry("x", new())
136+
var entry = builder
137+
.NewEntry("x", value: new())
118138
.AddRequires("a", "b")
119139
.CurrentEntry;
120140

121-
entry .Should().NotBeNull();
122-
entry!.Requires.Should().Contain(Items("a", "b"));
141+
entry .ShouldNotBeNull();
142+
entry.Requires.ShouldBe(["a", "b"]);
123143
}
124144

125145
[Test]
126146
public void AddRequires_IEnumerable_Ok()
127147
{
128-
using var h = new TestHarness();
148+
using var queue = new Queue();
129149

130-
var entry = h.Builder
131-
.NewEntry("x", new())
132-
.AddRequires(Items("a", "b"))
150+
var builder = queue.CreateEntryBuilder();
151+
152+
var entry = builder
153+
.NewEntry("x", value: new())
154+
.AddRequires((IEnumerable<string>) ["a", "b"])
133155
.CurrentEntry;
134156

135-
entry .Should().NotBeNull();
136-
entry!.Requires.Should().Contain(Items("a", "b"));
157+
entry .ShouldNotBeNull();
158+
entry.Requires.ShouldBe(["a", "b"]);
137159
}
138160

139161
[Test]
140162
public void Enqueue_NoCurrentEntry()
141163
{
142-
using var h = new TestHarness();
164+
using var queue = new Queue();
165+
166+
var builder = queue.CreateEntryBuilder();
143167

144-
h.Builder
145-
.Invoking(b => b.Enqueue())
146-
.Should().ThrowExactly<InvalidOperationException>();
168+
Should.Throw<InvalidOperationException>(
169+
() => builder.Enqueue()
170+
);
147171
}
148172

149173
[Test]
150174
public void Enqueue_Ok()
151175
{
152-
using var h = new TestHarness();
176+
using var queue = new Queue();
153177

154-
var entry0 = h.Builder
155-
.NewEntry("x", new())
156-
.CurrentEntry;
178+
var builder = queue.CreateEntryBuilder();
157179

158-
h.Queue
159-
.Setup(q => q.Enqueue(entry0!))
160-
.Verifiable();
180+
builder
181+
.NewEntry("x", value: new())
182+
.Enqueue();
161183

162-
var entry1 = h.Builder
163-
.Enqueue()
164-
.CurrentEntry;
184+
builder.CurrentEntry.ShouldBeNull();
185+
186+
var entry = queue.ReadyEntries.ShouldHaveSingleItem();
187+
entry .ShouldNotBeNull();
188+
entry.Name .ShouldBe("x");
189+
entry.Provides.ShouldBe(["x"]);
190+
entry.Requires.ShouldBeEmpty();
165191

166-
entry1.Should().BeNull();
192+
var topic = queue.Topics.Values.ShouldHaveSingleItem();
193+
topic.Name .ShouldBe("x");
194+
topic.ProvidedBy.ShouldBe([entry]);
195+
topic.RequiredBy.ShouldBeEmpty();
167196
}
168197

169-
private class TestHarness : QueueTestHarness
198+
[Test]
199+
public void Enqueue_WithOutParameter_NoCurrentEntry()
170200
{
171-
public Builder Builder { get; }
201+
using var queue = new Queue();
202+
203+
var builder = queue.CreateEntryBuilder();
204+
205+
Should.Throw<InvalidOperationException>(
206+
() => builder.Enqueue(out _)
207+
);
208+
}
209+
210+
[Test]
211+
public void Enqueue_WithOutParameter__Ok()
212+
{
213+
using var queue = new Queue();
214+
215+
var builder = queue.CreateEntryBuilder();
216+
217+
builder
218+
.NewEntry("x", value: new())
219+
.Enqueue(out var entry);
220+
221+
builder.CurrentEntry.ShouldBeNull();
222+
223+
entry .ShouldNotBeNull();
224+
entry.Name .ShouldBe("x");
225+
entry.Provides.ShouldBe(["x"]);
226+
entry.Requires.ShouldBeEmpty();
172227

173-
public TestHarness()
174-
{
175-
Queue
176-
.Setup(q => q.Comparer)
177-
.Returns(Comparer);
228+
queue.ReadyEntries.ShouldBe([entry]);
178229

179-
Builder = new Builder(Queue.Object);
180-
}
230+
var topic = queue.Topics.Values.ShouldHaveSingleItem();
231+
topic.Name .ShouldBe("x");
232+
topic.ProvidedBy.ShouldBe([entry]);
233+
topic.RequiredBy.ShouldBeEmpty();
181234
}
182235
}

DependencyQueue/DependencyQueueEntryBuilder.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class DependencyQueueEntryBuilder<T>
2020
private DependencyQueueEntry<T>? _entry;
2121

2222
// The queue to which the builder will enqueue entries
23-
private readonly IDependencyQueue<T> _queue;
23+
private readonly DependencyQueue<T> _queue;
2424

2525
/// <summary>
2626
/// Initializes a new <see cref="DependencyQueueEntryBuilder{T}"/>
@@ -32,7 +32,7 @@ public class DependencyQueueEntryBuilder<T>
3232
/// <exception cref="ArgumentNullException">
3333
/// <paramref name="queue"/> is <see langword="null"/>.
3434
/// </exception>
35-
internal DependencyQueueEntryBuilder(IDependencyQueue<T> queue)
35+
internal DependencyQueueEntryBuilder(DependencyQueue<T> queue)
3636
{
3737
if (queue is null)
3838
throw Errors.ArgumentNull(nameof(queue));

0 commit comments

Comments
 (0)