@@ -1597,7 +1597,7 @@ describe('uiScroll', function () {
1597
1597
1598
1598
it ( 'scroll to the bottom' , function ( ) {
1599
1599
runTest ( scrollSettings ,
1600
- function ( viewport , scope ) {
1600
+ function ( viewport , scope ) {
1601
1601
viewport . scrollTop ( 10000 ) ;
1602
1602
viewport . trigger ( 'scroll' ) ;
1603
1603
@@ -1610,4 +1610,52 @@ describe('uiScroll', function () {
1610
1610
1611
1611
} ) ;
1612
1612
1613
+ describe ( 'buffer cleanup' , function ( ) {
1614
+ var scrollSettings = { datasource : 'myEdgeDatasource' , adapter : 'adapter' , viewportHeight : 60 , itemHeight : 20 , padding : 0.3 , startIndex : 3 , bufferSize : 3 } ;
1615
+
1616
+ injectDatasource ( 'myEdgeDatasource' ) ;
1617
+
1618
+ var cleanBuffer = function ( scope ) {
1619
+ var get = datasource . get ;
1620
+ var removedItems = [ ] ;
1621
+ // sync the datasource
1622
+ datasource . get = function ( index , count , success ) {
1623
+ get ( index , count , function ( result ) {
1624
+ result = result . filter ( function ( item ) {
1625
+ return removedItems . indexOf ( item ) === - 1 ;
1626
+ } ) ;
1627
+ success ( result ) ;
1628
+ } ) ;
1629
+ } ;
1630
+ // clean up the buffer
1631
+ scope . adapter . applyUpdates (
1632
+ function ( item ) {
1633
+ removedItems . push ( item ) ;
1634
+ return [ ] ;
1635
+ } , {
1636
+ immutableTop : true
1637
+ }
1638
+ ) ;
1639
+ } ;
1640
+
1641
+ it ( 'should be consistent on forward direction with immutabeTop' , function ( ) {
1642
+ runTest ( scrollSettings ,
1643
+ function ( viewport , scope ) {
1644
+ expect ( scope . adapter . isBOF ( ) ) . toBe ( false ) ;
1645
+ expect ( scope . adapter . isEOF ( ) ) . toBe ( true ) ;
1646
+
1647
+ // remove items 0..6 items form -5..6 datasource
1648
+ cleanBuffer ( scope ) ;
1649
+
1650
+ expect ( scope . adapter . isBOF ( ) ) . toBe ( true ) ;
1651
+ expect ( scope . adapter . isEOF ( ) ) . toBe ( true ) ;
1652
+ expect ( scope . adapter . bufferFirst ) . toBe ( 'item-5' ) ;
1653
+ expect ( scope . adapter . bufferLast ) . toBe ( 'item-1' ) ;
1654
+ expect ( scope . adapter . bufferLength ) . toBe ( 5 ) ;
1655
+ }
1656
+ ) ;
1657
+ } ) ;
1658
+
1659
+ } ) ;
1660
+
1613
1661
} ) ;
0 commit comments