@@ -115,34 +115,94 @@ describe('uiScroll', function () {
115
115
} ) ;
116
116
} ) ;
117
117
118
- var shouldWorkWhenBOF = function ( viewport , scope , options ) {
119
- expect ( scope . adapter . isBOF ( ) ) . toBe ( true ) ;
118
+ it ( 'should be consistent on backward direction when bof with immutableTop' , function ( ) {
119
+ var scrollSettings = getSettings ( ) ;
120
+ scrollSettings . startIndex = - 3 ;
121
+ scrollSettings . padding = 0.5 ;
122
+ runTest ( scrollSettings , function ( viewport , scope ) {
123
+ expect ( scope . adapter . isBOF ( ) ) . toBe ( true ) ;
124
+ expect ( scope . adapter . isEOF ( ) ) . toBe ( false ) ;
125
+ expect ( scope . adapter . bufferFirst ) . toBe ( 'item-5' ) ;
126
+ expect ( scope . adapter . bufferLast ) . toBe ( 'item1' ) ;
127
+
128
+ // remove items -5..1 items form -5..6 datasource
129
+ cleanBuffer ( scope , { immutableTop : true } ) ;
130
+
131
+ // result [2..6]
132
+ expect ( scope . adapter . isBOF ( ) ) . toBe ( true ) ;
133
+ expect ( scope . adapter . isEOF ( ) ) . toBe ( true ) ;
134
+ expect ( Helper . getRow ( viewport , 1 ) ) . toBe ( '-5: item2' ) ;
135
+ expect ( Helper . getRow ( viewport , 2 ) ) . toBe ( '-4: item3' ) ;
136
+ expect ( Helper . getRow ( viewport , 3 ) ) . toBe ( '-3: item4' ) ;
137
+ expect ( Helper . getRow ( viewport , 4 ) ) . toBe ( '-2: item5' ) ;
138
+ expect ( Helper . getRow ( viewport , 5 ) ) . toBe ( '-1: item6' ) ;
139
+ expect ( scope . adapter . bufferLength ) . toBe ( 5 ) ;
140
+ } ) ;
141
+ } ) ;
142
+
143
+ it ( 'should be consistent on backward direction when bof without immutableTop' , function ( ) {
144
+ var scrollSettings = getSettings ( ) ;
145
+ scrollSettings . startIndex = - 3 ;
146
+ scrollSettings . padding = 0.5 ;
147
+ runTest ( scrollSettings , function ( viewport , scope ) {
148
+ expect ( scope . adapter . isBOF ( ) ) . toBe ( true ) ;
149
+ expect ( scope . adapter . isEOF ( ) ) . toBe ( false ) ;
150
+ expect ( scope . adapter . bufferFirst ) . toBe ( 'item-5' ) ;
151
+ expect ( scope . adapter . bufferLast ) . toBe ( 'item1' ) ;
152
+
153
+ // remove items -5..1 items form -5..6 datasource
154
+ cleanBuffer ( scope ) ;
155
+
156
+ // result [2..6]
157
+ expect ( scope . adapter . isBOF ( ) ) . toBe ( true ) ;
158
+ expect ( scope . adapter . isEOF ( ) ) . toBe ( true ) ;
159
+ expect ( Helper . getRow ( viewport , 1 ) ) . toBe ( '2: item2' ) ;
160
+ expect ( Helper . getRow ( viewport , 2 ) ) . toBe ( '3: item3' ) ;
161
+ expect ( Helper . getRow ( viewport , 3 ) ) . toBe ( '4: item4' ) ;
162
+ expect ( Helper . getRow ( viewport , 4 ) ) . toBe ( '5: item5' ) ;
163
+ expect ( Helper . getRow ( viewport , 5 ) ) . toBe ( '6: item6' ) ;
164
+ expect ( scope . adapter . bufferLength ) . toBe ( 5 ) ;
165
+ } ) ;
166
+ } ) ;
167
+
168
+ var shouldWorkWhenNotBOF = function ( viewport , scope , options ) {
169
+ expect ( scope . adapter . isBOF ( ) ) . toBe ( false ) ;
120
170
expect ( scope . adapter . isEOF ( ) ) . toBe ( false ) ;
121
- expect ( scope . adapter . bufferFirst ) . toBe ( 'item-5 ' ) ;
122
- expect ( scope . adapter . bufferLast ) . toBe ( 'item1 ' ) ;
171
+ expect ( scope . adapter . bufferFirst ) . toBe ( 'item-4 ' ) ;
172
+ expect ( scope . adapter . bufferLast ) . toBe ( 'item2 ' ) ;
123
173
124
- // remove items -5..1 items form -5..6 datasource
174
+ // remove items -4..2 items form -5..6 datasource
125
175
cleanBuffer ( scope , options ) ;
126
176
127
- // result [2.. 6]
177
+ // result [-5, 3, 4, 5, 6]
128
178
expect ( scope . adapter . isBOF ( ) ) . toBe ( true ) ;
129
179
expect ( scope . adapter . isEOF ( ) ) . toBe ( true ) ;
130
- expect ( Helper . getRow ( viewport , 1 ) ) . toBe ( '2: item2 ' ) ;
131
- expect ( Helper . getRow ( viewport , 2 ) ) . toBe ( '3 : item3' ) ;
132
- expect ( Helper . getRow ( viewport , 3 ) ) . toBe ( '4 : item4' ) ;
133
- expect ( Helper . getRow ( viewport , 4 ) ) . toBe ( '5 : item5' ) ;
134
- expect ( Helper . getRow ( viewport , 5 ) ) . toBe ( '6 : item6' ) ;
180
+ expect ( Helper . getRow ( viewport , 1 ) ) . toBe ( '-5: item-5 ' ) ;
181
+ expect ( Helper . getRow ( viewport , 2 ) ) . toBe ( '-4 : item3' ) ;
182
+ expect ( Helper . getRow ( viewport , 3 ) ) . toBe ( '-3 : item4' ) ;
183
+ expect ( Helper . getRow ( viewport , 4 ) ) . toBe ( '-2 : item5' ) ;
184
+ expect ( Helper . getRow ( viewport , 5 ) ) . toBe ( '-1 : item6' ) ;
135
185
expect ( scope . adapter . bufferLength ) . toBe ( 5 ) ;
136
186
} ;
137
187
138
- it ( 'should be consistent on backward direction when bof without immutableTop' , function ( ) {
188
+ it ( 'should be consistent on backward direction when not bof with immutableTop' , function ( ) {
139
189
var scrollSettings = getSettings ( ) ;
140
- scrollSettings . startIndex = - 3 ;
141
- scrollSettings . padding = 0.5 ;
190
+ scrollSettings . startIndex = - 1 ;
191
+ scrollSettings . padding = 0.3 ;
142
192
runTest ( scrollSettings , function ( viewport , scope ) {
143
- shouldWorkWhenBOF ( viewport , scope ) ;
193
+ shouldWorkWhenNotBOF ( viewport , scope , { immutableTop : true } ) ;
144
194
} ) ;
145
195
} ) ;
196
+
197
+ it ( 'should be consistent on backward direction when not bof without immutableTop' , function ( ) {
198
+ var scrollSettings = getSettings ( ) ;
199
+ scrollSettings . startIndex = - 1 ;
200
+ scrollSettings . padding = 0.3 ;
201
+ runTest ( scrollSettings , function ( viewport , scope ) {
202
+ shouldWorkWhenNotBOF ( viewport , scope ) ;
203
+ } ) ;
204
+ } ) ;
205
+
146
206
} ) ;
147
207
148
208
} ) ;
0 commit comments