@@ -169,4 +169,39 @@ public void Product_SourceIsEmpty_ThrowsInvalidOperationException()
169169 int [ ] source = [ ] ;
170170 Assert . ThrowsExactly < InvalidOperationException > ( ( ) => source . Product ( ) ) ;
171171 }
172+
173+ [ TestMethod ]
174+ public void Pairs_SourceHasMultipleElements_ReturnsExpectedPairs ( )
175+ {
176+ AssertPairsAreExpected ( DefaultSource ) ;
177+ }
178+
179+ [ TestMethod ]
180+ public void Pairs_SourceIsCollection_ReturnsExpectedPairs ( )
181+ {
182+ AssertPairsAreExpected ( DefaultSource . ToHashSet ( ) ) ;
183+ }
184+
185+ [ TestMethod ]
186+ public void Pairs_SourceIsEnumerable_ReturnsExpectedPairs ( )
187+ {
188+ AssertPairsAreExpected ( Enumerable . Range ( 1 , 5 ) . Select ( i => i ) ) ;
189+ }
190+
191+ private static void AssertPairsAreExpected ( IEnumerable < int > source )
192+ {
193+ var result = source . Pairs ( ) . ToList ( ) ;
194+
195+ Assert . HasCount ( 10 , result ) ;
196+ Assert . AreEqual ( ( 1 , 2 ) , result [ 0 ] ) ;
197+ Assert . AreEqual ( ( 1 , 3 ) , result [ 1 ] ) ;
198+ Assert . AreEqual ( ( 1 , 4 ) , result [ 2 ] ) ;
199+ Assert . AreEqual ( ( 1 , 5 ) , result [ 3 ] ) ;
200+ Assert . AreEqual ( ( 2 , 3 ) , result [ 4 ] ) ;
201+ Assert . AreEqual ( ( 2 , 4 ) , result [ 5 ] ) ;
202+ Assert . AreEqual ( ( 2 , 5 ) , result [ 6 ] ) ;
203+ Assert . AreEqual ( ( 3 , 4 ) , result [ 7 ] ) ;
204+ Assert . AreEqual ( ( 3 , 5 ) , result [ 8 ] ) ;
205+ Assert . AreEqual ( ( 4 , 5 ) , result [ 9 ] ) ;
206+ }
172207}
0 commit comments