@@ -15,6 +15,9 @@ namespace UnitTests.UI
1515 [ TestClass ]
1616 public class Test_IncrementalLoadingCollection
1717 {
18+ private const int PageSize = 20 ;
19+ private const int Pages = 5 ;
20+
1821 private static readonly DataSource < int > . PageOperation [ ] FailPassSequence
1922 = new DataSource < int > . PageOperation [ ]
2023 {
@@ -25,133 +28,118 @@ private static readonly DataSource<int>.PageOperation[] FailPassSequence
2528 DataSource < int > . ThrowException , DataSource < int > . PassThrough ,
2629 } ;
2730
28- [ DataRow ( 2500 , 1000 , 1000 , 1000 , 1000 ) ]
31+ private static readonly int [ ] AllData
32+ = Enumerable . Range ( 0 , Pages * PageSize ) . ToArray ( ) ;
33+
2934 [ DataRow ]
35+ [ DataRow ( 2500 , 1000 , 1000 , 1000 , 1000 ) ]
3036 [ TestMethod ]
3137 public async Task Requests ( params int [ ] pageDelays )
3238 {
33- const int pageSize = 20 ;
34- const int pages = 5 ;
35-
36- var source = new DataSource < int > ( Enumerable . Range ( 0 , pageSize * pages ) , pageDelays . Select ( DataSource < int > . MakeDelayOp ) ) ;
37- var collection = new IncrementalLoadingCollection < DataSource < int > , int > ( source , pageSize ) ;
39+ var source = new DataSource < int > ( AllData , pageDelays . Select ( DataSource < int > . MakeDelayOp ) ) ;
40+ var collection = new IncrementalLoadingCollection < DataSource < int > , int > ( source , PageSize ) ;
3841
39- for ( int pageNum = 1 ; pageNum <= pages ; pageNum ++ )
42+ for ( int pageNum = 1 ; pageNum <= Pages ; pageNum ++ )
4043 {
41- var rez1 = await collection . LoadMoreItemsAsync ( 0 ) ;
42- Assert . AreEqual ( ( uint ) pageSize , rez1 . Count ) ;
43- CollectionAssert . AreEqual ( Enumerable . Range ( 0 , pageSize * pageNum ) . ToArray ( ) , collection ) ;
44+ await collection . LoadMoreItemsAsync ( 0 ) ;
45+ CollectionAssert . AreEqual ( Enumerable . Range ( 0 , PageSize * pageNum ) . ToArray ( ) , collection ) ;
4446 }
4547 }
4648
47- [ DataRow ( 2500 , 1000 , 1000 , 1000 , 1000 ) ]
4849 [ DataRow ]
50+ [ DataRow ( 2500 , 1000 , 1000 , 1000 , 1000 ) ]
4951 [ TestMethod ]
5052 public async Task RequestsAsync ( params int [ ] pageDelays )
5153 {
52- const int pageSize = 20 ;
53- const int pages = 5 ;
54-
55- var source = new DataSource < int > ( Enumerable . Range ( 0 , pageSize * pages ) , pageDelays . Select ( DataSource < int > . MakeDelayOp ) ) ;
56- var collection = new IncrementalLoadingCollection < DataSource < int > , int > ( source , pageSize ) ;
54+ var source = new DataSource < int > ( AllData , pageDelays . Select ( DataSource < int > . MakeDelayOp ) ) ;
55+ var collection = new IncrementalLoadingCollection < DataSource < int > , int > ( source , PageSize ) ;
5756
5857 var requests = new List < Task > ( ) ;
5958
60- for ( int pageNum = 1 ; pageNum <= pages ; pageNum ++ )
59+ for ( int pageNum = 1 ; pageNum <= Pages ; pageNum ++ )
6160 {
62- requests . Add ( collection . LoadMoreItemsAsync ( 0 ) . AsTask ( ) . ContinueWith ( t =>
63- {
64- Assert . AreEqual ( TaskStatus . RanToCompletion , t . Status ) ;
65- Assert . AreEqual ( ( uint ) pageSize , t . Result . Count ) ;
66- } ) ) ;
61+ requests . Add ( collection . LoadMoreItemsAsync ( 0 ) . AsTask ( )
62+ . ContinueWith ( t => Assert . IsTrue ( t . IsCompletedSuccessfully ) ) ) ;
6763 }
6864
6965 await Task . WhenAll ( requests ) ;
7066
71- CollectionAssert . AreEqual ( Enumerable . Range ( 0 , pageSize * pages ) . ToArray ( ) , collection ) ;
67+ CollectionAssert . AreEqual ( AllData , collection ) ;
7268 }
7369
7470 [ TestMethod ]
7571 public async Task FirstRequestFails ( )
7672 {
77- const int pageSize = 20 ;
78- const int pages = 5 ;
73+ var source = new DataSource < int > ( AllData , DataSource < int > . ThrowException ) ;
74+ var collection = new IncrementalLoadingCollection < DataSource < int > , int > ( source , PageSize ) ;
7975
80- var source = new DataSource < int > ( Enumerable . Range ( 0 , pageSize * pages ) , DataSource < int > . ThrowException ) ;
81- var collection = new IncrementalLoadingCollection < DataSource < int > , int > ( source , pageSize ) ;
82-
83- await Assert . ThrowsExceptionAsync < AggregateException > ( async ( ) => await collection . LoadMoreItemsAsync ( 0 ) ) ;
76+ await Assert . ThrowsExceptionAsync < AggregateException > ( collection . LoadMoreItemsAsync ( 0 ) . AsTask ) ;
8477
8578 Assert . IsTrue ( ! collection . Any ( ) ) ;
8679
8780 var requests = new List < Task > ( ) ;
8881
89- for ( int pageNum = 1 ; pageNum <= pages ; pageNum ++ )
82+ for ( int pageNum = 1 ; pageNum <= Pages ; pageNum ++ )
9083 {
91- requests . Add ( collection . LoadMoreItemsAsync ( 0 ) . AsTask ( ) ) ;
84+ requests . Add ( collection . LoadMoreItemsAsync ( 0 ) . AsTask ( )
85+ . ContinueWith ( t => Assert . IsTrue ( t . IsCompletedSuccessfully ) ) ) ;
9286 }
9387
9488 await Task . WhenAll ( requests ) ;
9589
96- CollectionAssert . AreEqual ( Enumerable . Range ( 0 , pageSize * pages ) . ToArray ( ) , collection ) ;
90+ CollectionAssert . AreEqual ( AllData , collection ) ;
9791 }
9892
9993 [ TestMethod ]
10094 public async Task EveryOtherRequestFails ( )
10195 {
102- const int pageSize = 20 ;
103- const int pages = 5 ;
104-
105- var source = new DataSource < int > ( Enumerable . Range ( 0 , pageSize * pages ) , FailPassSequence ) ;
106- var collection = new IncrementalLoadingCollection < DataSource < int > , int > ( source , pageSize ) ;
96+ var source = new DataSource < int > ( AllData , FailPassSequence ) ;
97+ var collection = new IncrementalLoadingCollection < DataSource < int > , int > ( source , PageSize ) ;
10798
10899 var willFail = true ;
109- for ( int submitedRequests = 0 ; submitedRequests < 10 ; submitedRequests ++ )
100+ for ( int submitedRequests = 0 ; submitedRequests < Pages * 2 ; submitedRequests ++ )
110101 {
111102 if ( willFail )
112103 {
113- await collection . LoadMoreItemsAsync ( 0 ) . AsTask ( ) . ContinueWith ( t => Assert . AreEqual ( TaskStatus . Faulted , t . Status ) ) ;
104+ await Assert . ThrowsExceptionAsync < AggregateException > ( collection . LoadMoreItemsAsync ( 0 ) . AsTask ) ;
114105 }
115106 else
116107 {
117- await collection . LoadMoreItemsAsync ( 0 ) . AsTask ( ) . ContinueWith ( t => Assert . AreEqual ( TaskStatus . RanToCompletion , t . Status ) ) ;
108+ await collection . LoadMoreItemsAsync ( 0 ) ;
118109 }
119110
120111 willFail = ! willFail ;
121112 }
122113
123- CollectionAssert . AreEquivalent ( Enumerable . Range ( 0 , pageSize * pages ) . ToArray ( ) , collection ) ;
114+ CollectionAssert . AreEquivalent ( AllData , collection ) ;
124115 }
125116
126117 [ TestMethod ]
127118 public async Task EveryOtherRequestFailsAsync ( )
128119 {
129- const int pageSize = 20 ;
130- const int pages = 5 ;
131-
132- var source = new DataSource < int > ( Enumerable . Range ( 0 , pageSize * pages ) , FailPassSequence ) ;
133- var collection = new IncrementalLoadingCollection < DataSource < int > , int > ( source , pageSize ) ;
120+ var source = new DataSource < int > ( AllData , FailPassSequence ) ;
121+ var collection = new IncrementalLoadingCollection < DataSource < int > , int > ( source , PageSize ) ;
134122
135123 var requests = new List < Task > ( ) ;
136124
137125 var willFail = true ;
138- for ( int submitedRequests = 0 ; submitedRequests < 10 ; submitedRequests ++ )
126+ for ( int submitedRequests = 0 ; submitedRequests < Pages * 2 ; submitedRequests ++ )
139127 {
140128 if ( willFail )
141129 {
142- requests . Add ( Assert . ThrowsExceptionAsync < AggregateException > ( ( ) => collection . LoadMoreItemsAsync ( 0 ) . AsTask ( ) ) ) ;
130+ requests . Add ( Assert . ThrowsExceptionAsync < AggregateException > ( collection . LoadMoreItemsAsync ( 0 ) . AsTask ) ) ;
143131 }
144132 else
145133 {
146- requests . Add ( collection . LoadMoreItemsAsync ( 0 ) . AsTask ( ) ) ;
134+ requests . Add ( collection . LoadMoreItemsAsync ( 0 ) . AsTask ( ) . ContinueWith ( t => Assert . IsTrue ( t . IsCompletedSuccessfully ) ) ) ;
147135 }
148136
149137 willFail = ! willFail ;
150138 }
151139
152140 await Task . WhenAll ( requests ) ;
153141
154- CollectionAssert . AreEqual ( Enumerable . Range ( 0 , pageSize * pages ) . ToArray ( ) , collection ) ;
142+ CollectionAssert . AreEqual ( AllData , collection ) ;
155143 }
156144 }
157145}
0 commit comments