summaryrefslogtreecommitdiffstats
path: root/src/testdir/test_sort.vim
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-02-20 22:19:05 +0100
committerBram Moolenaar <Bram@vim.org>2019-02-20 22:19:05 +0100
commita25e3d06956f1bc11c68fe60149acce2d8547092 (patch)
treeea60ee4e461dec0d9ba55ac4c2018c1fef74a66d /src/testdir/test_sort.vim
parent38f08e76acf7d21bb34cf8f79f0f82eb63cdc987 (diff)
patch 8.1.0959: sorting large numbers is not testedv8.1.0959
Problem: Sorting large numbers is not tested and does not work properly. Solution: Add test. Fix comparing lines with and without a number. (Dominique Pelle, closes #4017)
Diffstat (limited to 'src/testdir/test_sort.vim')
-rw-r--r--src/testdir/test_sort.vim71
1 files changed, 71 insertions, 0 deletions
diff --git a/src/testdir/test_sort.vim b/src/testdir/test_sort.vim
index 14d008a17f..7da82b0185 100644
--- a/src/testdir/test_sort.vim
+++ b/src/testdir/test_sort.vim
@@ -1222,6 +1222,77 @@ func Test_sort_cmd()
enew!
endfunc
+func Test_sort_large_num()
+ new
+ a
+-2147483648
+-2147483647
+
+-1
+0
+1
+-2147483646
+2147483646
+2147483647
+2147483647
+-2147483648
+abc
+
+.
+ " Numerical sort. Non-numeric lines are ordered before numerical lines.
+ " Ordering of non-numerical is stable.
+ sort n
+ call assert_equal(['',
+ \ 'abc',
+ \ '',
+ \ '-2147483648',
+ \ '-2147483648',
+ \ '-2147483647',
+ \ '-2147483646',
+ \ '-1',
+ \ '0',
+ \ '1',
+ \ '2147483646',
+ \ '2147483647',
+ \ '2147483647'], getline(1, '$'))
+ bwipe!
+
+ if has('num64')
+ new
+ a
+-9223372036854775808
+-9223372036854775807
+
+-1
+0
+1
+-9223372036854775806
+9223372036854775806
+9223372036854775807
+9223372036854775807
+-9223372036854775808
+abc
+
+.
+ sort n
+ call assert_equal(['',
+ \ 'abc',
+ \ '',
+ \ '-9223372036854775808',
+ \ '-9223372036854775808',
+ \ '-9223372036854775807',
+ \ '-9223372036854775806',
+ \ '-1',
+ \ '0',
+ \ '1',
+ \ '9223372036854775806',
+ \ '9223372036854775807',
+ \ '9223372036854775807'], getline(1, '$'))
+ bwipe!
+ endif
+endfunc
+
+
func Test_sort_cmd_report()
enew!
call append(0, repeat([1], 3) + repeat([2], 3) + repeat([3], 3))