@@ -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}
0 commit comments