aboutsummaryrefslogtreecommitdiff
path: root/vim/bundle/vim-table-mode/t
diff options
context:
space:
mode:
Diffstat (limited to 'vim/bundle/vim-table-mode/t')
-rw-r--r--vim/bundle/vim-table-mode/t/align.vim20
-rw-r--r--vim/bundle/vim-table-mode/t/cell.vim135
-rw-r--r--vim/bundle/vim-table-mode/t/config/options.vim27
-rw-r--r--vim/bundle/vim-table-mode/t/fixtures/align/simple_after.txt2
-rw-r--r--vim/bundle/vim-table-mode/t/fixtures/align/simple_before.txt2
-rw-r--r--vim/bundle/vim-table-mode/t/fixtures/align/unicode_after.txt2
-rw-r--r--vim/bundle/vim-table-mode/t/fixtures/align/unicode_before.txt2
-rw-r--r--vim/bundle/vim-table-mode/t/fixtures/cell/sample.txt2
-rw-r--r--vim/bundle/vim-table-mode/t/fixtures/formula/formula.txt7
-rw-r--r--vim/bundle/vim-table-mode/t/fixtures/formula/sample.txt7
-rw-r--r--vim/bundle/vim-table-mode/t/fixtures/sample.txt4
-rw-r--r--vim/bundle/vim-table-mode/t/fixtures/table/sample.txt4
-rw-r--r--vim/bundle/vim-table-mode/t/fixtures/table/sample_for_header.txt3
-rw-r--r--vim/bundle/vim-table-mode/t/fixtures/table/sample_for_header_unicode.txt9
-rw-r--r--vim/bundle/vim-table-mode/t/fixtures/table/sample_header_realign_after.txt4
-rw-r--r--vim/bundle/vim-table-mode/t/fixtures/table/sample_header_realign_before.txt4
-rw-r--r--vim/bundle/vim-table-mode/t/fixtures/table/sample_header_realign_unicode_after.txt8
-rw-r--r--vim/bundle/vim-table-mode/t/fixtures/table/sample_header_realign_unicode_before.txt8
-rw-r--r--vim/bundle/vim-table-mode/t/fixtures/table/sample_realign_after.txt2
-rw-r--r--vim/bundle/vim-table-mode/t/fixtures/table/sample_realign_before.txt2
-rw-r--r--vim/bundle/vim-table-mode/t/fixtures/table/sample_realign_unicode_after.txt4
-rw-r--r--vim/bundle/vim-table-mode/t/fixtures/table/sample_realign_unicode_before.txt4
-rw-r--r--vim/bundle/vim-table-mode/t/fixtures/table/sample_with_header.txt7
-rw-r--r--vim/bundle/vim-table-mode/t/fixtures/tableize.txt4
-rw-r--r--vim/bundle/vim-table-mode/t/formula.vim39
-rw-r--r--vim/bundle/vim-table-mode/t/spreadsheet.vim105
-rw-r--r--vim/bundle/vim-table-mode/t/table.vim184
-rw-r--r--vim/bundle/vim-table-mode/t/tablemode.vim56
-rw-r--r--vim/bundle/vim-table-mode/t/utils.vim45
29 files changed, 702 insertions, 0 deletions
diff --git a/vim/bundle/vim-table-mode/t/align.vim b/vim/bundle/vim-table-mode/t/align.vim
new file mode 100644
index 0000000..930504d
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/align.vim
@@ -0,0 +1,20 @@
+" vim: fdm=indent
+source t/config/options.vim
+
+function! ConvertLines2Dict(lines)
+ let lines = []
+ for idx in range(len(a:lines))
+ call insert(lines, {"lnum": idx+1, "text": a:lines[idx]})
+ endfor
+ return lines
+endfunction
+
+describe 'Align'
+ it 'should align table content correctly'
+ Expect tablemode#align#Align(ConvertLines2Dict(readfile('t/fixtures/align/simple_before.txt'))) == ConvertLines2Dict(readfile('t/fixtures/align/simple_after.txt'))
+ end
+
+ it 'should align table content with unicode characters correctly'
+ Expect tablemode#align#Align(ConvertLines2Dict(readfile('t/fixtures/align/unicode_before.txt'))) == ConvertLines2Dict(readfile('t/fixtures/align/unicode_after.txt'))
+ end
+end
diff --git a/vim/bundle/vim-table-mode/t/cell.vim b/vim/bundle/vim-table-mode/t/cell.vim
new file mode 100644
index 0000000..e3d03ed
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/cell.vim
@@ -0,0 +1,135 @@
+" vim: fdm=indent
+source t/config/options.vim
+
+describe 'cell'
+ describe 'API'
+ before
+ new
+ read t/fixtures/sample.txt
+ end
+
+ it 'should return the cells with GetCells'
+ Expect tablemode#spreadsheet#cell#GetCells(2, 1, 1) ==# 'test11'
+ " Get Rows
+ Expect tablemode#spreadsheet#cell#GetCells(2, 1) == ['test11', 'test12']
+ Expect tablemode#spreadsheet#cell#GetCells(2, 2) == ['test21', 'test22']
+ " Get Columns
+ Expect tablemode#spreadsheet#cell#GetCells(2, 0, 1) == ['test11', 'test21']
+ Expect tablemode#spreadsheet#cell#GetCells(2, 0, 2) == ['test12', 'test22']
+ end
+
+ it 'should return the row with GetRow'
+ Expect tablemode#spreadsheet#cell#GetRow(1, 2) == ['test11', 'test12']
+ Expect tablemode#spreadsheet#cell#GetRow(2, 2) == ['test21', 'test22']
+ end
+
+ it 'should return the column with GetColumn'
+ Expect tablemode#spreadsheet#cell#GetColumn(1, 2) == ['test11', 'test21']
+ Expect tablemode#spreadsheet#cell#GetColumn(2, 2) == ['test12', 'test22']
+ end
+
+ it 'should return the cells in a range with GetCellRange'
+ " Entire table as range
+ Expect tablemode#spreadsheet#cell#GetCellRange('1,1:2,2', 2, 1) == [['test11', 'test21'], ['test12', 'test22']]
+
+ " Get Rows given different seed lines and columns
+ Expect tablemode#spreadsheet#cell#GetCellRange('1,1:1,2', 2, 1) == ['test11', 'test12']
+ Expect tablemode#spreadsheet#cell#GetCellRange('1,1:1,2', 2, 2) == ['test11', 'test12']
+ Expect tablemode#spreadsheet#cell#GetCellRange('1,1:1,2', 3, 1) == ['test11', 'test12']
+ Expect tablemode#spreadsheet#cell#GetCellRange('1,1:1,2', 3, 2) == ['test11', 'test12']
+ Expect tablemode#spreadsheet#cell#GetCellRange('2,1:2,2', 2, 1) == ['test21', 'test22']
+ Expect tablemode#spreadsheet#cell#GetCellRange('2,1:2,2', 2, 2) == ['test21', 'test22']
+ Expect tablemode#spreadsheet#cell#GetCellRange('2,1:2,2', 3, 1) == ['test21', 'test22']
+ Expect tablemode#spreadsheet#cell#GetCellRange('2,1:2,2', 3, 2) == ['test21', 'test22']
+
+ " Get Columns given different seed lines and column
+ Expect tablemode#spreadsheet#cell#GetCellRange('1:2', 2, 1) == ['test11', 'test21']
+ Expect tablemode#spreadsheet#cell#GetCellRange('1:2', 2, 2) == ['test12', 'test22']
+ Expect tablemode#spreadsheet#cell#GetCellRange('1:2', 3, 1) == ['test11', 'test21']
+ Expect tablemode#spreadsheet#cell#GetCellRange('1:2', 3, 2) == ['test12', 'test22']
+
+ " Get Column given negative values in range for representing rows from
+ " the end, -1 being the second last row.
+ Expect tablemode#spreadsheet#cell#GetCellRange('1:-1', 2, 1) == ['test11']
+ Expect tablemode#spreadsheet#cell#GetCellRange('1:-1', 3, 1) == ['test11']
+ Expect tablemode#spreadsheet#cell#GetCellRange('1:-1', 2, 2) == ['test12']
+ Expect tablemode#spreadsheet#cell#GetCellRange('1:-1', 3, 2) == ['test12']
+ end
+ end
+
+ describe 'Motions'
+ describe 'left or right'
+ before
+ new
+ normal! ggdG
+ read t/fixtures/sample.txt
+ call cursor(2, 3)
+ end
+
+ it 'should move left when not on first column'
+ call cursor(2, 12)
+ Expect tablemode#spreadsheet#ColumnNr('.') == 2
+ call tablemode#spreadsheet#cell#Motion('h')
+ Expect tablemode#spreadsheet#ColumnNr('.') == 1
+ end
+
+ it 'should move to the previous row last column if it exists when on first column'
+ call cursor(3, 3)
+ Expect tablemode#spreadsheet#RowNr('.') == 2
+ Expect tablemode#spreadsheet#ColumnNr('.') == 1
+ call tablemode#spreadsheet#cell#Motion('h')
+ Expect tablemode#spreadsheet#RowNr('.') == 1
+ Expect tablemode#spreadsheet#ColumnNr('.') == 2
+ end
+
+ it 'should move right when not on last column'
+ Expect tablemode#spreadsheet#ColumnNr('.') == 1
+ call tablemode#spreadsheet#cell#Motion('l')
+ Expect tablemode#spreadsheet#ColumnNr('.') == 2
+ end
+
+ it 'should move to the next row first column if it exists when on last column'
+ call cursor(2, 12)
+ Expect tablemode#spreadsheet#RowNr('.') == 1
+ Expect tablemode#spreadsheet#ColumnNr('.') == 2
+ call tablemode#spreadsheet#cell#Motion('l')
+ Expect tablemode#spreadsheet#RowNr('.') == 2
+ Expect tablemode#spreadsheet#ColumnNr('.') == 1
+ end
+ end
+
+ describe 'up or down'
+ before
+ new
+ normal! ggdG
+ read t/fixtures/sample.txt
+ call cursor(2, 3)
+ end
+
+ it 'should move a row up unless on first row'
+ call cursor(3, 3)
+ Expect tablemode#spreadsheet#RowNr('.') == 2
+ call tablemode#spreadsheet#cell#Motion('k')
+ Expect tablemode#spreadsheet#RowNr('.') == 1
+ end
+
+ it 'should remain on first row when trying to move up'
+ Expect tablemode#spreadsheet#RowNr('.') == 1
+ call tablemode#spreadsheet#cell#Motion('k')
+ Expect tablemode#spreadsheet#RowNr('.') == 1
+ end
+
+ it 'should move a row down unless on last row'
+ Expect tablemode#spreadsheet#RowNr('.') == 1
+ call tablemode#spreadsheet#cell#Motion('j')
+ Expect tablemode#spreadsheet#RowNr('.') == 2
+ end
+
+ it 'should remain on last row when trying to move down'
+ Expect tablemode#spreadsheet#RowNr('.') == 1
+ call tablemode#spreadsheet#cell#Motion('k')
+ Expect tablemode#spreadsheet#RowNr('.') == 1
+ end
+ end
+ end
+end
diff --git a/vim/bundle/vim-table-mode/t/config/options.vim b/vim/bundle/vim-table-mode/t/config/options.vim
new file mode 100644
index 0000000..99b5098
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/config/options.vim
@@ -0,0 +1,27 @@
+let g:table_mode_corner = '+'
+let g:table_mode_separator = '|'
+let g:table_mode_fillchar = '-'
+let g:table_mode_header_fillchar = '-'
+let g:table_mode_map_prefix = '<Leader>t'
+let g:table_mode_toggle_map = 'm'
+let g:table_mode_always_active = 0
+let g:table_mode_delimiter = ','
+let g:table_mode_corner_corner = '|'
+let g:table_mode_align_char = ':'
+let g:table_mode_disable_mappings = 0
+
+let g:table_mode_motion_up_map = '{<Bar>'
+let g:table_mode_motion_down_map = '}<Bar>'
+let g:table_mode_motion_left_map = '[<Bar>'
+let g:table_mode_motion_right_map = ']<Bar>'
+
+let g:table_mode_cell_text_object_a_map = 'a<Bar>'
+let g:table_mode_cell_text_object_i_map = 'i<Bar>'
+
+let g:table_mode_realign_map = '<Leader>tr'
+let g:table_mode_delete_row_map = '<Leader>tdd'
+let g:table_mode_delete_column_map = '<Leader>tdc'
+let g:table_mode_add_formula_map = '<Leader>tfa'
+let g:table_mode_eval_formula_map = '<Leader>tfe'
+let g:table_mode_echo_cell_map = '<Leader>t?'
+let g:table_mode_sort_map = '<Leader>ts'
diff --git a/vim/bundle/vim-table-mode/t/fixtures/align/simple_after.txt b/vim/bundle/vim-table-mode/t/fixtures/align/simple_after.txt
new file mode 100644
index 0000000..ed96f07
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/fixtures/align/simple_after.txt
@@ -0,0 +1,2 @@
+| This | is a | table |
+| This | is also | a table |
diff --git a/vim/bundle/vim-table-mode/t/fixtures/align/simple_before.txt b/vim/bundle/vim-table-mode/t/fixtures/align/simple_before.txt
new file mode 100644
index 0000000..b483ea5
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/fixtures/align/simple_before.txt
@@ -0,0 +1,2 @@
+|This|is a|table|
+|This|is also|a table|
diff --git a/vim/bundle/vim-table-mode/t/fixtures/align/unicode_after.txt b/vim/bundle/vim-table-mode/t/fixtures/align/unicode_after.txt
new file mode 100644
index 0000000..8778914
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/fixtures/align/unicode_after.txt
@@ -0,0 +1,2 @@
+| This | is 測試 | table |
+| This | is also | a table |
diff --git a/vim/bundle/vim-table-mode/t/fixtures/align/unicode_before.txt b/vim/bundle/vim-table-mode/t/fixtures/align/unicode_before.txt
new file mode 100644
index 0000000..3edd654
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/fixtures/align/unicode_before.txt
@@ -0,0 +1,2 @@
+| This | is 測試 | table |
+| This | is also | a table |
diff --git a/vim/bundle/vim-table-mode/t/fixtures/cell/sample.txt b/vim/bundle/vim-table-mode/t/fixtures/cell/sample.txt
new file mode 100644
index 0000000..9e670d5
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/fixtures/cell/sample.txt
@@ -0,0 +1,2 @@
+| 1 | 2 |
+| 3 | 4 |
diff --git a/vim/bundle/vim-table-mode/t/fixtures/formula/formula.txt b/vim/bundle/vim-table-mode/t/fixtures/formula/formula.txt
new file mode 100644
index 0000000..ab2df91
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/fixtures/formula/formula.txt
@@ -0,0 +1,7 @@
+| Item | Cost |
+|----------+-------|
+| Bread | 20 |
+| Tomatoes | 5 |
+| Pasta | 100 |
+| Total | 0 |
+/* tmf: $4,2=Sum(1:-1) */
diff --git a/vim/bundle/vim-table-mode/t/fixtures/formula/sample.txt b/vim/bundle/vim-table-mode/t/fixtures/formula/sample.txt
new file mode 100644
index 0000000..2920bbc
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/fixtures/formula/sample.txt
@@ -0,0 +1,7 @@
+| Item | Cost |
+|----------+------|
+| Bread | 20 |
+| Tomatoes | 5 |
+| Pasta | 100 |
+| Total | |
+| Test | |
diff --git a/vim/bundle/vim-table-mode/t/fixtures/sample.txt b/vim/bundle/vim-table-mode/t/fixtures/sample.txt
new file mode 100644
index 0000000..e447226
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/fixtures/sample.txt
@@ -0,0 +1,4 @@
+
+| test11 | test12 |
+| test21 | test22 |
+
diff --git a/vim/bundle/vim-table-mode/t/fixtures/table/sample.txt b/vim/bundle/vim-table-mode/t/fixtures/table/sample.txt
new file mode 100644
index 0000000..e447226
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/fixtures/table/sample.txt
@@ -0,0 +1,4 @@
+
+| test11 | test12 |
+| test21 | test22 |
+
diff --git a/vim/bundle/vim-table-mode/t/fixtures/table/sample_for_header.txt b/vim/bundle/vim-table-mode/t/fixtures/table/sample_for_header.txt
new file mode 100644
index 0000000..75f8f25
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/fixtures/table/sample_for_header.txt
@@ -0,0 +1,3 @@
+| test11 | test12 |
+
+| test21 | test22 |
diff --git a/vim/bundle/vim-table-mode/t/fixtures/table/sample_for_header_unicode.txt b/vim/bundle/vim-table-mode/t/fixtures/table/sample_for_header_unicode.txt
new file mode 100644
index 0000000..7b4e02a
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/fixtures/table/sample_for_header_unicode.txt
@@ -0,0 +1,9 @@
+
+| abc | 测试长度 | 长测试 |
+
+| 长 | 测试测试测试测试 | 测试测试 |
+
+| 测试测试 | 测试 | 测试测测试 |
+
+| 测试测试测试 | 测试测试 | 测试 |
+
diff --git a/vim/bundle/vim-table-mode/t/fixtures/table/sample_header_realign_after.txt b/vim/bundle/vim-table-mode/t/fixtures/table/sample_header_realign_after.txt
new file mode 100644
index 0000000..e4362a1
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/fixtures/table/sample_header_realign_after.txt
@@ -0,0 +1,4 @@
+| S. No | Title | Message |
+|-------+:------+:-------:|
+| 1 | t1 | msg1 |
+| 2 | t2 | msg2 |
diff --git a/vim/bundle/vim-table-mode/t/fixtures/table/sample_header_realign_before.txt b/vim/bundle/vim-table-mode/t/fixtures/table/sample_header_realign_before.txt
new file mode 100644
index 0000000..1f65bfd
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/fixtures/table/sample_header_realign_before.txt
@@ -0,0 +1,4 @@
+|S. No|Title|Message|
+|-----+:----+:-----:|
+|1|t1|msg1|
+|2|t2|msg2|
diff --git a/vim/bundle/vim-table-mode/t/fixtures/table/sample_header_realign_unicode_after.txt b/vim/bundle/vim-table-mode/t/fixtures/table/sample_header_realign_unicode_after.txt
new file mode 100644
index 0000000..4c70b01
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/fixtures/table/sample_header_realign_unicode_after.txt
@@ -0,0 +1,8 @@
+|--------------+------------------+------------|
+| 测试测试 | 测试长度 | 长测试 |
+|--------------+:----------------:+-----------:|
+| abc | 测试长度 | 长测试 |
+| 长 | 测试测试测试测试 | 测试测试 |
+| 测试测试 | 测试 | 测试测测试 |
+| 测试测试测试 | 测试测试 | 测试 |
+|--------------+------------------+------------|
diff --git a/vim/bundle/vim-table-mode/t/fixtures/table/sample_header_realign_unicode_before.txt b/vim/bundle/vim-table-mode/t/fixtures/table/sample_header_realign_unicode_before.txt
new file mode 100644
index 0000000..67bf1db
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/fixtures/table/sample_header_realign_unicode_before.txt
@@ -0,0 +1,8 @@
+|--------+--------+------|
+|测试测试|测试长度|长测试|
+|--------+:------:+-----:|
+|abc|测试长度|长测试|
+|长|测试测试测试测试|测试测试|
+|测试测试|测试|测试测测试|
+|测试测试测试|测试测试|测试|
+|------------+--------+----|
diff --git a/vim/bundle/vim-table-mode/t/fixtures/table/sample_realign_after.txt b/vim/bundle/vim-table-mode/t/fixtures/table/sample_realign_after.txt
new file mode 100644
index 0000000..e7fd9e1
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/fixtures/table/sample_realign_after.txt
@@ -0,0 +1,2 @@
+| test11 | test12 |
+| test21 | test22 |
diff --git a/vim/bundle/vim-table-mode/t/fixtures/table/sample_realign_before.txt b/vim/bundle/vim-table-mode/t/fixtures/table/sample_realign_before.txt
new file mode 100644
index 0000000..d1b3499
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/fixtures/table/sample_realign_before.txt
@@ -0,0 +1,2 @@
+|test11|test12|
+|test21|test22|
diff --git a/vim/bundle/vim-table-mode/t/fixtures/table/sample_realign_unicode_after.txt b/vim/bundle/vim-table-mode/t/fixtures/table/sample_realign_unicode_after.txt
new file mode 100644
index 0000000..b479b24
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/fixtures/table/sample_realign_unicode_after.txt
@@ -0,0 +1,4 @@
+| abc | 测试长度 | 长测试 |
+| 长 | 测试测试测试测试 | 测试测试 |
+| 测试测试 | 测试 | 测试测测试 |
+| 测试测试测试 | 测试测试 | 测试 |
diff --git a/vim/bundle/vim-table-mode/t/fixtures/table/sample_realign_unicode_before.txt b/vim/bundle/vim-table-mode/t/fixtures/table/sample_realign_unicode_before.txt
new file mode 100644
index 0000000..8c3124f
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/fixtures/table/sample_realign_unicode_before.txt
@@ -0,0 +1,4 @@
+|abc|测试长度|长测试|
+|长|测试测试测试测试|测试测试|
+|测试测试|测试|测试测测试|
+|测试测试测试|测试测试|测试|
diff --git a/vim/bundle/vim-table-mode/t/fixtures/table/sample_with_header.txt b/vim/bundle/vim-table-mode/t/fixtures/table/sample_with_header.txt
new file mode 100644
index 0000000..9213e7f
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/fixtures/table/sample_with_header.txt
@@ -0,0 +1,7 @@
+|--------+---------|
+| Title | Message |
+|--------+---------|
+| test11 | test12 |
+| test21 | test22 |
+|--------+---------|
+
diff --git a/vim/bundle/vim-table-mode/t/fixtures/tableize.txt b/vim/bundle/vim-table-mode/t/fixtures/tableize.txt
new file mode 100644
index 0000000..ee1cc7a
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/fixtures/tableize.txt
@@ -0,0 +1,4 @@
+
+asd,asd;asd,asd
+asd,asd;asd,asd
+
diff --git a/vim/bundle/vim-table-mode/t/formula.vim b/vim/bundle/vim-table-mode/t/formula.vim
new file mode 100644
index 0000000..a052392
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/formula.vim
@@ -0,0 +1,39 @@
+" vim: fdm=indent
+source t/config/options.vim
+
+describe 'Formulas'
+ describe 'Add Formula'
+ before
+ new
+ read t/fixtures/formula/sample.txt
+ end
+
+ it 'should add a formula successfully'
+ call cursor(6, 15)
+ call tablemode#spreadsheet#formula#Add("Sum(1:3)")
+ Expect tablemode#spreadsheet#cell#GetCell() == '125.0'
+ call cursor(8, 15)
+ Expect getline('.') == '/* tmf: $4,2=Sum(1:3) */'
+
+ call cursor(7, 15)
+ call tablemode#spreadsheet#formula#Add("Sum(1:-1)")
+ Expect tablemode#spreadsheet#cell#GetCell() == '250.0'
+ call cursor(8, 15)
+ Expect getline('.') == '/* tmf: $4,2=Sum(1:3); $5,2=Sum(1:-1) */'
+ end
+ end
+
+ describe 'Evaluate Formula'
+ before
+ new
+ read t/fixtures/formula/formula.txt
+ end
+
+ it 'should evaluate the formula successfull'
+ call cursor(6, 15)
+ call tablemode#spreadsheet#formula#EvaluateFormulaLine()
+ Expect &modified == 1
+ Expect tablemode#spreadsheet#cell#GetCell() == '125.0'
+ end
+ end
+end
diff --git a/vim/bundle/vim-table-mode/t/spreadsheet.vim b/vim/bundle/vim-table-mode/t/spreadsheet.vim
new file mode 100644
index 0000000..093475c
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/spreadsheet.vim
@@ -0,0 +1,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
diff --git a/vim/bundle/vim-table-mode/t/table.vim b/vim/bundle/vim-table-mode/t/table.vim
new file mode 100644
index 0000000..516467c
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/table.vim
@@ -0,0 +1,184 @@
+" vim: fdm=indent
+source t/config/options.vim
+
+describe 'table'
+ describe 'IsRow'
+ before
+ new
+ normal! ggdG
+ read t/fixtures/table/sample.txt
+ end
+
+ it 'should be true when on a table row'
+ Expect tablemode#table#IsRow(2) to_be_true
+ Expect tablemode#table#IsRow(3) to_be_true
+ end
+
+ it 'should be false when not on a table row'
+ Expect tablemode#table#IsRow(1) to_be_false
+ Expect tablemode#table#IsRow(4) to_be_false
+ end
+ end
+
+ describe 'IsBorder'
+ before
+ new
+ normal! ggdG
+ read t/fixtures/table/sample_with_header.txt
+ end
+
+ it 'should be true on a table border'
+ Expect tablemode#table#IsBorder(1) to_be_true
+ Expect tablemode#table#IsBorder(3) to_be_true
+ Expect tablemode#table#IsBorder(6) to_be_true
+ end
+
+ it 'should be false when not on a table border'
+ Expect tablemode#table#IsBorder(2) to_be_false
+ Expect tablemode#table#IsBorder(4) to_be_false
+ Expect tablemode#table#IsBorder(5) to_be_false
+ end
+ end
+
+ describe 'IsTable'
+ before
+ new normal! ggdG
+ read t/fixtures/table/sample_with_header.txt
+ end
+
+ it 'should be true on a table row'
+ Expect tablemode#table#IsTable(2) to_be_true
+ Expect tablemode#table#IsTable(4) to_be_true
+ Expect tablemode#table#IsTable(5) to_be_true
+ end
+
+ it 'should be true when on a table border'
+ Expect tablemode#table#IsTable(1) to_be_true
+ Expect tablemode#table#IsTable(3) to_be_true
+ Expect tablemode#table#IsTable(6) to_be_true
+ end
+
+ it 'should not be true when not on a table'
+ Expect tablemode#table#IsTable(7) to_be_false
+ end
+ end
+
+ describe 'IsHeader'
+ before
+ new
+ normal! ggdG
+ read t/fixtures/table/sample_with_header.txt
+ end
+
+ it 'should be true on the table header'
+ Expect tablemode#table#IsHeader(2) to_be_true
+ end
+
+ it 'should be false anywhere else'
+ Expect tablemode#table#IsHeader(1) to_be_false
+ Expect tablemode#table#IsHeader(4) to_be_false
+ Expect tablemode#table#IsHeader(5) to_be_false
+ Expect tablemode#table#IsHeader(6) to_be_false
+ Expect tablemode#table#IsHeader(7) to_be_false
+ end
+ end
+
+ describe 'AddBorder'
+ before
+ new
+ normal! ggdG
+ read t/fixtures/table/sample_for_header.txt
+ end
+
+ it 'should add border to line'
+ call tablemode#table#AddBorder(2)
+ Expect tablemode#table#IsHeader(1) to_be_true
+ Expect tablemode#table#IsBorder(2) to_be_true
+ end
+
+ describe 'for unicode'
+ before
+ new
+ normal! ggdG
+ read t/fixtures/table/sample_for_header_unicode.txt
+ end
+
+ it 'should add border to line'
+ call tablemode#table#AddBorder(1)
+ call tablemode#table#AddBorder(3)
+ call tablemode#table#AddBorder(5)
+ call tablemode#table#AddBorder(7)
+ call tablemode#table#AddBorder(9)
+
+ Expect tablemode#table#IsBorder(1) to_be_true
+ Expect tablemode#utils#StrDisplayWidth(getline(1)) == tablemode#utils#StrDisplayWidth(getline(2))
+ Expect tablemode#table#IsBorder(3) to_be_true
+ Expect tablemode#utils#StrDisplayWidth(getline(3)) == tablemode#utils#StrDisplayWidth(getline(4))
+ Expect tablemode#table#IsBorder(5) to_be_true
+ Expect tablemode#utils#StrDisplayWidth(getline(5)) == tablemode#utils#StrDisplayWidth(getline(6))
+ Expect tablemode#table#IsBorder(7) to_be_true
+ Expect tablemode#utils#StrDisplayWidth(getline(7)) == tablemode#utils#StrDisplayWidth(getline(8))
+ Expect tablemode#table#IsBorder(9) to_be_true
+ Expect tablemode#utils#StrDisplayWidth(getline(9)) == tablemode#utils#StrDisplayWidth(getline(8))
+ end
+ end
+ end
+
+ describe 'Realign'
+ describe 'without header alignments'
+ describe 'for simple'
+ before
+ new
+ normal! ggdG
+ read t/fixtures/table/sample_realign_before.txt
+ end
+
+ it 'should be aligned properly'
+ call tablemode#table#Realign(1)
+ Expect getline(1,'$') == readfile('t/fixtures/table/sample_realign_after.txt')
+ end
+ end
+
+ describe 'for unicode'
+ before
+ new
+ normal! ggdG
+ read t/fixtures/table/sample_realign_unicode_before.txt
+ end
+
+ it 'should be aligned properly'
+ call tablemode#table#Realign(1)
+ Expect getline(1,'$') == readfile('t/fixtures/table/sample_realign_unicode_after.txt')
+ end
+ end
+ end
+
+ describe 'with header alignments'
+ describe 'for simple'
+ before
+ new
+ normal! ggdG
+ read t/fixtures/table/sample_header_realign_before.txt
+ end
+
+ it 'should be aligned properly'
+ call tablemode#table#Realign(1)
+ Expect getline(1,'$') == readfile('t/fixtures/table/sample_header_realign_after.txt')
+ end
+ end
+
+ describe 'for unicode'
+ before
+ new
+ normal! ggdG
+ read t/fixtures/table/sample_header_realign_unicode_before.txt
+ end
+
+ it 'should be aligned properly'
+ call tablemode#table#Realign(1)
+ Expect getline(1,'$') == readfile('t/fixtures/table/sample_header_realign_unicode_after.txt')
+ end
+ end
+ end
+ end
+end
diff --git a/vim/bundle/vim-table-mode/t/tablemode.vim b/vim/bundle/vim-table-mode/t/tablemode.vim
new file mode 100644
index 0000000..132c4bb
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/tablemode.vim
@@ -0,0 +1,56 @@
+" vim: fdm=indent
+source t/config/options.vim
+
+describe 'tablemode'
+ describe 'Activation'
+ describe 'tablemode#Enable()'
+ before
+ call tablemode#Enable()
+ end
+
+ it 'should enable table mode'
+ Expect b:table_mode_active to_be_true
+ end
+ end
+
+ describe 'tablemode#Disable()'
+ before
+ call tablemode#Disable()
+ end
+
+ it 'should disable table mode'
+ Expect b:table_mode_active to_be_false
+ end
+ end
+
+ describe 'tablemode#Toggle()'
+ it 'should toggle table mode'
+ call tablemode#Toggle()
+ Expect b:table_mode_active to_be_true
+ call tablemode#Toggle()
+ Expect b:table_mode_active to_be_false
+ end
+ end
+ end
+
+ describe 'Tableize'
+ before
+ new
+ read t/fixtures/tableize.txt
+ end
+
+ it 'should tableize with default delimiter'
+ :2,3call tablemode#TableizeRange('')
+ Expect tablemode#table#IsRow(2) to_be_true
+ Expect tablemode#spreadsheet#RowCount(2) == 2
+ Expect tablemode#spreadsheet#ColumnCount(2) == 3
+ end
+
+ it 'should tableize with given delimiter'
+ :2,3call tablemode#TableizeRange('/;')
+ Expect tablemode#table#IsRow(2) to_be_true
+ Expect tablemode#spreadsheet#RowCount(2) == 2
+ Expect tablemode#spreadsheet#ColumnCount(2) == 2
+ end
+ end
+end
diff --git a/vim/bundle/vim-table-mode/t/utils.vim b/vim/bundle/vim-table-mode/t/utils.vim
new file mode 100644
index 0000000..3bfff19
--- /dev/null
+++ b/vim/bundle/vim-table-mode/t/utils.vim
@@ -0,0 +1,45 @@
+" vim: fdm=indent
+source t/config/options.vim
+
+describe 'utils'
+ describe 'line'
+ it 'should return the current line number'
+ Expect tablemode#utils#line('.') == line('.')
+ end
+
+ it 'should return the line number itself if it is a number'
+ Expect tablemode#utils#line(1) == 1
+ end
+ end
+
+ describe 'strip'
+ it 'should strip all initial or trailing whitespace from a string'
+ let string = ' This is awesome '
+ Expect tablemode#utils#strip(string) == 'This is awesome'
+ end
+ end
+
+ describe 'strlen'
+ it 'should return the length of a string correctly'
+ let string = 'this is a test'
+ Expect tablemode#utils#strlen(string) == 14
+ end
+
+ it 'should return the length of a unicode string correctly'
+ let string = '測試 is good.'
+ Expect tablemode#utils#strlen(string) == 11
+ end
+ end
+
+ describe 'strdisplaywidth'
+ it 'should return the display width of a string correctly'
+ let string = 'this is a test'
+ Expect tablemode#utils#StrDisplayWidth(string) == 14
+ end
+
+ it 'should return the display width of a unicode string correctly'
+ let string = '測試 is good.'
+ Expect tablemode#utils#StrDisplayWidth(string) == 13
+ end
+ end
+end