@@ -281,3 +281,203 @@ func TestDetermineViewStartRowDecreasesActiveRowIndexIfItIsGreaterThanTheTotalNu
281
281
282
282
checkViewPos (expected , actual , t )
283
283
}
284
+
285
+ func TestScrollActiveRowTopSetsViewStartRowIndexToActiveRowIndex (t * testing.T ) {
286
+ expected := newViewPos (20 , 20 , 1 )
287
+
288
+ actual := newViewPos (20 , 10 , 1 )
289
+ result := actual .ScrollActiveRowTop ()
290
+
291
+ checkViewPos (expected , actual , t )
292
+ checkViewPosResult (true , result , t )
293
+ }
294
+
295
+ func TestScrollActiveRowTopDoesntChangeViewStartRowIndexWhenItIsEqualToActiveRowIndex (t * testing.T ) {
296
+ expected := newViewPos (10 , 10 , 1 )
297
+
298
+ actual := newViewPos (10 , 10 , 1 )
299
+ result := actual .ScrollActiveRowTop ()
300
+
301
+ checkViewPos (expected , actual , t )
302
+ checkViewPosResult (false , result , t )
303
+ }
304
+
305
+ func TestScrollActiveRowBottomSetsViewStartRowIndexToBottomOfView (t * testing.T ) {
306
+ expected := newViewPos (10 , 1 , 1 )
307
+
308
+ actual := newViewPos (10 , 5 , 1 )
309
+ result := actual .ScrollActiveRowBottom (10 )
310
+
311
+ checkViewPos (expected , actual , t )
312
+ checkViewPosResult (true , result , t )
313
+ }
314
+
315
+ func TestScrollActiveRowBottomDoesntChangeViewStartRowIndexWhenActiveRowIndexIsAtBottomOfView (t * testing.T ) {
316
+ expected := newViewPos (10 , 1 , 1 )
317
+
318
+ actual := newViewPos (10 , 1 , 1 )
319
+ result := actual .ScrollActiveRowBottom (10 )
320
+
321
+ checkViewPos (expected , actual , t )
322
+ checkViewPosResult (false , result , t )
323
+ }
324
+
325
+ func TestMoveCursorTopPageSetsActiveRowIndexToViewStartRowIndexWhenNotEqual (t * testing.T ) {
326
+ expected := newViewPos (10 , 10 , 1 )
327
+
328
+ actual := newViewPos (15 , 10 , 1 )
329
+ result := actual .MoveCursorTopPage ()
330
+
331
+ checkViewPos (expected , actual , t )
332
+ checkViewPosResult (true , result , t )
333
+ }
334
+
335
+ func TestMoveCursorTopPageDoesntChangeActiveRowIndexToViewStartRowIndexWhenEqual (t * testing.T ) {
336
+ expected := newViewPos (10 , 10 , 1 )
337
+
338
+ actual := newViewPos (10 , 10 , 1 )
339
+ result := actual .MoveCursorTopPage ()
340
+
341
+ checkViewPos (expected , actual , t )
342
+ checkViewPosResult (false , result , t )
343
+ }
344
+
345
+ func TestMoveCursorMiddlePageSetsActiveRowIndexToMiddleOfPageRows (t * testing.T ) {
346
+ expected := newViewPos (15 , 10 , 1 )
347
+
348
+ actual := newViewPos (10 , 10 , 1 )
349
+ result := actual .MoveCursorMiddlePage (10 , 100 )
350
+
351
+ checkViewPos (expected , actual , t )
352
+ checkViewPosResult (true , result , t )
353
+ }
354
+
355
+ func TestMoveCursorMiddlePageSetsActiveRowIndexToMiddleOfAvailableRows (t * testing.T ) {
356
+ expected := newViewPos (12 , 10 , 1 )
357
+
358
+ actual := newViewPos (10 , 10 , 1 )
359
+ result := actual .MoveCursorMiddlePage (10 , 14 )
360
+
361
+ checkViewPos (expected , actual , t )
362
+ checkViewPosResult (true , result , t )
363
+ }
364
+
365
+ func TestMoveCursorMiddlePageDoesntChangeActiveRowIndexWhenAlreadyInMiddleOfView (t * testing.T ) {
366
+ expected := newViewPos (15 , 10 , 1 )
367
+
368
+ actual := newViewPos (15 , 10 , 1 )
369
+ result := actual .MoveCursorMiddlePage (10 , 100 )
370
+
371
+ checkViewPos (expected , actual , t )
372
+ checkViewPosResult (false , result , t )
373
+ }
374
+
375
+ func TestMoveCursorBottomPageSetsActiveRowIndexToLastRowInView (t * testing.T ) {
376
+ expected := newViewPos (19 , 10 , 1 )
377
+
378
+ actual := newViewPos (10 , 10 , 1 )
379
+ result := actual .MoveCursorBottomPage (10 , 100 )
380
+
381
+ checkViewPos (expected , actual , t )
382
+ checkViewPosResult (true , result , t )
383
+ }
384
+
385
+ func TestMoveCursorBottomPageSetsActiveRowIndexToLastAvailableRowInView (t * testing.T ) {
386
+ expected := newViewPos (14 , 10 , 1 )
387
+
388
+ actual := newViewPos (10 , 10 , 1 )
389
+ result := actual .MoveCursorBottomPage (10 , 15 )
390
+
391
+ checkViewPos (expected , actual , t )
392
+ checkViewPosResult (true , result , t )
393
+ }
394
+
395
+ func TestMoveCursorBottomPageDoesntChangeActiveRowIndexWhenActiveRowIndexIsEqualToLastRowInView (t * testing.T ) {
396
+ expected := newViewPos (14 , 10 , 1 )
397
+
398
+ actual := newViewPos (14 , 10 , 1 )
399
+ result := actual .MoveCursorBottomPage (10 , 15 )
400
+
401
+ checkViewPos (expected , actual , t )
402
+ checkViewPosResult (false , result , t )
403
+ }
404
+
405
+ func TestScrollDownIncrementsViewStartRowIndexByScrollRows (t * testing.T ) {
406
+ expected := newViewPos (15 , 12 , 1 )
407
+
408
+ actual := newViewPos (15 , 10 , 1 )
409
+ result := actual .ScrollDown (100 , 10 , 2 )
410
+
411
+ checkViewPos (expected , actual , t )
412
+ checkViewPosResult (true , result , t )
413
+ }
414
+
415
+ func TestScrollDownIncrementsViewStartRowIndexByScrollRowsAndUpdatesActiveRowIndexWhenOutOfView (t * testing.T ) {
416
+ expected := newViewPos (20 , 20 , 1 )
417
+
418
+ actual := newViewPos (15 , 10 , 1 )
419
+ result := actual .ScrollDown (100 , 10 , 10 )
420
+
421
+ checkViewPos (expected , actual , t )
422
+ checkViewPosResult (true , result , t )
423
+ }
424
+
425
+ func TestScrollDownKeepsActiveRowIndexOnFirstRowOfViewWhenOnLastPage (t * testing.T ) {
426
+ expected := newViewPos (10 , 10 , 1 )
427
+
428
+ actual := newViewPos (10 , 10 , 1 )
429
+ result := actual .ScrollDown (20 , 10 , 5 )
430
+
431
+ checkViewPos (expected , actual , t )
432
+ checkViewPosResult (true , result , t )
433
+ }
434
+
435
+ func TestScrollDownDoesntChangeViewStartRowIndexWhenThereAreNoRowsLeftToScrollDownTo (t * testing.T ) {
436
+ expected := newViewPos (9 , 9 , 1 )
437
+
438
+ actual := newViewPos (9 , 9 , 1 )
439
+ result := actual .ScrollDown (10 , 10 , 5 )
440
+
441
+ checkViewPos (expected , actual , t )
442
+ checkViewPosResult (false , result , t )
443
+ }
444
+
445
+ func TestScrollUpDecrementsViewStartRowIndexByScrollRows (t * testing.T ) {
446
+ expected := newViewPos (10 , 8 , 1 )
447
+
448
+ actual := newViewPos (10 , 10 , 1 )
449
+ result := actual .ScrollUp (10 , 2 )
450
+
451
+ checkViewPos (expected , actual , t )
452
+ checkViewPosResult (true , result , t )
453
+ }
454
+
455
+ func TestScrollUpDecrementsViewStartRowIndexByScrollRowsAndUpdatesActiveRowIndexWhenOutOfView (t * testing.T ) {
456
+ expected := newViewPos (19 , 10 , 1 )
457
+
458
+ actual := newViewPos (20 , 20 , 1 )
459
+ result := actual .ScrollUp (10 , 10 )
460
+
461
+ checkViewPos (expected , actual , t )
462
+ checkViewPosResult (true , result , t )
463
+ }
464
+
465
+ func TestScrollUpDecrementsViewStartRowIndexByAvailableRowsWhenScrollRowsIsGreater (t * testing.T ) {
466
+ expected := newViewPos (5 , 0 , 1 )
467
+
468
+ actual := newViewPos (5 , 5 , 1 )
469
+ result := actual .ScrollUp (10 , 10 )
470
+
471
+ checkViewPos (expected , actual , t )
472
+ checkViewPosResult (true , result , t )
473
+ }
474
+
475
+ func TestScrollUpDoesntChangeViewStartRowIndexWhenAlreadyOnFirstRow (t * testing.T ) {
476
+ expected := newViewPos (0 , 0 , 1 )
477
+
478
+ actual := newViewPos (0 , 0 , 1 )
479
+ result := actual .ScrollUp (10 , 10 )
480
+
481
+ checkViewPos (expected , actual , t )
482
+ checkViewPosResult (false , result , t )
483
+ }
0 commit comments