@@ -46,75 +46,103 @@ describe('uiScroll', function () {
4646 } , applyUpdateOptions ) ;
4747 } ;
4848
49+ var shouldWorkWhenEOF = function ( viewport , scope , options ) {
50+ expect ( scope . adapter . isBOF ( ) ) . toBe ( false ) ;
51+ expect ( scope . adapter . isEOF ( ) ) . toBe ( true ) ;
52+ expect ( scope . adapter . bufferFirst ) . toBe ( 'item0' ) ;
53+ expect ( scope . adapter . bufferLast ) . toBe ( 'item6' ) ;
54+
55+ // remove items 0..6 items form -5..6 datasource
56+ cleanBuffer ( scope , options ) ;
57+
58+ // result [-5..-1]
59+ expect ( scope . adapter . isBOF ( ) ) . toBe ( true ) ;
60+ expect ( scope . adapter . isEOF ( ) ) . toBe ( true ) ;
61+ expect ( Helper . getRow ( viewport , 1 ) ) . toBe ( '-5: item-5' ) ;
62+ expect ( Helper . getRow ( viewport , 2 ) ) . toBe ( '-4: item-4' ) ;
63+ expect ( Helper . getRow ( viewport , 3 ) ) . toBe ( '-3: item-3' ) ;
64+ expect ( Helper . getRow ( viewport , 4 ) ) . toBe ( '-2: item-2' ) ;
65+ expect ( Helper . getRow ( viewport , 5 ) ) . toBe ( '-1: item-1' ) ;
66+ expect ( scope . adapter . bufferLength ) . toBe ( 5 ) ;
67+ } ;
68+
4969 it ( 'should be consistent on forward direction when eof with immutabeTop' , function ( ) {
50- runTest ( getSettings ( ) ,
51- function ( viewport , scope ) {
52- expect ( scope . adapter . isBOF ( ) ) . toBe ( false ) ;
53- expect ( scope . adapter . isEOF ( ) ) . toBe ( true ) ;
54- expect ( scope . adapter . bufferFirst ) . toBe ( 'item0' ) ;
55- expect ( scope . adapter . bufferLast ) . toBe ( 'item6' ) ;
56-
57- // remove items 0..6 items form -5..6 datasource
58- cleanBuffer ( scope , { immutableTop : true } ) ;
59-
60- // result [-5..-1]
61- expect ( scope . adapter . isBOF ( ) ) . toBe ( true ) ;
62- expect ( scope . adapter . isEOF ( ) ) . toBe ( true ) ;
63- expect ( Helper . getFirstRow ( viewport ) ) . toBe ( '-5: item-5' ) ;
64- expect ( Helper . getLastRow ( viewport ) ) . toBe ( '-1: item-1' ) ;
65- expect ( scope . adapter . bufferLength ) . toBe ( 5 ) ;
66- }
67- ) ;
70+ runTest ( getSettings ( ) , function ( viewport , scope ) {
71+ shouldWorkWhenEOF ( viewport , scope , { immutableTop : true } ) ;
72+ } ) ;
73+ } ) ;
74+
75+ it ( 'should be consistent on forward direction when eof without immutabeTop' , function ( ) {
76+ runTest ( getSettings ( ) , function ( viewport , scope ) {
77+ shouldWorkWhenEOF ( viewport , scope ) ;
78+ } ) ;
6879 } ) ;
6980
81+ var shouldWorkWhenNotEOF = function ( viewport , scope , options ) {
82+ expect ( scope . adapter . isBOF ( ) ) . toBe ( false ) ;
83+ expect ( scope . adapter . isEOF ( ) ) . toBe ( false ) ;
84+ expect ( scope . adapter . bufferFirst ) . toBe ( 'item-4' ) ;
85+ expect ( scope . adapter . bufferLast ) . toBe ( 'item1' ) ;
86+
87+ // remove items -4..1 items form -5..6 datasource
88+ cleanBuffer ( scope , options ) ;
89+
90+ // result [-5, 2, 3, 4]
91+ expect ( scope . adapter . isBOF ( ) ) . toBe ( true ) ;
92+ expect ( scope . adapter . isEOF ( ) ) . toBe ( false ) ;
93+ expect ( Helper . getRow ( viewport , 1 ) ) . toBe ( '-5: item-5' ) ;
94+ expect ( Helper . getRow ( viewport , 2 ) ) . toBe ( '-4: item2' ) ;
95+ expect ( Helper . getRow ( viewport , 3 ) ) . toBe ( '-3: item3' ) ;
96+ expect ( Helper . getRow ( viewport , 4 ) ) . toBe ( '-2: item4' ) ;
97+ expect ( scope . adapter . bufferLength ) . toBe ( 4 ) ;
98+ } ;
99+
70100 it ( 'should be consistent on forward direction when not eof with immutabeTop' , function ( ) {
71101 var scrollSettings = getSettings ( ) ;
72102 scrollSettings . startIndex = - 1 ;
73103 scrollSettings . viewportHeight = 40 ;
74- runTest ( scrollSettings ,
75- function ( viewport , scope ) {
76- expect ( scope . adapter . isBOF ( ) ) . toBe ( false ) ;
77- expect ( scope . adapter . isEOF ( ) ) . toBe ( false ) ;
78- expect ( scope . adapter . bufferFirst ) . toBe ( 'item-4' ) ;
79- expect ( scope . adapter . bufferLast ) . toBe ( 'item1' ) ;
80-
81- // remove items -4..1 items form -5..6 datasource
82- cleanBuffer ( scope , { immutableTop : true } ) ;
83-
84- // result [-5, 2, 3, 4]
85- expect ( scope . adapter . isBOF ( ) ) . toBe ( true ) ;
86- expect ( scope . adapter . isEOF ( ) ) . toBe ( false ) ;
87- expect ( Helper . getFirstRow ( viewport ) ) . toBe ( '-5: item-5' ) ;
88- expect ( Helper . getLastRow ( viewport ) ) . toBe ( '-2: item4' ) ;
89- expect ( scope . adapter . bufferLength ) . toBe ( 4 ) ;
90- }
91- ) ;
104+ runTest ( scrollSettings , function ( viewport , scope ) {
105+ shouldWorkWhenNotEOF ( viewport , scope , { immutableTop : true } ) ;
106+ } ) ;
92107 } ) ;
93108
109+ it ( 'should be consistent on forward direction when not eof without immutabeTop' , function ( ) {
110+ var scrollSettings = getSettings ( ) ;
111+ scrollSettings . startIndex = - 1 ;
112+ scrollSettings . viewportHeight = 40 ;
113+ runTest ( scrollSettings , function ( viewport , scope ) {
114+ shouldWorkWhenNotEOF ( viewport , scope ) ;
115+ } ) ;
116+ } ) ;
117+
118+ var shouldWorkWhenBOF = function ( viewport , scope , options ) {
119+ expect ( scope . adapter . isBOF ( ) ) . toBe ( true ) ;
120+ expect ( scope . adapter . isEOF ( ) ) . toBe ( false ) ;
121+ expect ( scope . adapter . bufferFirst ) . toBe ( 'item-5' ) ;
122+ expect ( scope . adapter . bufferLast ) . toBe ( 'item1' ) ;
123+
124+ // remove items -5..1 items form -5..6 datasource
125+ cleanBuffer ( scope , options ) ;
126+
127+ // result [2..6]
128+ expect ( scope . adapter . isBOF ( ) ) . toBe ( true ) ;
129+ 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' ) ;
135+ expect ( scope . adapter . bufferLength ) . toBe ( 5 ) ;
136+ } ;
137+
94138 it ( 'should be consistent on backward direction when bof without immutableTop' , function ( ) {
95139 var scrollSettings = getSettings ( ) ;
96140 scrollSettings . startIndex = - 3 ;
97141 scrollSettings . padding = 0.5 ;
98- runTest ( scrollSettings ,
99- function ( viewport , scope ) {
100- expect ( scope . adapter . isBOF ( ) ) . toBe ( true ) ;
101- expect ( scope . adapter . isEOF ( ) ) . toBe ( false ) ;
102- expect ( scope . adapter . bufferFirst ) . toBe ( 'item-5' ) ;
103- expect ( scope . adapter . bufferLast ) . toBe ( 'item1' ) ;
104-
105- // remove items -5..1 items form -5..6 datasource
106- cleanBuffer ( scope ) ;
107-
108- // result [2..6]
109- expect ( scope . adapter . isBOF ( ) ) . toBe ( true ) ;
110- expect ( scope . adapter . isEOF ( ) ) . toBe ( true ) ;
111- expect ( Helper . getFirstRow ( viewport ) ) . toBe ( '2: item2' ) ;
112- expect ( Helper . getLastRow ( viewport ) ) . toBe ( '6: item6' ) ;
113- expect ( scope . adapter . bufferLength ) . toBe ( 5 ) ;
114- }
115- ) ;
142+ runTest ( scrollSettings , function ( viewport , scope ) {
143+ shouldWorkWhenBOF ( viewport , scope ) ;
144+ } ) ;
116145 } ) ;
117-
118146 } ) ;
119147
120148} ) ;
0 commit comments