@@ -46,75 +46,103 @@ describe('uiScroll', function () {
46
46
} , applyUpdateOptions ) ;
47
47
} ;
48
48
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
+
49
69
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
+ } ) ;
68
79
} ) ;
69
80
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
+
70
100
it ( 'should be consistent on forward direction when not eof with immutabeTop' , function ( ) {
71
101
var scrollSettings = getSettings ( ) ;
72
102
scrollSettings . startIndex = - 1 ;
73
103
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
+ } ) ;
92
107
} ) ;
93
108
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
+
94
138
it ( 'should be consistent on backward direction when bof without immutableTop' , function ( ) {
95
139
var scrollSettings = getSettings ( ) ;
96
140
scrollSettings . startIndex = - 3 ;
97
141
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
+ } ) ;
116
145
} ) ;
117
-
118
146
} ) ;
119
147
120
148
} ) ;
0 commit comments