diff src/testdir/test_sort.vim @ 12523:881564b89f9b v8.0.1140

patch 8.0.1140: still old style tests commit https://github.com/vim/vim/commit/bb3e6416f157f68799ccb6070fa2f91df6780e79 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Sep 23 19:24:46 2017 +0200 patch 8.0.1140: still old style tests Problem: Still old style tests. Solution: Convert two tests to new style. (Yegappan Lakshmanan)
author Christian Brabandt <cb@256bit.org>
date Sat, 23 Sep 2017 19:30:04 +0200
parents 2c40b40c3220
children f2ab259ef88a
line wrap: on
line diff
--- a/src/testdir/test_sort.vim
+++ b/src/testdir/test_sort.vim
@@ -44,3 +44,1141 @@ func Test_sort_default()
   call assert_equal(['2', 'A', 'a', 'AA', 1, 3.3], sort([3.3, 1, "2", "A", "a", "AA"], 1))
   call assert_fails('call sort([3.3, 1, "2"], 3)', "E474")
 endfunc
+
+" Tests for the :sort command
+func Test_sort_cmd()
+  let tests = [
+	\ {
+	\    'name' : 'Alphabetical sort',
+	\    'cmd' : '%sort',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b'
+	\    ],
+	\    'expected' : [
+	\	' 123b',
+	\	'a',
+	\	'a122',
+	\	'a123',
+	\	'a321',
+	\	'ab',
+	\	'abc',
+	\	'b123',
+	\	'b321',
+	\	'b321',
+	\	'b321b',
+	\	'b322b',
+	\	'c123d',
+	\	'c321d'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'Numeric sort',
+	\    'cmd' : '%sort n',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'a',
+	\	'x-22',
+	\	'b321',
+	\	'b123',
+	\	'',
+	\	'c123d',
+	\	'-24',
+	\	' 123b',
+	\	'c321d',
+	\	'0',
+	\	'b322b',
+	\	'b321',
+	\	'b321b'
+	\    ],
+	\    'expected' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'',
+	\	'-24',
+	\	'x-22',
+	\	'0',
+	\	'a122',
+	\	'a123',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'a321',
+	\	'b321',
+	\	'c321d',
+	\	'b321',
+	\	'b321b',
+	\	'b322b'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'Hexadecimal sort',
+	\    'cmd' : '%sort x',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b'
+	\    ],
+	\    'expected' : [
+	\	'a',
+	\	'ab',
+	\	'abc',
+	\	' 123b',
+	\	'a122',
+	\	'a123',
+	\	'a321',
+	\	'b123',
+	\	'b321',
+	\	'b321',
+	\	'b321b',
+	\	'b322b',
+	\	'c123d',
+	\	'c321d'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'Alphabetical unique sort',
+	\    'cmd' : '%sort u',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b'
+	\    ],
+	\    'expected' : [
+	\	' 123b',
+	\	'a',
+	\	'a122',
+	\	'a123',
+	\	'a321',
+	\	'ab',
+	\	'abc',
+	\	'b123',
+	\	'b321',
+	\	'b321b',
+	\	'b322b',
+	\	'c123d',
+	\	'c321d'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'Alphabetical reverse sort',
+	\    'cmd' : '%sort!',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b'
+	\    ],
+	\    'expected' : [
+	\	'c321d',
+	\	'c123d',
+	\	'b322b',
+	\	'b321b',
+	\	'b321',
+	\	'b321',
+	\	'b123',
+	\	'abc',
+	\	'ab',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'a',
+	\	' 123b',
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'Numeric reverse sort',
+	\    'cmd' : '%sort! n',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b'
+	\    ],
+	\    'expected' : [
+	\	'b322b',
+	\	'b321b',
+	\	'b321',
+	\	'c321d',
+	\	'b321',
+	\	'a321',
+	\	' 123b',
+	\	'c123d',
+	\	'b123',
+	\	'a123',
+	\	'a122',
+	\	'a',
+	\	'ab',
+	\	'abc'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'Unique reverse sort',
+	\    'cmd' : 'sort! u',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b'
+	\    ],
+	\    'expected' : [
+	\	'c321d',
+	\	'c123d',
+	\	'b322b',
+	\	'b321b',
+	\	'b321',
+	\	'b123',
+	\	'abc',
+	\	'ab',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'a',
+	\	' 123b',
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'Octal sort',
+	\    'cmd' : 'sort o',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b',
+	\	'',
+	\	''
+	\    ],
+	\    'expected' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'',
+	\	'',
+	\	'a122',
+	\	'a123',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'a321',
+	\	'b321',
+	\	'c321d',
+	\	'b321',
+	\	'b321b',
+	\	'b322b'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'Reverse hexadecimal sort',
+	\    'cmd' : 'sort! x',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b',
+	\	'',
+	\	''
+	\    ],
+	\    'expected' : [
+	\	'c321d',
+	\	'c123d',
+	\	'b322b',
+	\	'b321b',
+	\	'b321',
+	\	'b321',
+	\	'b123',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	' 123b',
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'',
+	\	''
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'Alpha (skip first character) sort',
+	\    'cmd' : 'sort/./',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b',
+	\	'',
+	\	''
+	\    ],
+	\    'expected' : [
+	\	'a',
+	\	'',
+	\	'',
+	\	'a122',
+	\	'a123',
+	\	'b123',
+	\	' 123b',
+	\	'c123d',
+	\	'a321',
+	\	'b321',
+	\	'b321',
+	\	'b321b',
+	\	'c321d',
+	\	'b322b',
+	\	'ab',
+	\	'abc'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'Alpha (skip first 2 characters) sort',
+	\    'cmd' : 'sort/../',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b',
+	\	'',
+	\	''
+	\    ],
+	\    'expected' : [
+	\	'ab',
+	\	'a',
+	\	'',
+	\	'',
+	\	'a321',
+	\	'b321',
+	\	'b321',
+	\	'b321b',
+	\	'c321d',
+	\	'a122',
+	\	'b322b',
+	\	'a123',
+	\	'b123',
+	\	' 123b',
+	\	'c123d',
+	\	'abc'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'alpha, unique, skip first 2 characters',
+	\    'cmd' : 'sort/../u',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b',
+	\	'',
+	\	''
+	\    ],
+	\    'expected' : [
+	\	'ab',
+	\	'a',
+	\	'',
+	\	'a321',
+	\	'b321',
+	\	'b321b',
+	\	'c321d',
+	\	'a122',
+	\	'b322b',
+	\	'a123',
+	\	'b123',
+	\	' 123b',
+	\	'c123d',
+	\	'abc'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'numeric, skip first character',
+	\    'cmd' : 'sort/./n',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b',
+	\	'',
+	\	''
+	\    ],
+	\    'expected' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'',
+	\	'',
+	\	'a122',
+	\	'a123',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'a321',
+	\	'b321',
+	\	'c321d',
+	\	'b321',
+	\	'b321b',
+	\	'b322b'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'alpha, sort on first character',
+	\    'cmd' : 'sort/./r',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b',
+	\	'',
+	\	''
+	\    ],
+	\    'expected' : [
+	\	'',
+	\	'',
+	\	' 123b',
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'b322b',
+	\	'b321',
+	\	'b321b',
+	\	'c123d',
+	\	'c321d'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'alpha, sort on first 2 characters',
+	\    'cmd' : 'sort/../r',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b',
+	\	'',
+	\	''
+	\    ],
+	\    'expected' : [
+	\	'a',
+	\	'',
+	\	'',
+	\	' 123b',
+	\	'a123',
+	\	'a122',
+	\	'a321',
+	\	'abc',
+	\	'ab',
+	\	'b123',
+	\	'b321',
+	\	'b322b',
+	\	'b321',
+	\	'b321b',
+	\	'c123d',
+	\	'c321d'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'numeric, sort on first character',
+	\    'cmd' : 'sort/./rn',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b',
+	\	'',
+	\	''
+	\    ],
+	\    'expected' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b',
+	\	'',
+	\	''
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'alpha, skip past first digit',
+	\    'cmd' : 'sort/\d/',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b',
+	\	'',
+	\	''
+	\    ],
+	\    'expected' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'',
+	\	'',
+	\	'a321',
+	\	'b321',
+	\	'b321',
+	\	'b321b',
+	\	'c321d',
+	\	'a122',
+	\	'b322b',
+	\	'a123',
+	\	'b123',
+	\	' 123b',
+	\	'c123d'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'alpha, sort on first digit',
+	\    'cmd' : 'sort/\d/r',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b',
+	\	'',
+	\	''
+	\    ],
+	\    'expected' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'',
+	\	'',
+	\	'a123',
+	\	'a122',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'a321',
+	\	'b321',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'numeric, skip past first digit',
+	\    'cmd' : 'sort/\d/n',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b',
+	\	'',
+	\	''
+	\    ],
+	\    'expected' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'',
+	\	'',
+	\	'a321',
+	\	'b321',
+	\	'c321d',
+	\	'b321',
+	\	'b321b',
+	\	'a122',
+	\	'b322b',
+	\	'a123',
+	\	'b123',
+	\	'c123d',
+	\	' 123b'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'numeric, sort on first digit',
+	\    'cmd' : 'sort/\d/rn',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b',
+	\	'',
+	\	''
+	\    ],
+	\    'expected' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'',
+	\	'',
+	\	'a123',
+	\	'a122',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'a321',
+	\	'b321',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'alpha, skip past first 2 digits',
+	\    'cmd' : 'sort/\d\d/',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b',
+	\	'',
+	\	''
+	\    ],
+	\    'expected' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'',
+	\	'',
+	\	'a321',
+	\	'b321',
+	\	'b321',
+	\	'b321b',
+	\	'c321d',
+	\	'a122',
+	\	'b322b',
+	\	'a123',
+	\	'b123',
+	\	' 123b',
+	\	'c123d'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'numeric, skip past first 2 digits',
+	\    'cmd' : 'sort/\d\d/n',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b',
+	\	'',
+	\	''
+	\    ],
+	\    'expected' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'',
+	\	'',
+	\	'a321',
+	\	'b321',
+	\	'c321d',
+	\	'b321',
+	\	'b321b',
+	\	'a122',
+	\	'b322b',
+	\	'a123',
+	\	'b123',
+	\	'c123d',
+	\	' 123b'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'hexadecimal, skip past first 2 digits',
+	\    'cmd' : 'sort/\d\d/x',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b',
+	\	'',
+	\	''
+	\    ],
+	\    'expected' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'',
+	\	'',
+	\	'a321',
+	\	'b321',
+	\	'b321',
+	\	'a122',
+	\	'a123',
+	\	'b123',
+	\	'b321b',
+	\	'c321d',
+	\	'b322b',
+	\	' 123b',
+	\	'c123d'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'alpha, sort on first 2 digits',
+	\    'cmd' : 'sort/\d\d/r',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b',
+	\	'',
+	\	''
+	\    ],
+	\    'expected' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'',
+	\	'',
+	\	'a123',
+	\	'a122',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'a321',
+	\	'b321',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'numeric, sort on first 2 digits',
+	\    'cmd' : 'sort/\d\d/rn',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b',
+	\	'',
+	\	''
+	\    ],
+	\    'expected' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'',
+	\	'',
+	\	'a123',
+	\	'a122',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'a321',
+	\	'b321',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'hexadecimal, sort on first 2 digits',
+	\    'cmd' : 'sort/\d\d/rx',
+	\    'input' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'a321',
+	\	'a123',
+	\	'a122',
+	\	'b321',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b',
+	\	'',
+	\	''
+	\    ],
+	\    'expected' : [
+	\	'abc',
+	\	'ab',
+	\	'a',
+	\	'',
+	\	'',
+	\	'a123',
+	\	'a122',
+	\	'b123',
+	\	'c123d',
+	\	' 123b',
+	\	'a321',
+	\	'b321',
+	\	'c321d',
+	\	'b322b',
+	\	'b321',
+	\	'b321b'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'binary',
+	\    'cmd' : 'sort b',
+	\    'input' : [
+	\	'0b111000',
+	\	'0b101100',
+	\	'0b101001',
+	\	'0b101001',
+	\	'0b101000',
+	\	'0b000000',
+	\	'0b001000',
+	\	'0b010000',
+	\	'0b101000',
+	\	'0b100000',
+	\	'0b101010',
+	\	'0b100010',
+	\	'0b100100',
+	\	'0b100010',
+	\	'',
+	\	''
+	\    ],
+	\    'expected' : [
+	\	'',
+	\	'',
+	\	'0b000000',
+	\	'0b001000',
+	\	'0b010000',
+	\	'0b100000',
+	\	'0b100010',
+	\	'0b100010',
+	\	'0b100100',
+	\	'0b101000',
+	\	'0b101000',
+	\	'0b101001',
+	\	'0b101001',
+	\	'0b101010',
+	\	'0b101100',
+	\	'0b111000'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'binary with leading characters',
+	\    'cmd' : 'sort b',
+	\    'input' : [
+	\	'0b100010',
+	\	'0b010000',
+	\	' 0b101001',
+	\	'b0b101100',
+	\	'0b100010',
+	\	' 0b100100',
+	\	'a0b001000',
+	\	'0b101000',
+	\	'0b101000',
+	\	'a0b101001',
+	\	'ab0b100000',
+	\	'0b101010',
+	\	'0b000000',
+	\	'b0b111000',
+	\	'',
+	\	''
+	\    ],
+	\    'expected' : [
+	\	'',
+	\	'',
+	\	'0b000000',
+	\	'a0b001000',
+	\	'0b010000',
+	\	'ab0b100000',
+	\	'0b100010',
+	\	'0b100010',
+	\	' 0b100100',
+	\	'0b101000',
+	\	'0b101000',
+	\	' 0b101001',
+	\	'a0b101001',
+	\	'0b101010',
+	\	'b0b101100',
+	\	'b0b111000'
+	\    ]
+	\ },
+	\ {
+	\    'name' : 'float',
+	\    'cmd' : 'sort f',
+	\    'input' : [
+	\	'1.234',
+	\	'0.88',
+	\	'123.456',
+	\	'1.15e-6',
+	\	'-1.1e3',
+	\	'-1.01e3',
+	\	'',
+	\	''
+	\    ],
+	\    'expected' : [
+	\	'',
+	\	'',
+	\	'-1.1e3',
+	\	'-1.01e3',
+	\	'1.15e-6',
+	\	'0.88',
+	\	'1.234',
+	\	'123.456'
+	\    ]
+	\ }
+	\ ]
+
+  for t in tests
+    enew!
+    call append(0, t.input)
+    $delete _
+    exe t.cmd
+    call assert_equal(t.expected, getline(1, '$'), t.name)
+  endfor
+
+  call assert_fails('sort no', 'E474')
+
+  enew!
+endfunc