1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using Terminal.Gui;
- using Xunit;
- namespace UnitTests {
- public class TableViewTests
- {
- [Fact]
- public void EnsureValidScrollOffsets_WithNoCells()
- {
- var tableView = new TableView();
- Assert.Equal(0,tableView.RowOffset);
- Assert.Equal(0,tableView.ColumnOffset);
- // Set empty table
- tableView.Table = new DataTable();
- // Since table has no rows or columns scroll offset should default to 0
- tableView.EnsureValidScrollOffsets();
- Assert.Equal(0,tableView.RowOffset);
- Assert.Equal(0,tableView.ColumnOffset);
- }
- [Fact]
- public void EnsureValidScrollOffsets_LoadSmallerTable()
- {
- var tableView = new TableView();
- tableView.Bounds = new Rect(0,0,25,10);
- Assert.Equal(0,tableView.RowOffset);
- Assert.Equal(0,tableView.ColumnOffset);
- // Set big table
- tableView.Table = BuildTable(25,50);
- // Scroll down and along
- tableView.RowOffset = 20;
- tableView.ColumnOffset = 10;
- tableView.EnsureValidScrollOffsets();
- // The scroll should be valid at the moment
- Assert.Equal(20,tableView.RowOffset);
- Assert.Equal(10,tableView.ColumnOffset);
- // Set small table
- tableView.Table = BuildTable(2,2);
- // Setting a small table should automatically trigger fixing the scroll offsets to ensure valid cells
- Assert.Equal(0,tableView.RowOffset);
- Assert.Equal(0,tableView.ColumnOffset);
- // Trying to set invalid indexes should not be possible
- tableView.RowOffset = 20;
- tableView.ColumnOffset = 10;
- Assert.Equal(1,tableView.RowOffset);
- Assert.Equal(1,tableView.ColumnOffset);
- }
-
- /// <summary>
- /// Builds a simple table of string columns with the requested number of columns and rows
- /// </summary>
- /// <param name="cols"></param>
- /// <param name="rows"></param>
- /// <returns></returns>
- public static DataTable BuildTable(int cols, int rows)
- {
- var dt = new DataTable();
- for(int c = 0; c < cols; c++) {
- dt.Columns.Add("Col"+c);
- }
-
- for(int r = 0; r < rows; r++) {
- var newRow = dt.NewRow();
- for(int c = 0; c < cols; c++) {
- newRow[c] = $"R{r}C{c}";
- }
- dt.Rows.Add(newRow);
- }
-
- return dt;
- }
- }
- }
|