@@ -15,6 +15,9 @@ namespace UnitTests.UI
15
15
[ TestClass ]
16
16
public class Test_IncrementalLoadingCollection
17
17
{
18
+ private const int PageSize = 20 ;
19
+ private const int Pages = 5 ;
20
+
18
21
private static readonly DataSource < int > . PageOperation [ ] FailPassSequence
19
22
= new DataSource < int > . PageOperation [ ]
20
23
{
@@ -25,133 +28,118 @@ private static readonly DataSource<int>.PageOperation[] FailPassSequence
25
28
DataSource < int > . ThrowException , DataSource < int > . PassThrough ,
26
29
} ;
27
30
28
- [ DataRow ( 2500 , 1000 , 1000 , 1000 , 1000 ) ]
31
+ private static readonly int [ ] AllData
32
+ = Enumerable . Range ( 0 , Pages * PageSize ) . ToArray ( ) ;
33
+
29
34
[ DataRow ]
35
+ [ DataRow ( 2500 , 1000 , 1000 , 1000 , 1000 ) ]
30
36
[ TestMethod ]
31
37
public async Task Requests ( params int [ ] pageDelays )
32
38
{
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 ) ;
38
41
39
- for ( int pageNum = 1 ; pageNum <= pages ; pageNum ++ )
42
+ for ( int pageNum = 1 ; pageNum <= Pages ; pageNum ++ )
40
43
{
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 ) ;
44
46
}
45
47
}
46
48
47
- [ DataRow ( 2500 , 1000 , 1000 , 1000 , 1000 ) ]
48
49
[ DataRow ]
50
+ [ DataRow ( 2500 , 1000 , 1000 , 1000 , 1000 ) ]
49
51
[ TestMethod ]
50
52
public async Task RequestsAsync ( params int [ ] pageDelays )
51
53
{
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 ) ;
57
56
58
57
var requests = new List < Task > ( ) ;
59
58
60
- for ( int pageNum = 1 ; pageNum <= pages ; pageNum ++ )
59
+ for ( int pageNum = 1 ; pageNum <= Pages ; pageNum ++ )
61
60
{
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 ) ) ) ;
67
63
}
68
64
69
65
await Task . WhenAll ( requests ) ;
70
66
71
- CollectionAssert . AreEqual ( Enumerable . Range ( 0 , pageSize * pages ) . ToArray ( ) , collection ) ;
67
+ CollectionAssert . AreEqual ( AllData , collection ) ;
72
68
}
73
69
74
70
[ TestMethod ]
75
71
public async Task FirstRequestFails ( )
76
72
{
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 ) ;
79
75
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 ) ;
84
77
85
78
Assert . IsTrue ( ! collection . Any ( ) ) ;
86
79
87
80
var requests = new List < Task > ( ) ;
88
81
89
- for ( int pageNum = 1 ; pageNum <= pages ; pageNum ++ )
82
+ for ( int pageNum = 1 ; pageNum <= Pages ; pageNum ++ )
90
83
{
91
- requests . Add ( collection . LoadMoreItemsAsync ( 0 ) . AsTask ( ) ) ;
84
+ requests . Add ( collection . LoadMoreItemsAsync ( 0 ) . AsTask ( )
85
+ . ContinueWith ( t => Assert . IsTrue ( t . IsCompletedSuccessfully ) ) ) ;
92
86
}
93
87
94
88
await Task . WhenAll ( requests ) ;
95
89
96
- CollectionAssert . AreEqual ( Enumerable . Range ( 0 , pageSize * pages ) . ToArray ( ) , collection ) ;
90
+ CollectionAssert . AreEqual ( AllData , collection ) ;
97
91
}
98
92
99
93
[ TestMethod ]
100
94
public async Task EveryOtherRequestFails ( )
101
95
{
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 ) ;
107
98
108
99
var willFail = true ;
109
- for ( int submitedRequests = 0 ; submitedRequests < 10 ; submitedRequests ++ )
100
+ for ( int submitedRequests = 0 ; submitedRequests < Pages * 2 ; submitedRequests ++ )
110
101
{
111
102
if ( willFail )
112
103
{
113
- await collection . LoadMoreItemsAsync ( 0 ) . AsTask ( ) . ContinueWith ( t => Assert . AreEqual ( TaskStatus . Faulted , t . Status ) ) ;
104
+ await Assert . ThrowsExceptionAsync < AggregateException > ( collection . LoadMoreItemsAsync ( 0 ) . AsTask ) ;
114
105
}
115
106
else
116
107
{
117
- await collection . LoadMoreItemsAsync ( 0 ) . AsTask ( ) . ContinueWith ( t => Assert . AreEqual ( TaskStatus . RanToCompletion , t . Status ) ) ;
108
+ await collection . LoadMoreItemsAsync ( 0 ) ;
118
109
}
119
110
120
111
willFail = ! willFail ;
121
112
}
122
113
123
- CollectionAssert . AreEquivalent ( Enumerable . Range ( 0 , pageSize * pages ) . ToArray ( ) , collection ) ;
114
+ CollectionAssert . AreEquivalent ( AllData , collection ) ;
124
115
}
125
116
126
117
[ TestMethod ]
127
118
public async Task EveryOtherRequestFailsAsync ( )
128
119
{
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 ) ;
134
122
135
123
var requests = new List < Task > ( ) ;
136
124
137
125
var willFail = true ;
138
- for ( int submitedRequests = 0 ; submitedRequests < 10 ; submitedRequests ++ )
126
+ for ( int submitedRequests = 0 ; submitedRequests < Pages * 2 ; submitedRequests ++ )
139
127
{
140
128
if ( willFail )
141
129
{
142
- requests . Add ( Assert . ThrowsExceptionAsync < AggregateException > ( ( ) => collection . LoadMoreItemsAsync ( 0 ) . AsTask ( ) ) ) ;
130
+ requests . Add ( Assert . ThrowsExceptionAsync < AggregateException > ( collection . LoadMoreItemsAsync ( 0 ) . AsTask ) ) ;
143
131
}
144
132
else
145
133
{
146
- requests . Add ( collection . LoadMoreItemsAsync ( 0 ) . AsTask ( ) ) ;
134
+ requests . Add ( collection . LoadMoreItemsAsync ( 0 ) . AsTask ( ) . ContinueWith ( t => Assert . IsTrue ( t . IsCompletedSuccessfully ) ) ) ;
147
135
}
148
136
149
137
willFail = ! willFail ;
150
138
}
151
139
152
140
await Task . WhenAll ( requests ) ;
153
141
154
- CollectionAssert . AreEqual ( Enumerable . Range ( 0 , pageSize * pages ) . ToArray ( ) , collection ) ;
142
+ CollectionAssert . AreEqual ( AllData , collection ) ;
155
143
}
156
144
}
157
145
}
0 commit comments