diff options
-rw-r--r-- | test/functional/legacy/057_sort_spec.lua | 806 |
1 files changed, 216 insertions, 590 deletions
diff --git a/test/functional/legacy/057_sort_spec.lua b/test/functional/legacy/057_sort_spec.lua index 776cd0affb..585b391198 100644 --- a/test/functional/legacy/057_sort_spec.lua +++ b/test/functional/legacy/057_sort_spec.lua @@ -1,543 +1,76 @@ -- Tests for :sort command. local helpers = require('test.functional.helpers') -local insert, source, clear, expect, eq, eval = helpers.insert, - helpers.source, helpers.clear, helpers.expect, helpers.eq, helpers.eval +local insert, execute, clear, expect, eq, eval, source = helpers.insert, + helpers.execute, helpers.clear, helpers.expect, helpers.eq, helpers.eval, + helpers.source -describe('sort command', function() - setup(clear) +describe(':sort', function() + local text = [[ + abc + ab + a + a321 + a123 + a122 + b321 + b123 + c123d + 123b + c321d + b322b + b321 + b321b + ]] + before_each(clear) - it('is working', function() - insert([[ - t01: alphebetical - abc - ab - a - a321 - a123 - a122 - b321 - b123 - c123d - 123b - c321d - b322b - b321 - b321b - - - t02: numeric - abc - ab - a321 - a123 - a122 - a - x-22 - b321 - b123 - - c123d - -24 - 123b - c321d - 0 - b322b - b321 - b321b - - - t03: hexadecimal - abc - ab - a - a321 - a123 - a122 - b321 - b123 - c123d - 123b - c321d - b322b - b321 - b321b - - - t04: alpha, unique - abc - ab - a - a321 - a123 - a122 - b321 - b123 - c123d - 123b - c321d - b322b - b321 - b321b - - - t05: alpha, reverse - abc - ab - a - a321 - a123 - a122 - b321 - b123 - c123d - 123b - c321d - b322b - b321 - b321b - - - t06: numeric, reverse - abc - ab - a - a321 - a123 - a122 - b321 - b123 - c123d - 123b - c321d - b322b - b321 - b321b - - - t07: unique, reverse - abc - ab - a - a321 - a123 - a122 - b321 - b123 - c123d - 123b - c321d - b322b - b321 - b321b - - - t08: octal - abc - ab - a - a321 - a123 - a122 - b321 - b123 - c123d - 123b - c321d - b322b - b321 - b321b - - - t09: reverse, hexadecimal - abc - ab - a - a321 - a123 - a122 - b321 - b123 - c123d - 123b - c321d - b322b - b321 - b321b - - - t10: alpha, skip first character - abc - ab - a - a321 - a123 - a122 - b321 - b123 - c123d - 123b - c321d - b322b - b321 - b321b - - - t11: alpha, skip first 2 characters - abc - ab - a - a321 - a123 - a122 - b321 - b123 - c123d - 123b - c321d - b322b - b321 - b321b - - - t12: alpha, unique, skip first 2 characters - abc - ab - a - a321 - a123 - a122 - b321 - b123 - c123d - 123b - c321d - b322b - b321 - b321b - - - t13: numeric, skip first character - abc - ab - a - a321 - a123 - a122 - b321 - b123 - c123d - 123b - c321d - b322b - b321 - b321b - - - t14: alpha, sort on first character - abc - ab - a - a321 - a123 - a122 - b321 - b123 - c123d - 123b - c321d - b322b - b321 - b321b - - - t15: alpha, sort on first 2 characters - abc - ab - a - a321 - a123 - a122 - b321 - b123 - c123d - 123b - c321d - b322b - b321 - b321b - - - t16: numeric, sort on first character - abc - ab - a - a321 - a123 - a122 - b321 - b123 - c123d - 123b - c321d - b322b - b321 - b321b - + it('alphabetical', function() + insert(text) + execute('sort') + expect([[ - t17: alpha, skip past first digit - abc - ab - a - a321 - a123 - a122 - b321 - b123 - c123d 123b - c321d - b322b - b321 - b321b - - - t18: alpha, sort on first digit - abc - ab a - a321 - a123 a122 - b321 - b123 - c123d - 123b - c321d - b322b - b321 - b321b - - - t19: numeric, skip past first digit - abc - ab - a - a321 a123 - a122 - b321 - b123 - c123d - 123b - c321d - b322b - b321 - b321b - - - t20: numeric, sort on first digit - abc - ab - a a321 - a123 - a122 - b321 - b123 - c123d - 123b - c321d - b322b - b321 - b321b - - - t21: alpha, skip past first 2 digits - abc ab - a - a321 - a123 - a122 - b321 - b123 - c123d - 123b - c321d - b322b - b321 - b321b - - - t22: numeric, skip past first 2 digits abc - ab - a - a321 - a123 - a122 - b321 b123 - c123d - 123b - c321d - b322b b321 - b321b - - - t23: hexadecimal, skip past first 2 digits - abc - ab - a - a321 - a123 - a122 - b321 - b123 - c123d - 123b - c321d - b322b b321 b321b - - - t24: alpha, sort on first 2 digits - abc - ab - a - a321 - a123 - a122 - b321 - b123 - c123d - 123b - c321d b322b - b321 - b321b - - - t25: numeric, sort on first 2 digits - abc - ab - a - a321 - a123 - a122 - b321 - b123 c123d - 123b - c321d - b322b - b321 - b321b - - - t26: hexadecimal, sort on first 2 digits + c321d]]) + end) + + it('numerical', function() + insert([[ abc ab - a a321 a123 a122 - b321 - b123 - c123d - 123b - c321d - b322b - b321 - b321b - - - t27: wrong arguments - abc - ab a - a321 - a123 - a122 + x-22 b321 b123 c123d + -24 123b c321d + 0 b322b b321 b321b - - - t28: done ]]) - - source([[ - /^t01:/+1,/^t02/-1sort - /^t02:/+1,/^t03/-1sort n - /^t03:/+1,/^t04/-1sort x - /^t04:/+1,/^t05/-1sort u - /^t05:/+1,/^t06/-1sort! - /^t06:/+1,/^t07/-1sort! n - /^t07:/+1,/^t08/-1sort! u - /^t08:/+1,/^t09/-1sort o - /^t09:/+1,/^t10/-1sort! x - /^t10:/+1,/^t11/-1sort/./ - /^t11:/+1,/^t12/-1sort/../ - /^t12:/+1,/^t13/-1sort/../u - /^t13:/+1,/^t14/-1sort/./n - /^t14:/+1,/^t15/-1sort/./r - /^t15:/+1,/^t16/-1sort/../r - /^t16:/+1,/^t17/-1sort/./rn - /^t17:/+1,/^t18/-1sort/\d/ - /^t18:/+1,/^t19/-1sort/\d/r - /^t19:/+1,/^t20/-1sort/\d/n - /^t20:/+1,/^t21/-1sort/\d/rn - /^t21:/+1,/^t22/-1sort/\d\d/ - /^t22:/+1,/^t23/-1sort/\d\d/n - /^t23:/+1,/^t24/-1sort/\d\d/x - /^t24:/+1,/^t25/-1sort/\d\d/r - /^t25:/+1,/^t26/-1sort/\d\d/rn - /^t26:/+1,/^t27/-1sort/\d\d/rx - ]]) - -- This should fail with "E474: Invalid argument". - source([[ - try - /^t27:/+1,/^t28/-1sort no - catch - let tmpvar = v:exception - endtry]]) - eq('Vim(sort):E474: Invalid argument', eval('tmpvar')) - - -- Assert buffer contents. + execute('sort n') expect([[ - t01: alphebetical - - - 123b - a - a122 - a123 - a321 - ab - abc - b123 - b321 - b321 - b321b - b322b - c123d - c321d - t02: numeric abc ab a - - -24 x-22 0 @@ -551,9 +84,13 @@ describe('sort command', function() c321d b321 b321b - b322b - t03: hexadecimal - + b322b]]) + end) + + it('hexadecimal', function() + insert(text) + execute('sort x') + expect([[ a ab @@ -568,8 +105,13 @@ describe('sort command', function() b321b b322b c123d - c321d - t04: alpha, unique + c321d]]) + end) + + it('alphabetical, unique', function() + insert(text) + execute('sort u') + expect([[ 123b a @@ -583,8 +125,13 @@ describe('sort command', function() b321b b322b c123d - c321d - t05: alpha, reverse + c321d]]) + end) + + it('alphabetical, reverse', function() + insert(text) + execute('sort!') + expect([[ c321d c123d b322b @@ -599,9 +146,13 @@ describe('sort command', function() a122 a 123b - - - t06: numeric, reverse + ]]) + end) + + it('numerical, reverse', function() + insert(text) + execute('sort! n') + expect([[ b322b b321b b321 @@ -614,11 +165,15 @@ describe('sort command', function() a123 a122 - a ab - abc - t07: unique, reverse + abc]]) + end) + + it('unique, reverse', function() + insert(text) + execute('sort! u') + expect([[ c321d c123d b322b @@ -632,13 +187,17 @@ describe('sort command', function() a122 a 123b - - t08: octal + ]]) + end) + + it('octal', function() + insert(text) + execute('sort o') + expect([[ abc ab a - a122 a123 b123 @@ -649,8 +208,13 @@ describe('sort command', function() c321d b321 b321b - b322b - t09: reverse, hexadecimal + b322b]]) + end) + + it('reverse, hexadecimal', function() + insert(text) + execute('sort! x') + expect([[ c321d c123d b322b @@ -665,12 +229,15 @@ describe('sort command', function() abc ab a - - - t10: alpha, skip first character + ]]) + end) + + it('alphabetical, skip first character', function() + insert(text) + execute('sort/./') + expect([[ a - a122 a123 b123 @@ -683,12 +250,16 @@ describe('sort command', function() c321d b322b ab - abc - t11: alpha, skip first 2 characters + abc]]) + end) + + it('alphabetical, skip first 2 characters', function() + insert(text) + execute('sort/../') + expect([[ ab a - a321 b321 b321 @@ -700,8 +271,13 @@ describe('sort command', function() b123 123b c123d - abc - t12: alpha, unique, skip first 2 characters + abc]]) + end) + + it('alphabetical, unique, skip first 2 characters', function() + insert(text) + execute('sort/../u') + expect([[ ab a @@ -715,13 +291,17 @@ describe('sort command', function() b123 123b c123d - abc - t13: numeric, skip first character + abc]]) + end) + + it('numerical, skip first character', function() + insert(text) + execute('sort/./n') + expect([[ abc ab a - a122 a123 b123 @@ -732,9 +312,13 @@ describe('sort command', function() c321d b321 b321b - b322b - t14: alpha, sort on first character - + b322b]]) + end) + + it('alphabetical, sort on first character', function() + insert(text) + execute('sort/./r') + expect([[ 123b abc @@ -749,11 +333,15 @@ describe('sort command', function() b321 b321b c123d - c321d - t15: alpha, sort on first 2 characters + c321d]]) + end) + + it('alphabetical, sort on first 2 characters', function() + insert(text) + execute('sort/../r') + expect([[ a - 123b a123 a122 @@ -766,8 +354,13 @@ describe('sort command', function() b321 b321b c123d - c321d - t16: numeric, sort on first character + c321d]]) + end) + + it('numerical, sort on first character', function() + insert(text) + execute('sort/./rn') + expect([[ abc ab a @@ -782,14 +375,17 @@ describe('sort command', function() b322b b321 b321b - - - t17: alpha, skip past first digit + ]]) + end) + + it('alphabetical, skip past first digit', function() + insert(text) + execute([[sort/\d/]]) + expect([[ abc ab a - a321 b321 b321 @@ -800,13 +396,17 @@ describe('sort command', function() a123 b123 123b - c123d - t18: alpha, sort on first digit + c123d]]) + end) + + it('alphabetical, sort on first digit', function() + insert(text) + execute([[sort/\d/r]]) + expect([[ abc ab a - a123 a122 b123 @@ -817,13 +417,17 @@ describe('sort command', function() c321d b322b b321 - b321b - t19: numeric, skip past first digit + b321b]]) + end) + + it('numerical, skip past first digit', function() + insert(text) + execute([[sort/\d/n]]) + expect([[ abc ab a - a321 b321 c321d @@ -834,13 +438,17 @@ describe('sort command', function() a123 b123 c123d - 123b - t20: numeric, sort on first digit + 123b]]) + end) + + it('numerical, sort on first digit', function() + insert(text) + execute([[sort/\d/rn]]) + expect([[ abc ab a - a123 a122 b123 @@ -851,13 +459,17 @@ describe('sort command', function() c321d b322b b321 - b321b - t21: alpha, skip past first 2 digits + b321b]]) + end) + + it('alphabetical, skip past first 2 digits', function() + insert(text) + execute([[sort/\d\d/]]) + expect([[ abc ab a - a321 b321 b321 @@ -868,13 +480,17 @@ describe('sort command', function() a123 b123 123b - c123d - t22: numeric, skip past first 2 digits + c123d]]) + end) + + it('numerical, skip past first 2 digits', function() + insert(text) + execute([[sort/\d\d/n]]) + expect([[ abc ab a - a321 b321 c321d @@ -885,13 +501,17 @@ describe('sort command', function() a123 b123 c123d - 123b - t23: hexadecimal, skip past first 2 digits + 123b]]) + end) + + it('hexadecimal, skip past first 2 digits', function() + insert(text) + execute([[sort/\d\d/x]]) + expect([[ abc ab a - a321 b321 b321 @@ -902,13 +522,17 @@ describe('sort command', function() c321d b322b 123b - c123d - t24: alpha, sort on first 2 digits + c123d]]) + end) + + it('alpha, on first 2 digits', function() + insert(text) + execute([[sort/\d\d/r]]) + expect([[ abc ab a - a123 a122 b123 @@ -919,13 +543,17 @@ describe('sort command', function() c321d b322b b321 - b321b - t25: numeric, sort on first 2 digits + b321b]]) + end) + + it('numeric, on first 2 digits', function() + insert(text) + execute([[sort/\d\d/rn]]) + expect([[ abc ab a - a123 a122 b123 @@ -936,13 +564,17 @@ describe('sort command', function() c321d b322b b321 - b321b - t26: hexadecimal, sort on first 2 digits + b321b]]) + end) + + it('hexadecimal, on first 2 digits', function() + insert(text) + execute([[sort/\d\d/rx]]) + expect([[ abc ab a - a123 a122 b123 @@ -953,25 +585,19 @@ describe('sort command', function() c321d b322b b321 - b321b - t27: wrong arguments - abc - ab - a - a321 - a123 - a122 - b321 - b123 - c123d - 123b - c321d - b322b - b321 - b321b - - - t28: done - ]]) + b321b]]) + end) + + it('fails with wrong arguments', function() + insert(text) + -- This should fail with "E474: Invalid argument". + source([[ + try + sort no + catch + let tmpvar = v:exception + endtry]]) + eq('Vim(sort):E474: Invalid argument', eval('tmpvar')) + expect(text) end) end) |