@@ -115,34 +115,94 @@ describe('uiScroll', function () {
115115 } ) ;
116116 } ) ;
117117
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 ) ;
120170 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 ' ) ;
123173
124- // remove items -5..1 items form -5..6 datasource
174+ // remove items -4..2 items form -5..6 datasource
125175 cleanBuffer ( scope , options ) ;
126176
127- // result [2.. 6]
177+ // result [-5, 3, 4, 5, 6]
128178 expect ( scope . adapter . isBOF ( ) ) . toBe ( true ) ;
129179 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' ) ;
135185 expect ( scope . adapter . bufferLength ) . toBe ( 5 ) ;
136186 } ;
137187
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 ( ) {
139189 var scrollSettings = getSettings ( ) ;
140- scrollSettings . startIndex = - 3 ;
141- scrollSettings . padding = 0.5 ;
190+ scrollSettings . startIndex = - 1 ;
191+ scrollSettings . padding = 0.3 ;
142192 runTest ( scrollSettings , function ( viewport , scope ) {
143- shouldWorkWhenBOF ( viewport , scope ) ;
193+ shouldWorkWhenNotBOF ( viewport , scope , { immutableTop : true } ) ;
144194 } ) ;
145195 } ) ;
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+
146206 } ) ;
147207
148208} ) ;
0 commit comments