aboutsummaryrefslogtreecommitdiff
path: root/RhSolutions.Tests/ExcelTablesTests.cs
blob: 78264aca897eeb1c16c18d61f941016c9b823a0a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
namespace RhSolutions.Tests;

[ExcelTestSettings(OutOfProcess = true, Workbook = @"TestWorkbooks\ExcelTableTest.xlsx")]
public class ExcelTablesTests : IDisposable
{
    ExcelExtensions.Table table;

    public ExcelTablesTests()
    {
        Util.Application.Workbooks.Add();

        Worksheet worksheet = Util.Workbook.Sheets[1];
        Range range = worksheet.Range["E7:G9"];
        table = new(range);
    }

    [ExcelFact]
    public void CanReadExcelTable()
    {
        Assert.Equal(3, table.Columns.Where(c => c.Header.StartsWith("Столбец")).Count());
        Assert.Equal("Столбец 1", table.Rows.First()[0].Value);
        Assert.Equal("Столбец 2", table[0, 1].Value);
        Assert.Equal(123d, table[1, 1].Value);
        Assert.Null(table[1, 2].Value);
    }

    [ExcelFact]
    public void CanModifyTableCells()
    {
        table[2, 1].Value = 1;
        table[1, 1].Value = (double)table[1, 1].Value + 123;
        Assert.Equal(1d, table[2, 1].Value);
        Assert.Equal(246d, table[1, 1].Value);
    }

    [ExcelFact]
    public void CanFindInTable()
    {
        table[2, 0].Value = "Find!";
        table[2, 1].Value = "Find this!";
        table[2, 2].Value = "Find that!";


        var cells = table.Find("Find");
        Assert.Collection(cells, item => Assert.Equal("Find!", item.Value),
            item => Assert.Equal("Find this!", item.Value),
            item => Assert.Equal("Find that!", item.Value));
        Assert.Equal(0, table.Find("Значение").First().ParentColumn.Index);
        Assert.Equal(3, table.Rows[2].Find("Find").Count());
        Assert.Empty(table.Columns[1].Find("Пусто"));
    }

    [ExcelFact]
    public void CanAddColumns()
    {
        int originalCount = table.Columns.Count();
        table.Columns[1].AddLeft();
        Assert.Equal(originalCount + 1, table.Columns.Count());
    }

    public void Dispose()
    {
        Util.Application.ActiveWindow.Close(SaveChanges: false);
    }
}