aboutsummaryrefslogtreecommitdiff
path: root/vim/bundle/vim-table-mode/t/spreadsheet.vim
blob: 093475c40fcd5cb41c58b1a2eb423f1740c790db (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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
" vim: fdm=indent
source t/config/options.vim

describe 'spreadsheet'
  describe 'API'
    before
      new
      read t/fixtures/sample.txt
    end

    it 'should return the row count'
      Expect tablemode#spreadsheet#RowCount(2) == 2
      Expect tablemode#spreadsheet#RowCount(3) == 2
    end

    it 'should return the row number'
      Expect tablemode#spreadsheet#RowNr(2) == 1
      Expect tablemode#spreadsheet#RowNr(3) == 2
    end

    it 'should return the column count'
      Expect tablemode#spreadsheet#ColumnCount(2) == 2
      Expect tablemode#spreadsheet#ColumnCount(3) == 2
    end

    it 'should return the column number'
      call cursor(2,3)
      Expect tablemode#spreadsheet#ColumnNr('.') == 1
      call cursor(2,12)
      Expect tablemode#spreadsheet#ColumnNr('.') == 2
    end

    it 'should return true when in the first cell'
      call cursor(2,3)
      Expect tablemode#spreadsheet#IsFirstCell() to_be_true
      call cursor(2,12)
      Expect tablemode#spreadsheet#IsFirstCell() to_be_false
    end

    it 'should return true when in the last cell'
      call cursor(2,3)
      Expect tablemode#spreadsheet#IsLastCell() to_be_false
      call cursor(2,12)
      Expect tablemode#spreadsheet#IsLastCell() to_be_true
    end

    it 'should return the line number of the first row'
      Expect tablemode#spreadsheet#GetFirstRow(2) == 2
      Expect tablemode#spreadsheet#GetFirstRow(3) == 2
    end

    it 'should return the line nuber of the last row'
      Expect tablemode#spreadsheet#GetLastRow(2) == 3
      Expect tablemode#spreadsheet#GetLastRow(3) == 3
    end

    describe 'Math'
      before
        new
        read t/fixtures/cell/sample.txt
      end

      it 'should return the sum of cell range'
        call cursor(1,3)
        Expect tablemode#spreadsheet#Sum('1:2') == 4.0
        Expect tablemode#spreadsheet#Sum('1,1:1,2') == 3.0
        Expect tablemode#spreadsheet#Sum('1,1:2,2') == 10.0
        call cursor(2,7)
        Expect tablemode#spreadsheet#Sum('1:2') == 6.0
        Expect tablemode#spreadsheet#Sum('2,1:2,2') == 7.0
      end

      it 'should return the average of cell range'
        call cursor(1,3)
        Expect tablemode#spreadsheet#Average('1:2') == 2.0
        Expect tablemode#spreadsheet#Average('1,1:1,2') == 1.5
        Expect tablemode#spreadsheet#Average('1,1:2,2') == 5.0
        call cursor(2,7)
        Expect tablemode#spreadsheet#Average('1:2') == 3.0
        Expect tablemode#spreadsheet#Average('2,1:2,2') == 3.5
      end
    end
  end

  describe 'Manipulations'
    before
      new
      normal! ggdG
      read t/fixtures/sample.txt
      call cursor(2, 3)
    end

    it 'should delete a row successfully'
      Expect tablemode#spreadsheet#RowCount('.') == 2
      call tablemode#spreadsheet#DeleteRow()
      Expect tablemode#spreadsheet#RowCount('.') == 1
    end

    it 'should successfully delete column'
      Expect tablemode#spreadsheet#ColumnCount('.') == 2
      call tablemode#spreadsheet#DeleteColumn()
      Expect tablemode#spreadsheet#ColumnCount('.') == 1
    end
  end
end