Skip to content

Commit 2f0ef26

Browse files
committed
buffer cleanup, finalize forward direction spec
1 parent 2c49ec2 commit 2f0ef26

File tree

1 file changed

+75
-15
lines changed

1 file changed

+75
-15
lines changed

test/BufferCleanupSpec.js

Lines changed: 75 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)